首頁 >資料庫 >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

之後:

之後:

解決方案:
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
)

目前的BigQuery缺乏本機旋轉功能。但是,以下方法可以達到相同的結果:

步驟 1:產生查詢結構
  • 步驟 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
  • 運行步驟中產生的查詢1.
複製結果並如下格式格式化(不需要格式化):

    運行轉換後的結果
  • 注意事項:
如果您可以在步驟2 中手動建構查詢,則可以跳過步驟 1。 每個表的列數限制為 10K,因此請考慮擴展更大的資料集。

以上是如何在 BigQuery 中將行轉換為列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn