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
我请求你的帮助解决超出我当前技能的问题...
我正在使用 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