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中文网其他相关文章!