在 BigQuery 中没有直接支持的安全导航运算符,但可以通过使用 IFNULL 函数和结构化查询语言(SQL)中的 CASE 表达式来模拟此行为。
例如,如果我们想要检索一个嵌套的 JSON 列中的某个属性,可以使用以下查询:
SELECT
IFNULL(json_extract_scalar(json_column, '$.nested.property'), 'default_value')
FROM
project.dataset.table
上述查询中,如果 JSON 中包含嵌套属性,则会返回该属性的值。否则,将返回 "default_value"。
类似地,可以使用 CASE 表达式来模拟安全导航运算符的行为。例如:
SELECT
CASE
WHEN json_extract_scalar(json_column, '$.nested.property') IS NULL THEN 'default_value'
ELSE json_extract_scalar(json_column, '$.nested.property')
END
FROM
project.dataset.table
上述查询中,如果 JSON 中包含嵌套属性,则会返回该属性的值。否则,将返回 "default_value"。
在 BigQuery 中实现安全导航运算符的其他方法可能包括使用用户定义的函数或通过在模型中定义数据类型来处理缺失值。