1

我在 BigQuery 中有一个表 TabA,它有一列 ColA,列 ColA 具有以下结构

1038627|21514184

并且表 TabA 有超过一百万条记录。我用分成多列

SELECT ColA,FIRST(SPLIT(ColA, '/')) part1,
       NTH(2, SPLIT(ColA, '/')) part2
FROM TabA

但由于某种原因,在某些行之后,拆分似乎无法正常工作。

我们得到这样的记录,

     ColA            part1   part2
1038627|21507470    1038627 21507470     
1038627|21534857    1038627 21507470     
1038627|21546455    1038627 21507470     
1038627|21577167    1038627 21507470

这是他随机发生的。不知道哪里有错误。

SELECT COUNT(*) FROM TabA - 返回 170 万条记录


SELECT ColA,FIRST(SPLIT(ColA, '|')) part1, NTH(2, SPLIT(ColA, '|')) part2 FROM TabA - 返回 170 万条错误拆分的记录


SELECT FIRST(SPLIT(ColA, '|')) part1, NTH(2, SPLIT(ColA, '|')) part2 FROM TabA - 仅返回正确拆分的 1.4L 记录

不知道到底发生了什么……是数据问题还是拆分问题?

任何帮助将不胜感激。提前致谢!!

4

1 回答 1

5

是数据问题还是拆分问题?

为了帮助进行故障排除 - 我建议在 BigQuery 标准 SQL 中运行相同的逻辑

#standardSQL
SELECT 
  ColA,
  SPLIT(ColA, '|')[SAFE_OFFSET(0)] AS part1,
  SPLIT(ColA, '|')[SAFE_OFFSET(1)] AS part2
FROM TabA
于 2017-06-29T15:38:24.650 回答