BigQuery でデータをピボットされた構造からピボットされていない構造に変換する方法
BigQuery では、データを変換するという課題が提示されます。ピボットされたテーブルをピボットされていない形式に変換します。これには、データをより表形式の表現に転置することが含まれます。これを実現するには、次の手順を検討してください。
UNPIVOT 演算子の使用 (推奨)
BigQuery では、この変換を簡素化する専用の UNPIVOT 演算子が提供されるようになりました。この演算子を使用すると、回転するピボット列 (Q1、Q2、Q3、Q4 など) とその結果の列 (売上、四半期など) を指定できます。
SQL 構文:
SELECT product, UNPIVOT(value FOR quarter IN (Q1, Q2, Q3, Q4)) AS sales_quarter FROM pivoted_table
ネストされたオブジェクトの使用クエリ
UNPIVOT 演算子の導入前は、BigQuery ユーザーはネストされたクエリを使用してアンピボットを実現できました。
SQL 構文:
SELECT product, (SELECT value FROM UNNEST(SAFE_CAST(STRUCT(NULL AS name, Q1 AS "value") AS STRUCT<name STRING, value STRING>))) AS Q1, (SELECT value FROM UNNEST(SAFE_CAST(STRUCT(NULL AS name, Q2 AS "value") AS STRUCT<name STRING, value STRING>))) AS Q2, (SELECT value FROM UNNEST(SAFE_CAST(STRUCT(NULL AS name, Q3 AS "value") AS STRUCT<name STRING, value STRING>))) AS Q3, (SELECT value FROM UNNEST(SAFE_CAST(STRUCT(NULL AS name, Q4 AS "value") AS STRUCT<name STRING, value STRING>))) AS Q4 FROM pivoted_table
データ例変換
次の例では、ピボットされたテーブル
product | Q1 | Q2 | Q3 | Q4 ------------------------------- Kale | 51 | 23 | 45 | 3 Apple | 77 | 0 | 25 | 2
をピボットされていないテーブル
product | sales | quarter ------------------------------- Kale | 51 | Q1 Kale | 23 | Q2 Kale | 45 | Q3 Kale | 3 | Q4 Apple | 77 | Q1 Apple | 0 | Q2 Apple | 25 | Q3 Apple | 2 | Q4
以上がBigQuery でデータのピボットを解除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。