首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bigquery:查询重复的key-value到单行

Bigquery:查询重复的key-value到单行
EN

Stack Overflow用户
提问于 2021-07-03 03:55:04
回答 1查看 28关注 0票数 0

我有一个类似下面的模式,其中我使用键-值对象重复字段:

代码语言:javascript
复制
metadata.date               STRING  NULLABLE    
metadata.properties         RECORD  REPEATED    
metadata.properties.key     STRING  NULLABLE    
metadata.properties.value   STRING  NULLABLE    

我有像{date:"01-02",properties:{key:"foo",value:"bar"},{key:"bar",value:"baz"},...

我想查询重复字段中的所有内容,作为单行的列。请注意,我们在properties重复字段中有100+条目。有没有一种方法可以在没有100+子查询的情况下实现这一点?我当前的查询是:

代码语言:javascript
复制
SELECT
    date,
    (SELECT value FROM unnest(metadata.properties) WHERE key='foo') as foo,
    (SELECT value FROM unnest(metadata.properties) WHERE key='bar') as bar,
    ...
FROM mytable
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-03 04:27:22

考虑以下内容-动态提取所有键并构建由execute immediate执行的所需查询

代码语言:javascript
复制
execute immediate (select '''select * except(row_id)
from (
  select to_json_string(t) row_id, metadata.date, key, value
  from `project.dataset.table` t, unnest(metadata.properties) property
)
pivot (max(value) for key in (''' || string_agg(distinct '"' || key || '"' order by '"' || key || '"') || '''))'''
from `project.dataset.table`, unnest(metadata.properties)
)

注意:很可能您可以分别排除/删除to_json_string(t) row_idexcept(row_id)的使用,但我之所以将其包含在这里,是因为我不知道计划其余部分的所有细节,我希望确保行按原样保留,而不是意外分组

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

https://stackoverflow.com/questions/68230641

复制
相关文章

相似问题

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