Google BigQuery 上的以下代码抛出索引越界错误。
SELECT
SPLIT(CONCEPT_CKI, "!")[OFFSET(0)] AS Standard_Name
,SPLIT(CONCEPT_CKI, "!")[OFFSET(1)] AS Standard_Code
FROM
(
SELECT "MULTUM!123" AS CONCEPT_CKI
UNION ALL
SELECT "MULTUM234" AS CONCEPT_CKI
)
我们希望拆分在它可以处理的字段上工作 - 并且在它不能处理时简单地为第二个字段生成 NULL 值。 (即,有点类似于 SAFE_CAST 命令在无法进行转换时给出 NULL 的方式。)
我们如何对 Google BigQuery 中的字段进行“安全”SPLIT?
最佳答案
在下面的示例中使用 SAFE_OFFSET
SELECT
SPLIT(CONCEPT_CKI, "!")[OFFSET(0)] AS Standard_Name
,SPLIT(CONCEPT_CKI, "!")[SAFE_OFFSET(1)] AS Standard_Code
FROM
(
SELECT "MULTUM!123" AS CONCEPT_CKI
UNION ALL
SELECT "MULTUM234" AS CONCEPT_CKI
)
有输出
Row Standard_Name Standard_Code
1 MULTUM 123
2 MULTUM234 null
而不是 Array index 1 is out of bounds (overflow)
for original query
关于sql - 如何在 Google BigQuery 中执行 "safe"SPLIT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60877820/