ホームページ >データベース >mysql チュートリアル >BigQuery で行を列にピボットする方法

BigQuery で行を列にピボットする方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-03 22:16:40278ブラウズ

How to Pivot Rows into Columns in 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: クエリと変換の実行

  • ステップから生成されたクエリを実行します1.
  • 結果をコピーし、次のようにフォーマットします (フォーマットは必要ありません):
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
  • 変換されたファイルを実行しますquery.

考慮事項:

  • ステップ 2 でクエリを手動で構築できる場合は、ステップ 1 をスキップできます。
  • テーブルあたりの列数は 10K という制限があるため、より大きな列の場合はスケーリングを検討してください。データセット。

以上がBigQuery で行を列にピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。