我在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记录
不知道到底发生了什么......是数据问题还是分裂问题?
非常感谢任何帮助。在此先感谢!!
答案 0 :(得分:5)
是数据问题还是分裂问题?
为了帮助排除故障 - 我建议在BigQuery Standard SQL中运行相同的逻辑
#standardSQL
SELECT
ColA,
SPLIT(ColA, '|')[SAFE_OFFSET(0)] AS part1,
SPLIT(ColA, '|')[SAFE_OFFSET(1)] AS part2
FROM TabA