SQL-以规则的分隔符间隔解析字段和数字总和
我请求您帮助解决我目前技能范围之外的问题 我正在使用Google Big Query来存储关于我网站的分析数据,并计算收入,这是一个非常困难的查询 我们有字段%product%,其格式如下:SQL-以规则的分隔符间隔解析字段和数字总和,sql,google-bigquery,adobe-analytics,Sql,Google Bigquery,Adobe Analytics,我请求您帮助解决我目前技能范围之外的问题 我正在使用Google Big Query来存储关于我网站的分析数据,并计算收入,这是一个非常困难的查询 我们有字段%product%,其格式如下: ;%productID%;%productQuantity%;%productRevenue%;; 如果购买了多个产品,则不同的产品数据将用“,”分隔,这可以给出: ;12345678;1;49.99;;,;45678912;1;54.99;; ;45678912;2;59.98;;,;14521452;
;%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查询就可以做到这一点。。。也许用正则表达式?有什么想法吗?
我想用这些信息创建一个视图,以便轻松地将数据拉入PowerBI。但也许我应该直接在PBI中用M来处理
非常感谢
下面的Alex是针对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
我想问一下,对于这种糟糕的数据格式,您是否有其他选择。BigQuery支持数组和记录。即使在基于字符串的格式中,也可以为不同类型的数据使用不同的分隔符。虽然你想做的是可能的,但我强烈推荐一个更合理的数据模型。嗯,这是我们从Adobe Analytics的原始数据源接收到的数据,我们必须适应它。谢谢你的帮助!真棒的米哈伊尔,它的工作,它使我不理解嵌套列的概念,所以我可以适应它的另一个用途。谢谢。