現時点では、BigQueryでこれを行うための優れた方法はありませんが、以下のアイデアに従って行うことができます
ステップ1
クエリの下で実行
SELECT 'SELECT [group], ' +
GROUP_CONCAT_UNQUOTED(
'SUM(IF([date] = "' + [date] + '", value, NULL)) as [d_' + REPLACE([date], '/', '_') + ']'
)
+ ' FROM YourTable GROUP BY [group] ORDER BY [group]'
FROM (
SELECT [date] FROM YourTable GROUP BY [date] ORDER BY [date]
)
その結果、以下のような文字列が得られます(読みやすくするために以下の形式になっています)
SELECT
[group],
SUM(IF([date] = "date1", value, NULL)) AS [d_date1],
SUM(IF([date] = "date2", value, NULL)) AS [d_date2]
FROM YourTable
GROUP BY [group]
ORDER BY [group]
ステップ2
上記の構成されたクエリを実行するだけです
結果は以下のようになります
group d_date1 d_date2
group1 15 30
注1 :ステップ1は、手作業が多すぎる場合にピボットするグループが多い場合に役立ちます。この場合-ステップ1は、クエリの生成に役立ちます
注2 :これらの手順は、選択した任意のクライアントに簡単に実装できます。または、BigQueryWebUIで実行することもできます
ピボットの詳細については、他の投稿をご覧ください。
BigQueryでピボットをスケーリングする方法
注意–テーブルあたりの列数は10Kに制限されているため、10Kの組織に制限されています。
以下に簡略化された例を示します(上記の例が複雑すぎる/冗長すぎる場合):
BigQuery / SQLで大量のデータを含む列に行を転置するにはどうすればよいですか?
Google BigQueryで数千のカテゴリのダミー変数列を作成するにはどうすればよいですか?
BigQueryの繰り返しフィールドをピボット