我正在尝试使用SPLIT()函数将字符串数组转换为单独的行。
数据看起来像这样:
id ticket
1 1,2,3,4,5,6,7,8,9...etc.
2 11,12,13,14,15,16,17,18,19...etc.
3 21,22,23,24,25,26,27,28,29...etc.
我希望数据看起来像这样:
id ticket
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2 11
2 12
2 13
2 14
2 15
2 16
...等等。当我使用以下命令时:
SELECT id, SPLIT(ticket) FROM table
,我得到的正是我想要的结果。问题是,我必须将此表与另一个已分区的表连接,并且不能使用旧版SQL。由于每个ID关联有多个票证(最多200张),因此输入每个票证似乎效率低下。票号也被格式化为字符串。
如果有人对此有解决方案,将不胜感激!
答案 0 :(得分:1)
以下BigQuery标准SQL示例
#standardSQL
SELECT id, CAST(ticket AS INT64) ticket
FROM `project.dataset.table`,
UNNEST(SPLIT(ticket)) ticket
您可以使用问题中的示例数据来测试,玩游戏,如下例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 id, '1,2,3,4,5,6,7,8,9' ticket UNION ALL
SELECT 2, '11,12,13,14,15,16,17,18,19' UNION ALL
SELECT 3, '21,22,23,24,25,26,27,28,29'
)
SELECT id, CAST(ticket AS INT64) ticket
FROM `project.dataset.table`,
UNNEST(SPLIT(ticket)) ticket
有结果
Row id ticket
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
6 1 6
7 1 7
8 1 8
9 1 9
10 2 11
11 2 12
12 2 13
13 2 14
14 2 15
15 2 16
16 2 17
17 2 18
18 2 19
19 3 21
20 3 22
21 3 23
22 3 24
23 3 25
24 3 26
25 3 27
26 3 28
27 3 29