sql - 如何在大查询中使用某些键过滤结构
问题描述
有这样的数据:
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"
输出如下:
希望能帮助到你。
推荐阅读
- angularjs - 从套接字接收的 Websockets/AngularJS 数据未绑定到 $scope 变量
- java - 如何检查数字是否超出整数类型的范围?
- javascript - 选择新选项时更新列表 - html/js
- c++ - C++ 二进制流
- google-cloud-platform - 谷歌云平台自然语言 API v1beta2
- ruby - 在 Ruby 中乱序
- javascript - 添加
- 至
- 有限制(纯JS)
- 至
- vba - 选择笔记区域时PowerPoint VBA粘贴png
- python - 测试时访问 Flask 配置时出错
- javascript - 如何仅从组复选框中的另一个复选框中检查所有其他复选框