Databricksランタイム16.1がGAになりました。
以下のような新機能が導入されています。
そして、新たに以下の3つのSQL関数が追加されました。
こちらを実際に動かしてみます。その前に最新のランタイムのクラスターを立ち上げておきます。
dayname
dayname(expr)
ここでの引数exprは、DATEあるいはTIMESTAMPのエクスプレッションとなります。
SELECT dayname(DATE'2024-11-01' + CAST(offset AS INT)) AS days
FROM range(8) AS t(offset);
なるほど。こちらの例のrange(8) AS t(offset)というエクスプレッションを初めて見たので、アシスタントに/explainしてもらいました。
日本語で教えてもらいます。
この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);
ダミーデータの生成に使えそうです。
randstr
randstr ( length [, seed] )
引数は以下の通り。
-
length: 返却される文字列の長さを指定するSMALLINTあるいはINTの正の数の定数エクスプレッション。 -
seed: ランダム文字列の生成におけるシードとして指定するオプションのSMALLINTあるいはINTのエクスプレッション。
SELECT randstr(10), randstr(10);
SELECT randstr(10, 0), randstr(10, 0) FROM VALUES(1), (2), (3);
これもダミーデータの生成に使えそうですね。
最後になりますが、これらの関数は執筆時点ではSQLウェアハウスではサポートされていないのでご注意ください。








