BigQuery:使用旧版SQL过滤重复的字段 [英] BigQuery : filter repeated fields with legacy SQL

查看:73
本文介绍了BigQuery:使用旧版SQL过滤重复的字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下表格:

I have the following table :

row | query_params | query_values
1     foo            bar  
      param          val
2     foo            baz 

JSON:

JSON :

{ 
"query_params" : [ "foo", "param"], 
"query_values" : [ "bar", "val" ] 
}, { 
"query_params" : [ "foo" ], 
"query_values" : [ "baz" ] 
}

使用传统SQL,我想对它们的值过滤重复字段,例如

Using legacy SQL I want to filter repeated field on their value, something like

SELECT * FROM table WHERE query_params = 'foo'

哪一个会输出

Which would output

row | query_params | query_values
1     foo            bar  
2     foo            baz       

PS:这个问题是相关的到相同的问题,但使用标准的SQL答案这里

PS : this question is related to the same question but using standard SQL answered here

推荐答案

试试看下面的版本

Try below version

    SELECT [row], query_params, query_values 
    FROM (
        SELECT [row], query_params, param_pos, query_values, POSITION(query_values) AS value_pos 
        FROM FLATTEN((
            SELECT [row], query_params, POSITION(query_params) AS param_pos, query_values 
            FROM YourTable
        ), query_params)
        WHERE query_params = 'foo'
    )
    WHERE param_pos = value_pos

这篇关于BigQuery:使用旧版SQL过滤重复的字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆