繁体   English   中英

Bigquery 过滤两个数组列

[英]Bigquery filter two array columns

我有两列已从两个表中加入,我试图像这样过滤:

row app1       app2
1   [app,app1] []
2   []         [app]
3   [app1]     [app]
4   []         []

现在我正在尝试检索 app1 或 app2 包含“app”的所有行。 我想出了以下内容,但是它只会返回一行,即第 3 行。不会返回任何一列为空的行。

    select * from table
    where exists(SELECT * FROM UNNEST(array(select app1 from table)) AS s, 
    UNNEST(array(select app2 from table)) AS d WHERE regexp_contains(format('%t',(s,d)), 
    'app'))

这只返回第 3 行,我期望返回第 1、2、3 行。

对 biqquery 的任何帮助都会有很大帮助

... 过滤两个数组列 ... - ... 检索 app1 或 app2 包含“app”的所有行

contain引用数组而不是字符串时 - 我假设您正在寻找包含app作为元素的数组,而不是作为字符串的一部分!
如果我的这是真的 - 请考虑以下

select *
from your_table
where 'app' in unnest(app1 || app2)             

如果应用于您问题中的样本数据 - 输出是

在此处输入图像描述

只需使用以下查询即可:

SELECT * 
  FROM sample
 WHERE REGEXP_CONTAINS(FORMAT('%t', ARRAY_CONCAT(app1, app2)), r'app');

输出:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM