BigQuery:SPLIT() 返回错误
Posted
技术标签:
【中文标题】BigQuery:SPLIT() 返回错误【英文标题】:BigQuery: error in SPLIT() returns 【发布时间】:2017-06-29 15:05:15 【问题描述】:我在 BigQuery 中有一个表 TabA,它有一列 ColA,列 ColA 具有以下结构
1038627|21514184
表 TabA 有超过一百万条记录。我用this拆分成多列
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 万条记录
选择 ColA,FIRST(SPLIT(ColA, '|')) 第 1 部分, NTH(2, SPLIT(ColA, '|')) part2 FROM TabA - 返回 170 万条错误拆分的记录
SELECT FIRST(SPLIT(ColA, '|')) 第 1 部分, NTH(2, SPLIT(ColA, '|')) part2 FROM TabA - 仅返回正确拆分的 1.4L 记录
不知道到底发生了什么……是数据的问题还是拆分的问题??
任何帮助将不胜感激。提前致谢!!
【问题讨论】:
您必须使用旧版 SQL 吗?我强烈建议您使用Standard Version,因为在那里解决这个问题非常简单。 【参考方案1】:是数据的问题还是拆分的问题??
为了帮助进行故障排除 - 我建议在 BigQuery 标准 SQL 中运行相同的逻辑
#standardSQL
SELECT
ColA,
SPLIT(ColA, '|')[SAFE_OFFSET(0)] AS part1,
SPLIT(ColA, '|')[SAFE_OFFSET(1)] AS part2
FROM TabA
【讨论】:
标准 SQL 语法引发错误。我是标准 SQL 的新手...请您帮忙 非常感谢@mikhail-berlyant 的帮助。我用谷歌搜索了几下,才知道我使用的语法是错误的。后来我更正了。它现在正在工作..但问题是我只得到了 190 万条记录......其中记录的总数是 1799 万条记录......知道为什么即使在标准 SQL 中也会发生这种情况......拆分工作正常...但记录数比实际记录少得多。以上是关于BigQuery:SPLIT() 返回错误的主要内容,如果未能解决你的问题,请参考以下文章