似乎 SPLIT() 将空值视为根本不存在,这会产生意想不到的结果。
例如:
SELECT
NTH(3, SPLIT(values, ","))
FROM
(SELECT "a,b,,d,e" as values)
Run Code Online (Sandbox Code Playgroud)
返回“d”,当我希望它返回 NULL 时。您可以看到这对于多行逗号分隔的文本会有什么问题。人们会期望以下查询返回 NULL 和“c”,但它不会:
SELECT
NTH(3, SPLIT(values, ","))
FROM
(SELECT "a,b,,d,e" as values),
(SELECT "a,,c,d,e" as values)
Run Code Online (Sandbox Code Playgroud)
相反,它返回“d”和“d”。
这种行为是设计使然,可以改变,还是有更好的方法来做我正在做的事情?
这是设计使然,它并非特定于 SPLIT 函数,而是特定于 REPEATED 字段。BigQuery REPEATED 字段无法存储 NULL(与协议缓冲区中的行为相同),因此 SPLIT 所做的任何操作都无法使 NULL 出现在 REPEATED 字段中。
| 归档时间: |
|
| 查看次数: |
550 次 |
| 最近记录: |