【问题标题】:JSON issue in Big QueryBig Query 中的 JSON 问题
【发布时间】:2015-06-30 10:58:15
【问题描述】:

我有一个场景来解析表中一列的 json 数据。 问题是响应列下方的数据存储区备份到 BigQuery 生成的 json。它已“\”附加到每个数据。

Reponse": "[
  {
    \"questionId\":5121566669012992,
    \"answereId\":0,
    \"answeredText\":\"Summer\"
  },{
    \"questionId\":5166851730440192,
    \"answereId\":0,
    \"answeredText\":\"Barcelona\"
  },{
    \"questionId\":6304057064947712,
    \"answereId\":0,
    \"answeredText\":\"Kitesurf\"
  }
]"

如何使用 BigQuery 解析以下内容以获取 questionId 的值?

【问题讨论】:

    标签: json google-bigquery


    【解决方案1】:

    JSON_EXTRACT 不能返回 REPEATED 字段,它只能匹配一个 - 因此不支持 *

    你可以使用硬编码索引来获得第一个位置

    SELECT JSON_EXTRACT_SCALAR('[
      {
        \"questionId\":5121566669012992,
        \"answereId\":0,
        \"answeredText\":\"Summer\"
      },{
        \"questionId\":5166851730440192,
        \"answereId\":0,
        \"answeredText\":\"Barcelona\"
      },{
        \"questionId\":6304057064947712,
        \"answereId\":0,
        \"answeredText\":\"Kitesurf\"
      } 
    ]', '$[0].questionId') AS str;
    

    这会返回:

    +-----+------------------+---+
    | Row |       str        |   |
    +-----+------------------+---+
    |   1 | 5121566669012992 |   |
    +-----+------------------+---+
    

    【讨论】:

    • 这行得通。我假设 Response 是 json 所在的列名。 SELECT JSON_EXTRACT_SCALAR(Reponse, '$[0].questionId') AS str from dataset.Restb - 列出表中的所有 strs。如何获得 answerText 和 questionId?
    • 更新:我找到了我最后一个问题的答案,这里是 SELECT JSON_EXTRACT_SCALAR(Reponse, '$[0].questionId') as str, JSON_EXTRACT_SCALAR(Reponse,'$[2].回答文本') AS str1 来自 dataset.tbname。非常感谢 Pentium10
    • 对于上述查询,列名是静态的,例如'$[0].questionId' & ,'$[2].answeredText')。如果列是动态的怎么办。我在 para.type 列中有类似 [Event,Reverse Auction,Offer] 的记录,其他记录是 [Offer,Reverse Auction]。如何使用 JSON_EXTRACT_SCALAR 函数?。
    • @user4033385 你需要从你的编程语言中填写这些。
    • 我忘了提到我使用 Big Query Web UI 并创建了一个指向表格的视图。此外,我意识到视图不会自动更新,因为基表每天都会刷新。我的问题是,如果列是动态的,我如何在列上应用 JSON_EXTRACT_SCALAR?。
    猜你喜欢
    • 2021-02-18
    • 2023-03-13
    • 2021-12-13
    • 2016-04-08
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多