Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在大查询中过滤带有某个键的结构_Sql_Google Bigquery - Fatal编程技术网

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,…},但我正在寻找通用解决方案。输入数据和预期结果的示例将帮助我们帮助您!如果您已经有疑问的输入数据示例(您所能做的最好的示例)至少显示了基于该示例的预期输出。我终于在这里找到了一些有效的方法:。所以这可能是一个复制品。