JSON_EXTRACT如何在BigQuery中运行?

时间:2016-07-16 18:26:57

标签: google-bigquery

我在从GA中提取一些数据时遇到了一些问题,这些数据包含我们发送的一些事件和自定义维度。

我尝试使用JSON_EXTRACT,我想要的是一个包含所有值的列WHERE customDimension.index = index_number

这是我的代码:

SELECT
  visitId,
  JSON_EXTRACT('index_number', '$.hits.customDimensions') as value
FROM
  FLATTEN(FLATTEN((
    SELECT *
    FROM TABLE_DATE_RANGE([103264765.ga_sessions_], TIMESTAMP("2016-07-14"), DATE_ADD(TIMESTAMP(CURRENT_DATE()),-1,"DAY"))),hits),hits.customDimensions)
WHERE hits.eventInfo.eventAction = "EventName"
ORDER BY value DESC

澄清:

示例index_number将是:' 135' 示例EventName将是:' BookedFlight'

我计划使用相同的方法获取其他嵌套数据,例如设备浏览器,平台等,以便使用visitorId将其与我们自己的数据库数据相关联

谢谢!

1 个答案:

答案 0 :(得分:0)

  

JSON_EXTRACT如何在BigQuery中运行?

BigQuery's JSON functions使您能够通过使用类似JSONPath的表达式在存储的JSON数据中查找值。

但是对于你的例子/用例,我根本不需要它! 请尝试以下

SELECT
   visitId,
   hits.customDimensions.value AS value
FROM
  FLATTEN(FLATTEN((
    SELECT *
    FROM TABLE_DATE_RANGE([103264765.ga_sessions_], TIMESTAMP("2016-07-14"), DATE_ADD(TIMESTAMP(CURRENT_DATE()),-1,"DAY"))),hits),hits.customDimensions)
WHERE hits.eventInfo.eventAction = "BookedFlight"
AND hits.customDimensions.index = 135
ORDER BY value DESC  

在上述简单的情况下,你甚至不需要额外的扁平化,所以下面也可以使用

SELECT
   visitId,
   hits.customDimensions.value AS value
FROM TABLE_DATE_RANGE([103264765.ga_sessions_], TIMESTAMP("2016-07-14"), DATE_ADD(TIMESTAMP(CURRENT_DATE()),-1,"DAY"))
WHERE hits.eventInfo.eventAction = "BookedFlight"
AND hits.customDimensions.index = 135
ORDER BY value DESC