BigQuery 有安全的导航运算符吗?

问题描述 投票:0回答:1

BigQuery 是否有安全导航运算符,即其字段导航运算符的空安全变体?

理想情况下,我正在寻找类似于 Swift/TypeScript 中的

?.
、Ruby 中的
&.
等的运算符,但我可以调用的函数也足够了。

现在我的查询如下所示:

SELECT a.b.c.d.e
FROM myTable AS a
WHERE
    a.b IS NOT NULL
  && a.b.c IS NOT NULL
  && a.b.c.d IS NOT NULL
  && a.b.c.d.e = "my desired value"

编辑:这实际上不起作用。

在 [12:34] a 中未找到名称 b

我希望它可以是这样的:

SELECT a.b.c.d.e
FROM myTable AS a
WHERE a?.b?.c?.d?.e = "my desired value"
google-bigquery null operators safe-navigation-operator
1个回答
0
投票

Afaik,bigquery 中没有针对 STRUCT 类型的安全导航运算符。

我能想到的是将嵌套的 STRUCT 类型转换为 JSON 类型,并利用可以安全导航的 json 路径。

WITH myTable AS (
  SELECT STRUCT(STRUCT(STRUCT('my_desired_value' AS e) AS d) AS c) AS b
)
SELECT TO_JSON(b).c.d.e, --
       TO_JSON(b).f.d.e, -- non-existing path
       -- b.f.d.e  --> error - Field name f does not exist ...
  FROM myTable AS a;

要检查结构体类型的字段路径,可以使用 INFORMATION_SCHEMA.COLUMN_FIELD_PATHS

SELECT * 
  FROM `your-project.your_dataset.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS`
 WHERE table_name = 'myTable';

© www.soinside.com 2019 - 2024. All rights reserved.