Use Lateral Join for column-to-row conversion
列から行への変換は、ETL 処理で一般的な操作です。Lateral は、行を内部サブクエリやテーブル関数と関連付けることができる特別な Join キーワードです。Lateral を unnest() と組み合わせて使用することで、1 行を複数の行に展開できます。詳細については、unnest を参照してください。
制限事項
- 現在、Lateral Join は列から行への変換を実現するために unnest() と一緒にのみ使用されます。他のテーブル関数や UDTF は後でサポートされる予定です。
- 現在、Lateral Join はサブクエリをサポートしていません。
Lateral Join の使用
構文:
from table_reference join [lateral] table_reference;
例:
SELECT student, score
FROM tests
CROSS JOIN LATERAL UNNEST(scores) AS t (score);
SELECT student, score
FROM tests, UNNEST(scores) AS t (score);
ここでの2番目の構文は、最初の構文の短縮版であり、Lateral キーワードを省略して UNNEST キーワードを使用できます。UNNEST キーワードは、配列を複数の行に変換するテーブル関数です。Lateral Join と一緒に使用することで、一般的な行の展開ロジックを実装できます。
NOTE
複数の列に対して unnest を実行する場合、各列にエイリアスを指定する必要があります。例えば、
select v1, t1.unnest as v2, t2.unnest as v3 from lateral_test, unnest(v2) t1, unnest(v3) t2;のようにします。
StarRocks は、BITMAP、STRING、ARRAY、および Column 間の型変換をサポートしています。

使用例
unnest() と一緒に使用することで、次のような列から行への変換機能を実現できます。