2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Databricksランタイム16.1で導入された新たなSQL関数

Posted at

Databricksランタイム16.1がGAになりました。

以下のような新機能が導入されています。

そして、新たに以下の3つのSQL関数が追加されました。

  • dayname: 指定された日付の曜日を3文字英語の略語を返す。
  • uniform: 指定された範囲の一様分布のランダムな値を返す。
  • randstr: 指定された長さのランダムな文字列を返す。

こちらを実際に動かしてみます。その前に最新のランタイムのクラスターを立ち上げておきます。

Screenshot 2025-01-06 at 11.27.49.png

dayname

dayname(expr)

ここでの引数exprは、DATEあるいはTIMESTAMPのエクスプレッションとなります。

SELECT dayname(DATE'2024-11-01' + CAST(offset AS INT)) AS days
    FROM range(8) AS t(offset);

Screenshot 2025-01-06 at 11.29.53.png

なるほど。こちらの例のrange(8) AS t(offset)というエクスプレッションを初めて見たので、アシスタントに/explainしてもらいました。

Screenshot 2025-01-06 at 11.31.00.png

日本語で教えてもらいます。

Screenshot 2025-01-06 at 11.31.57.png

このSQLコードは、offsetという名前の単一のカラムを持つ結果セットを生成し、そのカラムには0から7までの整数値が含まれます。range(8)関数は0から始まり8未満の数値のシーケンスを作成します。AS t(offset)部分は生成されたテーブルにtというエイリアスを割り当て、カラム名をoffsetとします。SELECT *文はこの生成されたテーブルからすべてのカラムを選択します。

なるほど。理解できました。日付データから曜日のラベルをクイックに作成する際に使えそうです。

uniform

uniform (boundaryExpr1, boundaryExpr2 [, seed] )

ここでの引数は以下の通り。

  • boundaryExpr1: SMALLINT, INT, BIGINT、あるいは浮動小数の定数エクスプレッション。範囲の境界(境界値は含む)を指定します。
  • boundaryExpr2: SMALLINT, INT, BIGINT、あるいは浮動小数の定数エクスプレッション。範囲の境界(境界値は含む)を指定します。
  • seed: ランダムな値の生成のシードとして使われるオプションのSMALLINTあるいはINTのエクスプレッション。
SELECT uniform(10, 20) as uni1, uniform(10, 20) as uni2 FROM range(10);

Screenshot 2025-01-06 at 11.36.53.png
Screenshot 2025-01-06 at 11.37.04.png
Screenshot 2025-01-06 at 11.37.12.png

ダミーデータの生成に使えそうです。

randstr

randstr ( length [, seed] )

引数は以下の通り。

  • length: 返却される文字列の長さを指定するSMALLINTあるいはINTの正の数の定数エクスプレッション。
  • seed: ランダム文字列の生成におけるシードとして指定するオプションのSMALLINTあるいはINTのエクスプレッション。
SELECT randstr(10), randstr(10);

Screenshot 2025-01-06 at 11.39.53.png

SELECT randstr(10, 0), randstr(10, 0) FROM VALUES(1), (2), (3);

Screenshot 2025-01-06 at 11.40.17.png

これもダミーデータの生成に使えそうですね。

最後になりますが、これらの関数は執筆時点ではSQLウェアハウスではサポートされていないのでご注意ください。

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?