首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Bigquery + dbt中动态解析JSON对象

在Bigquery + dbt中动态解析JSON对象
EN

Stack Overflow用户
提问于 2022-11-12 20:39:22
回答 1查看 66关注 0票数 0

我有一条消息如下所示。我正在使用dbt和大查询插件。我需要在大查询中动态创建表

代码语言:javascript
运行
复制
{
"data": {
"schema":"dev",
"payload": {
  "lastmodifieddate": "2022-11-122 00:01:28",
  "changeeventheader": {
    "changetype": "UPDATE",
    "changefields": [
     "lastmodifieddate",
     "product_value"
  ],
   "committimestamp": 18478596845860,
   "recordIds":[
      "568069"
    ]
},
 "product_value" : 20000
}
}
}

我需要使用recordIds和更改的字段动态创建表。每当源发送更新时,此字段列表都会动态更改。预期产出:

代码语言:javascript
运行
复制
recordIds | product_value | lastmodifieddate     |changetype
568069    | 20000         | 2022-11-122 00:01:28 |UPDATE

谢谢你的建议和帮助!

EN

回答 1

Stack Overflow用户

发布于 2022-11-12 21:08:33

JSON对象可以保存在BigQuery表中。这里不需要使用dbt。

代码语言:javascript
运行
复制
with tbl as (select 5 row, JSON '''{
"data": {
"schema":"dev",
"payload": {
  "lastmodifieddate": "2022-11-122 00:01:28",
  "changeeventheader": {
    "changetype": "UPDATE",
    "changefields": [
     "lastmodifieddate",
     "product_value"
  ],
   "committimestamp": 18478596845860,
   "recordIds":[
      "568069"
    ]
},
 "product_value" : 20000
}
}
}''' as JS)
select *,  
JSON_EXTRACT_STRING_ARRAY(JS.data.payload.changeeventheader.recordIds) as recordIds,
JSON_EXTRACT_SCALAR(JS.data.payload.product_value) as product_value,
Json_value(JS.data.payload.lastmodifieddate) as lastmodifieddate,
Json_value(JS.data.payload.changeeventheader.changetype) as changetype
from tbl

如果JSON保存为BigQuery表中的字符串,请首先使用PARSE_JSON(column_name)将字符串转换为JSON。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74416402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档