sql - 在 SQL 中的数组内的结构内选择
问题描述
我正在尝试使用新的标准 SQL 在 Google BigQuery 表中的结构数组中查找具有N
标识符计数A
和M
标识符计数的行。B
表中的数据(简化),其中每一行看起来有点像这样:
{
"Session": "abc123",
"Information" [
{
"Identifier": "A",
"Count": 1,
},
{
"Identifier": "B"
"Count": 2,
},
{
"Identifier": "C"
"Count": 3,
}
...
]
}
我一直在努力使用数组中的结构。我有什么办法可以做到吗?
解决方案
以下是 BigQuery 标准 SQL
#standardSQL
SELECT *
FROM `project.dataset.table`
WHERE 2 = (SELECT COUNT(1) FROM UNNEST(information) kv WHERE kv IN (('a', 5), ('b', 10)))
如果应用到虚拟数据,如下例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT 'abc123' session, [STRUCT('a' AS identifier, 1 AS `count`), ('b', 2), ('c', 3)] information UNION ALL
SELECT 'abc456', [('a', 5), ('b', 10), ('c', 20)]
)
SELECT *
FROM `project.dataset.table`
WHERE 2 = (SELECT COUNT(1) FROM UNNEST(information) kv WHERE kv IN (('a', 5), ('b', 10)))
结果是
Row session information.identifier information.count
1 abc456 a 5
b 10
c 20
推荐阅读
- sql-server - 如何工作节点通过 SPARK 中的 SSH 连接 SQL Server
- python - Python 数据转换 If df[column] = "A" then df[column] = 1 - (将 "A" 替换为 1)
- android-studio - 模拟器:警告:setGeometry:无法设置几何
- r - 在 R 中调用 names() 时不要打印任何内容
- c# - 单击卡片的提交按钮后如何恢复瀑布聊天机器人?
- java - openjdk 9 的 InvalidAlgorithmParameterException
- java - 将数组作为参数传递给类
- php - 在 codeigniter 中为订阅计划自动定期付款
- r - 在定义 S3 方法时,我应该显式导入泛型方法吗?
- scala - 像 first()、head()、isEmpty().. 这样的 RDD 操作,它们是否评估整个 RDD?还是只是其中的一部分?