如何在 bigquery 中旋转我的 sql 表?

Posted

技术标签:

【中文标题】如何在 bigquery 中旋转我的 sql 表?【英文标题】:how can i pivot my sql table in bigquery? 【发布时间】:2020-08-10 02:50:37 【问题描述】:

我正在尝试在 bigquery 中对表进行数据透视。 我有一个来自这个查询的表

SELECT category, salesRank, productDetail, productId FROM productTable;

但我想做这样的。

如何进行查询以显示这样的表格?

【问题讨论】:

因为 BigQuery 没有 PIVOT() 函数。现在,您可以使用 EXECUTE IMMEDIATE(又名动态 SQL)来形成具有灵活列的查询。见:cloud.google.com/bigquery/docs/reference/standard-sql/… 【参考方案1】:

你可以很容易地用你需要的东西构造一个数组:

select sales_rank,
       array_agg(struct(t.category, t.salesrank, t.productdetail, t.productid) order by min(t.productid) as products
from t
group by sales_rank;

您可以使用条件聚合进行透视:

select sales_rank,
       max(case when category = 'Bag' then salesrank end) as bag_salesrank,
       max(case when category = 'Bag' then productdetail end) as bag_productdetail,
       max(case when category = 'Bag' then productid end) as bag_productid,
       max(case when category = 'Wallet' then salesrank end) as wallet_salesrank,
       max(case when category = 'Wallet' then productdetail end) as wallet_productdetail,
       max(case when category = 'Wallet' then productid end) as wallet_productid,
       . . .
from t
group by sales_rank;

【讨论】:

非常感谢!它并不像我想象的那样完美,但可以帮助我找到解决方案。

以上是关于如何在 bigquery 中旋转我的 sql 表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BigQuery 标准 SQL 中旋转多个列

如何在 BigQuery 标准 SQL 中取消嵌套多个数组

如何在 BigQuery 中透视表

如何使用 Bigquery 连接 GCP SQL 实例?

BigQuery - 加入和旋转大型表

如何通过 Datalab 查询 BigQuery 视图?