hive内で列を行に変換する方法は何ですか?
Hiveで、列を行に変換するためにUNION ALLとLATERAL VIEWを使用することができます。
- UNION ALLを使用すると、複数の列を1つの列に結合でき、その後、LATERAL VIEW explode()を使用して結合後の列を行に変換することができます。
コード例:
SELECT id, value
FROM (
SELECT id, col1 AS value FROM table
UNION ALL
SELECT id, col2 AS value FROM table
UNION ALL
SELECT id, col3 AS value FROM table
) subquery
- LATERAL VIEWを使用すると、explode()を使用して配列またはMAPタイプの列を複数の行に分割できます。
サンプルコード:
SELECT id, value
FROM table
LATERAL VIEW explode(array_column) array_table AS value
array_columnは、配列型のカラムであり、array_tableはスプリットされたテーブルの別名、valueはスプリットされたカラムの名前です。
また、Hiveは、組み込み関数を使用して列を行に変換する操作をサポートしています。たとえば、split()関数を使用して、指定された区切り文字で文字列型の列を複数の行に分割することができます。
サンプルコード:
SELECT id, value
FROM table
LATERAL VIEW explode(split(string_column, ',')) split_table AS value
string_columnは文字列型の列であり、split_tableは分割された表の別名であり、valueは分割された列の名前です。