【问题标题】:How does JSON_EXTRACT work in BigQuery?JSON_EXTRACT 如何在 BigQuery 中工作?
【发布时间】:2016-07-16 18:26:56
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    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  
    

    【讨论】:

    • 谢谢米哈伊尔!这正是我迄今为止一直在使用的。这种方法的问题是我的一些事件带有多个我有兴趣查看的参数。我尝试加入一堆查询不同 customDimension 索引的子查询,但是一旦我达到三个,一切都开始变得非常缓慢。我想学习使用 JSON 函数通过嵌套查询查询值,以便访问存储在 JSON 对象中的值,以便按 fullVisitorId 或 visitId 分组。另一个用例是:每个事件使用什么设备?我觉得用JSON函数好很多
    • 1) 到目前为止,我从您的问题和 cmets 中看到的所有内容 - 在您的情况下没有使用 JSON 函数!请理解 - 当您将 json 作为字符串存储在一个字段中时,可以使用 JSON 函数,除非我遗漏了某些东西,否则这不是您的情况!我建议您再次阅读我的答案中的链接,以了解何时以及如何使用 json 函数。 2)我建议您发布新问题,重点是解释您的任务到底是什么,您当前的查询是什么以及遇到什么样的问题。 - 有了这个,我们也许可以帮助你。
    猜你喜欢
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    • 2019-02-06
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多