BigQuery:SPLIT()中的错误返回

时间:2017-06-29 15:05:16

标签: sql google-bigquery legacy-sql

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

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

表TabA有超过一百万条记录。我使用https://docs.oracle.com/javase/8/docs/api/java/util/function/Consumer.html分割成多列

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

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

我们正在获得这样的记录,

{{1}}

他是随机发生的。不确定哪里有错误。

  

SELECT COUNT(*)FROM TabA - 返回1.7M记录

  

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

  

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

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

非常感谢任何帮助。在此先感谢!!

1 个答案:

答案 0 :(得分:5)

  

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

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

  
#standardSQL
SELECT 
  ColA,
  SPLIT(ColA, '|')[SAFE_OFFSET(0)] AS part1,
  SPLIT(ColA, '|')[SAFE_OFFSET(1)] AS part2
FROM TabA