在SQL中的数组中的结构内选择
我试图使用新的标准SQL在Google BigQuery表中的结构数组中查找标识符计数在SQL中的数组中的结构内选择,sql,google-bigquery,Sql,Google Bigquery,我试图使用新的标准SQL在Google BigQuery表中的结构数组中查找标识符计数A和m标识符计数B的行。表中的数据(简化),其中每行看起来有点像: { "Session": "abc123", "Information" [ { "Identifier": "A", "Count": 1, }, { "Identifier": "B" "Count": 2, }, {
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
下面是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