【发布时间】:2020-04-13 02:54:38
【问题描述】:
对于 BigQuery,我们可以使用 UNNEST 提取特殊的重复结构。当您在结构键和值(字符串、整数或双精度之一)中有数据时,这非常有效。但是,有时我有一个带有键(“foo”)的结构,并且通常带有数据 value.string_value 但并非总是如此。当没有 string_value 时,以下内容将不包含该行:
SELECT
event_timestamp,
event_params_custom.value.string_value
FROM
`my_database.events_*` T,
UNNEST(T.event_params) event_params_custom
WHERE
event_name = "some_custom_event"
AND event_params_custom.key = "foo"
是否有可能做类似于“外连接”的事情并包括所有行,即使键“foo”没有值?
【问题讨论】:
-
能否提供样本数据?
-
我还没有想出解决问题的方法,但我找到了解决方法。您可以将查询拆分为单独的部分,然后使用“UNION ALL”组合结果。然后,关键是通过调整每个查询来避免重复,使其仅包含您在另一个查询中捕获的特定键丢失的行: ...AND 'STOP_NO' NOT IN (SELECT key FROM UNNEST(T.event_params ))
标签: google-cloud-platform google-bigquery