0

我正在尝试使用 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 个),输入每个 ID 似乎效率低下。票号也被格式化为字符串。

如果有人对此有解决方案,将不胜感激!

4

1 回答 1

2

下面是 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  
于 2019-05-30T19:51:16.560 回答