ホームページ >データベース >mysql チュートリアル >BigQuery で行を列にピボットする方法
BigQuery でのピボット変換: 行を列に転置する
問題:
目的はBigQuery でデータを行から列に変換します。キーは列名になり、値は次のようになります。対応する列の値。
例:
前:
Key | Value |
---|---|
channel_title | Mahendra Guru |
youtube_id | ugEGMG4-MdA |
examId | 72975611-4a5e-11e5 |
channel_id | UCiDKcjKocimAO1tV |
postId | 1189e340-b08f |
後:
channel_title | youtube_id | channel_id | examId | postId |
---|---|---|---|---|
Mahendra Guru | ugEGMG4-MdA | UCiDKcjKocimAO1tV | 72975611-4a5e-11e5 | 1189e340-b08f |
解決策:
BigQuery には現在ネイティブがありませんピボット機能。ただし、次のアプローチでも同じ結果が得られます:
ステップ 1: クエリ構造の生成
SELECT 'SELECT id, ' + GROUP_CONCAT_UNQUOTED( 'MAX(IF(key = "' + key + '", value, NULL)) as [' + key + ']' ) + ' FROM yourTable GROUP BY id ORDER BY id' FROM ( SELECT key FROM yourTable GROUP BY key ORDER BY key )
ステップ 2: クエリと変換の実行
SELECT id, MAX(IF(key = "channel_id", value, NULL)) AS [channel_id], MAX(IF(key = "channel_title", value, NULL)) AS [channel_title], MAX(IF(key = "examId", value, NULL)) AS [examId], MAX(IF(key = "postId", value, NULL)) AS [postId], MAX(IF(key = "youtube_id", value, NULL)) AS [youtube_id] FROM yourTable GROUP BY id ORDER BY id
考慮事項:
以上がBigQuery で行を列にピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。