使用 Big Query,如何在一条记录中查询多个对象?

Using Big Query, how can I query within a record for multiple objects?

下面是我正在使用的结构。这是来自 firebase 的 Google 分析事件。

我需要 AND 遍历参数数组并且 return 只有一个参数值具有 'eventData' 的键。同时,我需要通过在同一参数数组中找到的其他两个对象(具有 'peripheral' 和 'eventType' 的键值)来限制查询。

我正在使用 Legacy SQL 但愿意使用其他软件。我查看并使用了 FLATTEN,但最终似乎并没有给我想要的东西。 查询示例可能更有意义。

    SELECT event_dim.params.value.int_value -- this needs to come from the eventData object
    FROM 
   [table]
    where event_dim.name = 'EPILOG_BAT'
    AND event_dim.timestamp_micros > 1529423373498009
    -- AND event_dim.params contains (key='peripheral', string_value = 'CA5D6D4C-9B4C-9BB1-03CF-5A8BCD7651FE')
    -- AND event_dim.params contains (key='eventType', string_value = 'V')
    order by event_dim.timestamp_micros ,
    event_dim.params.key

我希望得到的行是 4105

数据:

 "event_dim": [
  {{
    "date": "20180620",
    "name": "EPILOG_BAT",
    "params": [

      {
        "key": "eventData",
        "value": {
          "string_value": null,
          "int_value": "4105",
          "float_value": null,
          "double_value": null
        }
      },
      {
        "key": "peripheral",
        "value": {
          "string_value": "CA5D6D4C-9B4C-9BB1-03CF-5A8BCD7651FE",
          "int_value": null,
          "float_value": null,
          "double_value": null
        }
      },
      {
        "key": "eventTime",
        "value": {
          "string_value": null,
          "int_value": "1529499380000",
          "float_value": null,
          "double_value": null
        }
      },
      {
        "key": "eventType",
        "value": {
          "string_value": "V",
          "int_value": null,
          "float_value": null,
          "double_value": null
        }
      },
      {
        "key": "firmwareVersion",
        "value": {
          "string_value": "0.8.6\u0000\u0000\u0000\u0000\u0000\u0000\u0000",
          "int_value": null,
          "float_value": null,
          "double_value": null
        }
      }
    ],
    "timestamp_micros": "1529478561132285",
    "previous_timestamp_micros": "1529478560856003",
    "value_in_usd": null
  },}

可能是这样的(请原谅我的格式):

#standardSql
SELECT
(SELECT params.value.int_value FROM event.params WHERE params.key = 
'eventData') AS id
FROM `data_source`, 
UNNEST(event_dim) AS event,
UNNEST(event.params) AS params
WHERE event.name = 'EPILOG_BAT'
AND event_dim.timestamp_micros > 1529423373498009
AND (SELECT params.value.string_value FROM event.params WHERE params.key = 
'peripheral') = 'CA5D6D4C-9B4C-9BB1-03CF-5A8BCD7651FE'
AND (SELECT params.value.string_value FROM event.params WHERE params.key = 
'eventType') = 'V'