2

我想排除包含存储在 exclude_list 表中的关键字的记录。在典型的数据库中,我们可以通过使用 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 中实现相同的目标?

4

1 回答 1

3

SELECT WHERE NOT EXISTS我可以在 bigquery 文档中找到的最接近 a的是该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))

根据文档,它的工作方式与 SQLIN条件的工作方式非常相似,其中每个参数都被评估然后与所有其他值一起或'd。

如果 expr 与 expr1、expr2 或括号中的任何值匹配,则返回 true。IN 关键字是 (expr = expr1 || expr = expr2 || ...) 的有效简写。与 IN 关键字一起使用的表达式必须是常量,并且它们必须与 expr 的数据类型匹配。

更多信息在这里

于 2013-07-01T15:23:36.197 回答