Sql 如何在Google BigQuery中透视数据集?
我有一个具有此模式的海量数据集:Sql 如何在Google BigQuery中透视数据集?,sql,pivot,google-bigquery,Sql,Pivot,Google Bigquery,我有一个具有此模式的海量数据集: Customer INTEGER CategoryID INTEGER CategoryName STRING ProjectStage INTEGER NextStepID INTEGER NextStepName STRING NextStepIsAnchor BOOLEAN 我注意得到的结果集是,每个客户只在一行,他/她的下一步将在如下列中: 客户|类别ID |类别名称|项目阶段|下一步1ID |下一步1Name |下一
Customer INTEGER
CategoryID INTEGER
CategoryName STRING
ProjectStage INTEGER
NextStepID INTEGER
NextStepName STRING
NextStepIsAnchor BOOLEAN
我注意得到的结果集是,每个客户只在一行,他/她的下一步将在如下列中:
客户|类别ID |类别名称|项目阶段|下一步1ID |下一步1Name |下一步2ID |下一步2Name |。。。等等
我尝试使用BigQuery的第n个函数,但它仅适用于第一次出现的下一个步骤:
SELECT
customer,
nth(1, NextStepID)
FROM [2015_05.customers_wunique_nextsteps]
group by customer
但当我尝试添加更多列时:
SELECT
customer,
nth(1, NextStepID),
nth(2, NextStepID)
FROM [2015_05.customers_wunique_nextsteps]
group by customer
我得到这个错误:
错误:函数“n(2,[NextStepID])不能在分布式应用程序中使用
查询时,只能为以下查询正确计算此函数:
在单个节点上运行
有什么想法吗?
现在我用Excel和小型VBA脚本“透视”结果,但当数据集变大时,计算时间超过了所有限制
提前感谢!:) 函数n适用于重复字段,在重复字段中选择第n个重复元素(错误消息可以改进)。所以第一步是用NextStepID构建重复字段,可以使用嵌套聚合函数完成。然后,您可以使用N作为作用域聚合函数:
SELECT
Customer,
NTH(1, NextStepID) WITHIN RECORD AS NextStepID1,
NTH(2, NextStepID) WITHIN RECORD AS NextStepID2,
NTH(3, NextStepID) WITHIN RECORD AS NextStepID3
FROM (
SELECT Customer, NEST(NextStepID) AS NextStepID
FROM [2015_05.customers_wunique_nextsteps] GROUP BY Customer)
它起作用了!太棒了,你帮我省了几个小时的工作!非常感谢!