如何替换 BigQuery 中 JSON 中特定键的数据?

Posted

技术标签:

【中文标题】如何替换 BigQuery 中 JSON 中特定键的数据?【英文标题】:How to replace the data of a specific key inside a JSON in BigQuery? 【发布时间】:2021-02-22 11:14:15 【问题描述】:

我有以下格式的 JSON 数据,我想用一些虚拟值 ('111') 替换 _nanoseconds 的值,而不影响 JSON 结构。


  "Category": "Winning",
  "CreatedAt": 
    "_seconds": 1602574892,
    "_nanoseconds": 461491000
  ,
  "UpdatedAt": 
    "_seconds": 1602574892,
    "_nanoseconds": 463021000
  

【问题讨论】:

【参考方案1】:
select *,
  regexp_replace(json, r'("_nanoseconds": )(\d+)',  '\\1777') as dummy_json
from `project.dataset.table`     

如果应用于您问题中的样本数据 - 输出是

【讨论】:

非常感谢您的回答,它与整数值完美配合。但是,我有一些字符串格式,如下所述。你能帮我解决这个问题吗? "Category": "Winning", "CreatedAt": "_seconds": 1602574892, "_nanoseconds": "2401:4900:52f0:304a:34cd:93e6:ea31:3cce" , "UpdatedAt": "_seconds": 1602574892, "_nanoseconds":"2401:4900:52f0:304a:34cd:93e6:ea31:3cce" TIA。另外,请分享参考链接:) 我用([":0-9a-zA-Z ]+)代替(\d+)得到了答案

以上是关于如何替换 BigQuery 中 JSON 中特定键的数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Bigquery 中的这个嵌套 JSON 类型列中查询特定的内容

在 json 文档中没有指定键的 bigquery 中从 json 字符串中提取键和值

如何将动态 json 键展平为 BigQuery 中的列?

Bigquery:是不是有一种 json 路径方法可以仅从具有动态键的 json 数组中提取值?

在 BigQuery 中使用实际列值作为键创建 JSON 列

从带有键名的 JSON 中提取值在 bigquery 中包含 #