json - 如何从在 BigQuery 中没有键的 JSON 中读取数据?
问题描述
我有这种格式的数据
{"OgDKrh1hT6NzBHXsjh7n8yrkrE62":["U2","X1","D1","C3","H2","D3","O3","Q1","A2"],"UxdTolmzq9cAYjPkTX57VAzas2w1":["E3","S1","V2","W1","M1","H3","L3","G2","Y3"]}
我想要这种格式的数据
id details
OgDKrh1hT6NzBHXsjh7n8yrkrE62 U2,X1,D1,C3,H2,D3,O3,Q1,A2
UxdTolmzq9cAYjPkTX57VAzas2w1 E3,S1,V2,W1,M1,H3,L3,G2,Y3
解决方案
以下是 BigQuery 标准 SQL
#standardSQL
select
arr[offset(0)] as id,
arr[offset(1)] as details
from `project.dataset.table`,
unnest(regexp_extract_all(text, r'"[^"]+":\[[^\[]+\]')) kv,
unnest([struct(split(translate(kv, '"[]', ''), ':') as arr)])
如果将上述应用到您的问题中的样本数据,如下例所示
#standardSQL
with `project.dataset.table` as (
select '{"OgDKrh1hT6NzBHXsjh7n8yrkrE62":["U2","X1","D1","C3","H2","D3","O3","Q1","A2"],"UxdTolmzq9cAYjPkTX57VAzas2w1":["E3","S1","V2","W1","M1","H3","L3","G2","Y3"]}' text
)
select
arr[offset(0)] as id,
arr[offset(1)] as details
from `project.dataset.table`,
unnest(regexp_extract_all(text, r'"[^"]+":\[[^\[]+\]')) kv,
unnest([struct(split(translate(kv, '"[]', ''), ':') as arr)])
输出是
推荐阅读
- php - 用于记录 PHP 代码的官方 PHPDoc 参考
- java - Spring Boot - 如何检查特定应用程序 URL 的状态 200
- javascript - Laravel 从用户帖子字符串嵌入 Youtube 视频
- r - 将线性模型应用于由多个范围定义的数据子集
- java - Java 字符串索引
- flutter - Flutter firestore 限制用户允许的写操作次数
- javascript - 来自库的 Google Script HTML 表单引发错误未捕获
- javascript - Undefined 不是函数('...item.map...' 附近)-React Native 搜索栏
- postman - 邮递员的 OR 运算符
- apache-kafka-streams - 具有 KTable Binder 配置的 Spring Cloud Stream - 引发 java.lang.IllegalArgumentException:方法必须是声明性的