Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 连接从字符串列拆分的多个列上的两个表_Sql_Google Cloud Platform_Google Bigquery - Fatal编程技术网

Sql 连接从字符串列拆分的多个列上的两个表

Sql 连接从字符串列拆分的多个列上的两个表,sql,google-cloud-platform,google-bigquery,Sql,Google Cloud Platform,Google Bigquery,我有两张桌子,第一张看起来像: col1 col2 1 data1 v1|v2|v3 2 data2 v2|v4 3 data3 NULL 4 data4 v5 col_k col_v 1 k1 v1 2 k2 v2 3 k3 v3 4 k4 v4 5 k5 v5 第二个看起来像: col1 col2 1 data1 v1|v2|v3 2 data2 v2|v4 3 data

我有两张桌子,第一张看起来像:

    col1  col2
1   data1 v1|v2|v3
2   data2 v2|v4
3   data3 NULL
4   data4 v5
    col_k  col_v
1   k1     v1
2   k2     v2
3   k3     v3
4   k4     v4
5   k5     v5
第二个看起来像:

    col1  col2
1   data1 v1|v2|v3
2   data2 v2|v4
3   data3 NULL
4   data4 v5
    col_k  col_v
1   k1     v1
2   k2     v2
3   k3     v3
4   k4     v4
5   k5     v5

现在我需要根据
ANY(table1.col2)=table2.colu v
合并它们,并且需要在googlebigquery上完成。解决办法是什么?我不知道它会是什么样子,它可能在一列中,即
k1 | k2 | k3
,也可能在只包含一个键的多列中。欢迎任何意见

我将取消对
连接的字符串的测试:

select t1.*, t2.*
from table1 t1 cross join
     unnest(split(t1.col2, '|')) col join
     table2 t2
     on t2.col_v = col

我将取消对
连接的字符串的测试

select t1.*, t2.*
from table1 t1 cross join
     unnest(split(t1.col2, '|')) col join
     table2 t2
     on t2.col_v = col

下面是BigQuery标准SQL

#standardSQL
select col1, 
  any_value(col2) col2, 
  string_agg(col_k, '|' order by col_k) col3
from `project.dataset.table1`
left join unnest(split(col2, '|')) col_v 
left join `project.dataset.table2`
using(col_v)
group by col1    
如果将上述应用于您问题中的样本数据,则输出为


下面是BigQuery标准SQL

#standardSQL
select col1, 
  any_value(col2) col2, 
  string_agg(col_k, '|' order by col_k) col3
from `project.dataset.table1`
left join unnest(split(col2, '|')) col_v 
left join `project.dataset.table2`
using(col_v)
group by col1    
如果将上述应用于您问题中的样本数据,则输出为