Sql 如何在大查询中过滤带有某个键的结构
有这样的数据:Sql 如何在大查询中过滤带有某个键的结构,sql,google-bigquery,Sql,Google Bigquery,有这样的数据: Date, struct.key: struct.value 2019, {1: 'nice', 2: 'nice', 3: 'not nice'} 2020, {2: 'nice', 3: 'not nice'} 如何筛选出现key=1的所有结构 预期产出: Date, struct.key: struct.value 2019, {1: 'nice', 2: 'nice', 3: 'not nice'} 通过拥有: WITH `project.dataset.table`
Date, struct.key: struct.value
2019, {1: 'nice', 2: 'nice', 3: 'not nice'}
2020, {2: 'nice', 3: 'not nice'}
如何筛选出现key=1的所有结构
预期产出:
Date, struct.key: struct.value
2019, {1: 'nice', 2: 'nice', 3: 'not nice'}
通过拥有:
WITH `project.dataset.table` AS (
SELECT 2019 AS date, (SELECT ARRAY_AGG(STRUCT(key, value))
FROM (SELECT "1" as key,"nice" as value UNION ALL
SELECT "2" as key,"nice" as value UNION ALL
SELECT "3" as key,"not nice" as value)) AS structcolumn
UNION ALL
SELECT 2020 AS date, (SELECT ARRAY_AGG(STRUCT(key, value))
FROM (SELECT "2" as key,"nice" as value UNION ALL
SELECT "3" as key,"not nice")) AS structcolumn
)
SELECT
date,key,value
FROM `project.dataset.table`,UNNEST(structcolumn) AS STRUCTCOL
WHERE STRUCTCOL.key="1"
输出如下:
希望有帮助。从struct.key(如“%1:%”)所在的表中选择*-但数据模型很糟糕。
struct
的数据类型是什么?数据类型是{string:string,…},但我正在寻找通用解决方案。输入数据和预期结果的示例将帮助我们帮助您!如果您已经有疑问的输入数据示例(您所能做的最好的示例)至少显示了基于该示例的预期输出。我终于在这里找到了一些有效的方法:。所以这可能是一个复制品。