SQL - 以规则的分隔符间隔解析字段和 SUM 数字

SQL - Parse a field and SUM numbers at regular delimiter intervals

我请求你的帮助解决超出我当前技能的问题...

我正在使用 Google Big Query 来存储关于我的网站的分析数据,并计算收入我有一个很难构建的查询。

我们有字段 %product%,其格式如下:

;%productID%;%productQuantity%;%productRevenue%;;

如果购买了不止一种产品,不同的产品数据将以“,”分隔,可以这样:

;12345678;1;49.99;;,;45678912;1;54.99;;
;45678912;2;59.98;;,;14521452;2;139.98;;,;12345678;2;19.98;;
;14521452;1;54.99;;

计算收入的唯一方法是对一行中所有不同的 %productRevenue% 求和并将其存储到列中。

我不知道如何仅使用 SQL 查询...也许使用 RegEx?任何的想法 ? 我想创建一个包含该信息的视图,以便轻松地将数据提取到 PowerBI 中。但也许我应该直接在 PBI 中用 M 处理它?

非常感谢,

亚历克斯

以下适用于 BigQuery 标准 SQL

#standardSQL
SELECT 
  SPLIT(i, ';')[OFFSET(1)] productID,
  SUM(CAST(SPLIT(i, ';')[OFFSET(2)] AS INT64)) productQuantity,
  SUM(CAST(SPLIT(i, ';')[OFFSET(3)] AS FLOAT64)) productRevenue
FROM `project.dataset.table`,
UNNEST(SPLIT(product)) i
GROUP BY productID   

如果应用于您问题中的示例数据 - 输出为

Row productID   productQuantity productRevenue   
1   12345678    3               69.97    
2   45678912    3               114.97   
3   14521452    3               194.97