我在从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将其与我们自己的数据库数据相关联
谢谢!
答案 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