【发布时间】:2017-04-21 05:55:56
【问题描述】:
我的数据目前如下所示:
我想要的输出是这样的:
期望的成就是:
- 在 OrderDescription 中提取 .csv 字符串中的值。
- 将它们呈现在一个规范化的表中,并分配 OrderDescriptionPosition,即原始数据中 .csv 字符串中呈现的顺序。
我通过结合使用 split 函数和 row_number 来做到这一点。这似乎在逐个客户的基础上工作,但在运行多个客户时似乎返回不可靠的“洗牌”row_numbers,即不正确的订单。
select
CustomerID,
OrderID,
OrderDescriptionItem,
row_number() over(partition by CustomerID, OrderID) as OrderDescriptionPosition
from
(
select
CustomerID,
OrderID,
split(OrderDescription, ',') as OrderDescriptionItem
from
InitialTable
) as e
,unnest(OrderDescriptionItem) as OrderDescriptionItem
有没有人有更强大的解决方案?欢迎使用 UDF 和 javascript 的任何建议。
【问题讨论】:
标签: google-bigquery