需要 SQL 查询帮助以解析 BigQuery 表中的 JSON 数据

Posted

技术标签:

【中文标题】需要 SQL 查询帮助以解析 BigQuery 表中的 JSON 数据【英文标题】:Need assistance with SQL query to parse JSON data from BigQuery table 【发布时间】:2021-12-03 05:35:50 【问题描述】:

我正在使用 BigQuery 会话表来查询产品字段。但我只能查询具有硬编码索引值的第一行。有人可以帮助我使用 SQL 查询来解析 JSON 吗?

查询:

select visitId, hits[OFFSET(0)].product[OFFSET(0)].productSKU, hits[OFFSET(0)].product[OFFSET(0)].v2ProductName 
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170801`
LIMIT 5

示例会话表数据:

[
  
    "visitId": "1501583974",
    "hits": [
      
        "product": [
          
            "productSKU": "GGOEGESB015199",
            "v2ProductName": "Test 1"
          ,
          
            "productSKU": "GGOEGESB015200",
            "v2ProductName": "Test 2"
          
        ]
      
    ]
  
]

预期结果:

【问题讨论】:

您能否重新表述您的问题以使其更易于理解?您在将嵌套数据插入 BigQuery 表时是否遇到问题?或者你想知道如何查询它? @KrishnuSengupta - 我已经更新了正文。我只想知道如何查询JSON数据。 【参考方案1】:

我运行了以下查询:

select visitId, n.productSKU, n.v2productName from (select visitId, m.product
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170801`, unnest(hits) as m
LIMIT 5), unnest (product) as n

在内部查询中,我取消嵌套结构“命中”的数组,而在外部查询中,我取消嵌套结构“产品”的内部数组。

输出:

【讨论】:

谢谢你,@KrishanuSengupta。这正是我一直在寻找的。我还找到了关于 UNNEST 的有用解释。 - 要将 ARRAY 转换为一组行,也称为“展平”,请使用 UNNEST 运算符。 UNNEST 接受一个 ARRAY 并为 ARRAY 中的每个元素返回一个包含一行的表。

以上是关于需要 SQL 查询帮助以解析 BigQuery 表中的 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章

如何编写 BigQuery/SQL 查询以将一个表中的列的平均值与第二个/另一个表中的列相除

如何使用 Bigquery 连接 GCP SQL 实例?

以 JSON 格式下载大查询表

如何在 bigquery 中旋转我的 sql 表?

SQL - 不等左加入 BigQuery

从 SQL 查询向 BigQuery 表添加多个分区列