【发布时间】:2020-05-13 18:49:02
【问题描述】:
我在处理一个 UNNEST 查询时遇到问题。下面是一个查询示例,我当前得到的结果以及我希望从中得到的结果。
一点上下文,我目前正在上传的内容是将ID's 与A 隔开,而不是, 将其强制为字符串而不是数字,因为其中有多个ID同一个单元格。 Price 也被 , 隔开。正在上传的数据示例:
Name | Date | Item_ID | Price
John | 4/17/2020 | 123A456A678 | 19.99,21.99,30.00
Joe | 4/17/2020 | 555A777A888 | 8.99,10.00,15.99
Jake | 4/18/2020 | 444A333 | 15.99,9.00
John | 4/18/2020 | 432 | 75.99
Megan | 4/18/2020 | 12A890A23A99| 5.99,6.99,9.99,10.00
这是尝试 UNNEST 之前表中数据的示例。下面是当前 UNNEST 查询的示例以及输出示例。
With data AS(
SELECT
Name,
Date,
SPLIT(Item_ID, 'A') AS Item_ID_Split,
SPLIT(Price, ',') AS Price_Split
FROM
Example.Table
SELECT
Name,
Date,
Item_ID_Split,
Price_Split
FROM data,
UNNEST(Item_ID_Split) Item_ID_Split WITH OFFSET pos1
UNNEST(Price_Split) Price_Split WITH OFFSET pos2
当前输出如下所示:
Name | Date | Item_ID_Split | Price_Split
John | 4/17/2020 | 123 | 19.99
John | 4/17/2020 | 456 | 19.99
John | 4/17/2020 | 678 | 19.99
John | 4/17/2020 | 123 | 21.99
John | 4/17/2020 | 456 | 21.99
John | 4/17/2020 | 678 | 21.99
John | 4/17/2020 | 123 | 30.00
John | 4/17/2020 | 456 | 30.00
John | 4/17/2020 | 678 | 30.00
Joe | 4/17/2020 | 555 | 8.99
Joe | 4/17/2020 | 777 | 8.99
Joe | 4/17/2020 | 888 | 8.99
Joe | 4/17/2020 | 555 | 10.00
Joe | 4/17/2020 | 777 | 10.00
Joe | 4/17/2020 | 888 | 10.00
Joe | 4/17/2020 | 555 | 15.99
Joe | 4/17/2020 | 777 | 15.99
Joe | 4/17/2020 | 888 | 15.99
Jake | 4/18/2020 | 444 | 15.99
Jake | 4/18/2020 | 333 | 15.99
Jake | 4/18/2020 | 444 | 9.00
Jake | 4/18/2020 | 333 | 9.00
John | 4/18/2020 | 432 | 75.99
Megan | 4/18/2020 | 12 | 5.99
Megan | 4/18/2020 | 890 | 5.99
Megan | 4/18/2020 | 23 | 5.99
Megan | 4/18/2020 | 99 | 5.99
Megan | 4/18/2020 | 12 | 6.99
Megan | 4/18/2020 | 890 | 6.99
Megan | 4/18/2020 | 23 | 6.99
Megan | 4/18/2020 | 99 | 6.99
Megan | 4/18/2020 | 12 | 9.99
Megan | 4/18/2020 | 890 | 9.99
Megan | 4/18/2020 | 23 | 9.99
Megan | 4/18/2020 | 99 | 9.99
Megan | 4/18/2020 | 12 | 10.00
Megan | 4/18/2020 | 890 | 10.00
Megan | 4/18/2020 | 23 | 10.00
Megan | 4/18/2020 | 99 | 10.00
这是上面查询的当前输出。如您所见,有重复的 Item_IDs/Prices,我想要的结果如下:
Name | Date | Item_ID_Split | Price_Split
John | 4/17/2020 | 123 | 19.99
John | 4/17/2020 | 456 | 21.99
John | 4/17/2020 | 678 | 30.00
Joe | 4/17/2020 | 555 | 8.99
Joe | 4/17/2020 | 777 | 10.00
Joe | 4/17/2020 | 888 | 15.99
Jake | 4/18/2020 | 444 | 15.99
Jake | 4/18/2020 | 333 | 9.00
John | 4/18/2020 | 432 | 75.99
Megan | 4/18/2020 | 12 | 5.99
Megan | 4/18/2020 | 890 | 6.99
Megan | 4/18/2020 | 23 | 9.99
Megan | 4/18/2020 | 99 | 10.00
这是我正在寻找在Item_ID_Split 和Price_Split 之间完全没有重复的结果。我试图将SPLIT 函数放在UNNEST 中,但我得到了相同的输出。我不完全确定如何做到这一点,所以任何帮助将不胜感激!
提前谢谢你!
【问题讨论】:
标签: sql google-bigquery