BigQuery 中使用 PIVOT 函数进行查询自定义
BigQuery 中最近引入的 PIVOT 函数可以方便地进行数据重塑,但有时我们可能不知道预先指定特定的列值。本文解决了尝试动态透视数据时面临的常见挑战。
静态 PIVOT 查询问题
当我们有预定义的列值时,我们可以使用简单的 PIVOT 查询像这样:
SELECT * FROM (SELECT * FROM Produce) PIVOT(SUM(sales) FOR quarter IN ('Q1', 'Q2', 'Q3', 'Q4'))
动态 PIVOT 查询解决方案
但是,在现实场景中,我们通常没有预先可用的列值。为了解决这个问题,我们可以使用以下查询动态构建 PIVOT 列:
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) );
通过动态生成 PIVOT 列,我们可以查询和重塑数据,而不管已知的列值如何。事实证明,这种方法在处理大型或不断变化的数据集时特别有用。
以上是如何在 BigQuery 中动态自定义 PIVOT 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!