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)

它起作用了!太棒了,你帮我省了几个小时的工作!非常感谢!