我想要排除包含存储在exclusion_list表中的关键字的记录。 在典型的DB中,我们可以通过使用WHERE NOT EXISTS短语来完成此操作;
SELECT datetime, server, page, uniq_id, client_req, domain, search_keyword
FROM apache_log a
WHERE NOT EXISTS
(SELECT 0 FROM exclusion_list e WHERE regexp_like(a.client_req, e.ex_url))
有没有办法在BigQuery中实现相同的目标?
答案 0 :(得分:3)
我在bigquery文档中找到SELECT WHERE NOT EXISTS
的最接近的是SELECT WHERE NOT IN
子句。
SELECT datetime, server, page, uniq_id, client_req, domain, search_keyword
FROM apache_log a
WHERE NOT IN
(SELECT 0 FROM exclusion_list e WHERE regexp_like(a.client_req, e.ex_url))
根据文档,它以与SQL IN
条件非常相似的方式工作,其中每个参数都被评估,或者与所有其他值一起评估。
如果expr与expr1,expr2或者中的任何值匹配,则返回true 括弧。 IN关键字是(expr =。)的有效缩写 expr1 || expr = expr2 || ...)。与IN一起使用的表达式 关键字必须是常量,并且必须与expr的数据类型匹配。
更多信息Here。