首頁 >資料庫 >mysql教程 >如何在 BigQuery 中將行轉置為列?

如何在 BigQuery 中將行轉置為列?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-05 18:33:43486瀏覽

How to Transpose Rows into Columns in BigQuery?

在BigQuery 中將行轉置為列:透視實作

將行轉置為列(也稱為透視),讓您將鍵值對轉換為新表其中鍵成為列名稱,值放置在對應的儲存格中。雖然 BigQuery 本身不支援旋轉函數,但您仍然可以使用簡單的方法來實現此目的。

輸入表結構

首先,請確保您的輸入表具有下列:

  • Key:指定每個類別的列row.
  • Value:與鍵對應的值。

此外,您將需要一個欄位來將應合併為單一行的行分組輸出中的行。

第 1 步:將輸入資料轉換為轉置查詢字串

中第 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

產生的表將具有以下結構:

id channel_id channel_title examId postId youtube_id
1 UCiDKcjKocimAO1tV Mahendra Guru 72975611-4a5e-11e5 1189e340-b08f ugEGMG4-MdA
2 UCODeKM_D6JLf8jJt Ab Live 72975611-4a5e-11e5 0c3e6590-afeb 3TNbtTwLY0U

注意

如果您的表有一個很大的列數,您可以透過手動建立轉置查詢來跳過步驟1。然而,第 1 步提供了一種快速且方便的方法來動態產生查詢。

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

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