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ウェアハウスではサポートされていないのでご注意ください。