在SQL中的数组中的结构内选择

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

我试图使用新的标准SQL在Google BigQuery表中的结构数组中查找标识符计数
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