sql - 在 SQL 中,我可以使用 like 或 contains 子句连接数据以排除某些值吗?

标签 sql google-analytics google-bigquery

我正在开展一个项目,从 BigQuery 中的 Google Analytics 数据构建一些查询,以复制某个特定 KPI 的一些报告,我有一个表格,其中包含我需要从 Google Analytics 数据中排除的网站列表,以便获取正确的度量。

我的 list 可能有以下内容:
网站名称.com

但是,我需要将其与 BigQuery 中的 eventLabel 列相匹配,其中 URL 可能返回为:
http://sitename.com/subpage/extra-subpage

我不能做 Not In 因为这需要直接匹配,我尝试使用 like 语句但是我收到以下错误

Scalar subquery produced more than one element

我真的不知道该怎么做,我想知道我是否需要做一个查询来说明字符串是否匹配(因为如果我使用内部连接然后使用这个新表来执行排除,我可以让它工作因为我可以保留 eventLabel,然后基于此做我的 Not In?
SELECT Distinct
h.eventinfo.eventAction  eventAction,
h.eventinfo.eventlabel eventlabel

FROM `projectName.ga_sessions_*`, unnest(Hits) h 


 WHere 
 _TABLE_SUFFIX BETWEEN "20190101" AND  FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))

and type = 'EVENT'
 and h.eventInfo.eventCategory = 'EventName'

and Replace(Replace(Replace(h.eventInfo.eventLabel,'http://',''),'https://',''),'www.','') 
                                                Not like (select concat(ThirdPartyURL,'%') from `projectName.datasetName.ExclusionList`)

我希望以上是有道理的。

TIA。

最佳答案

重现您的问题后,解决方案是使用 NOT IN而不是 NOT LIKE如下:

WITH `projectName.datasetName.ExclusionList` AS
  (SELECT 'label1' AS ThirdPartyURL UNION ALL
   SELECT 'label2')

SELECT DISTINCT h.eventinfo.eventAction eventAction,
                h.eventinfo.eventlabel eventlabel
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`,
     unnest(Hits) h
WHERE _TABLE_SUFFIX BETWEEN "20170801" AND "20170802"
  AND TYPE = 'EVENT'
  AND h.eventInfo.eventCategory = 'EventName'
  AND Replace(Replace(Replace(h.eventInfo.eventLabel, 'http://', ''), 'https://', ''), 'www.', '') 
  NOT IN
        (SELECT ThirdPartyURL FROM `projectName.datasetName.ExclusionList`)

这是link到 BigQuery 相关的 SQL 文档

关于sql - 在 SQL 中,我可以使用 like 或 contains 子句连接数据以排除某些值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55593882/

相关文章:

sql - 如何将 IP 地址从 Google Analytics 过滤到 Bigquery

Sqlite 获取在每个 SELECT 请求中找到的记录的 ROW NUMBER 和 COUNT

sql - oracle 11g sql查询从两个表连接中获取数据

sql - 如何查询坐标 5 英里半径范围内的所有行?

google-analytics - Google Analytics(分析)增强型电子商务有效载荷在结帐时过大

gmail - 从 Gmail 新邮件触发事件

java - 插入查询中 preparedStatement 的问题

google-analytics - 使用我们的分析代码的未知站点

javascript - Google Analytics 发送事件有时会失败

google-bigquery - 从 BigQuery 中的一个句子中提取最后 16 个字符