如何在 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 表?的主要内容,如果未能解决你的问题,请参考以下文章