3.6.8.3. ARRAYTABLE
ARRAYTABLE 関数は、表形式出力を生成する配列の入力を処理します。関数自体はプロジェクトの列を定義します。ARRAYTABLE 関数は暗黙的にネストされたテーブルであり、FROM 句内で使用できます。
用途
ARRAYTABLE([ROW|ROWS] expression COLUMNS <COLUMN>, ...) AS name COLUMN := name datatype
ARRAYTABLE([ROW|ROWS] expression COLUMNS <COLUMN>, ...) AS name
COLUMN := name datatype
パラメーター
- expression
- 処理する配列。java.sql.Array または java 配列の値である必要があります。
- ROW|ROWS
- ROW(デフォルト)が指定されている場合、指定のアレイから 1 行のみが生成されます(通常は 1 つの単独配列)。ROWS が指定されている場合は、複数の行が生成されます。マルチディメンションアレイが予想され、外部アレイの null 以外の要素ごとに 1 行が生成されます。
式が null の場合、行は生成されません。
構文ルール
- 列名に重複を含めることはできません。
アレイテーブルの例
- ネストされたテーブルとして以下を実行します。
select x.* from (call source.invokeMDX('some query')) r, arraytable(r.tuple COLUMNS first string, second bigdecimal) x
select x.* from (call source.invokeMDX('some query')) r, arraytable(r.tuple COLUMNS first string, second bigdecimal) x
ARRAYTABLE は、ネストされたテーブルで array_get
関数を使用するためのショートカットです。
たとえば、以下の ARRAYTABLE 関数は以下のようになります。
ARRAYTABLE(val COLUMNS col1 string, col2 integer) AS X
ARRAYTABLE(val COLUMNS col1 string, col2 integer) AS X
array_get
関数を使用する以下のステートメントと同じです。
TABLE(SELECT cast(array_get(val, 1) AS string) AS col1, cast(array_get(val, 2) AS integer) AS col2) AS X
TABLE(SELECT cast(array_get(val, 1) AS string) AS col1, cast(array_get(val, 2) AS integer) AS col2) AS X