BigQuery 中的PIVOT 函數:處理動態季度值
BigQuery 最近推出的PIVOT 函數提供了一種將資料轉換為表格格式的便捷方法,在指定列上旋轉行。然而,在現實場景中,我們經常遇到預先未知資料透視列值(例如四分之一)的情況。
為了解決這個挑戰,讓我們考慮以下查詢:
SELECT * FROM (SELECT * FROM Produce) PIVOT(SUM(sales) FOR quarter in (select distinct quarter from Produce))
雖然此查詢嘗試動態地在四分之一列上旋轉Produce 表,但它無法產生所需的結果。缺少的要素是需要動態建構 PIVOT 子句。
解決方案在於使用 SQL 的立即執行函數來執行動態產生的查詢。以下是改進的查詢:
execute immediate ( select '''select * from (select * from `project.dataset.Produce`) pivot(sum(sales) for quarter in ("''' || string_agg(quarter, '", "') || '''")) ''' from (select distinct quarter from `project.dataset.Produce` order by quarter) );
此查詢執行以下步驟:
透過利用 SQL 的靈活性,我們可以克服靜態資料透視列的限制並無縫處理動態值。
以上是如何使用 PIVOT 函數在 BigQuery 中動態透視資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!