How to check if several values are in a list in BigQuery

女生的网名这么多〃 提交于 2021-01-29 10:16:42

问题


Is there a way to make this clause more compact?

SELECT campaign
       ,event_list
FROM `adobe_analytics.raw_data_20200*`
WHERE campaign IS NOT NULL  -- What does it mean when a campaign is null in Adobe_analytics
AND
(
"1" IN UNNEST(split(event_list,","))
OR "2" IN UNNEST(split(event_list,","))
OR "3" IN UNNEST(split(event_list,","))
)

Something like :

SELECT campaign
   ,event_list
FROM `adobe_analytics.raw_data_20200*`
WHERE campaign IS NOT NULL
AND ("1" OR "2" OR "3") IN UNNEST(split(event_list,","))

回答1:


I would use exists:

SELECT campaign, event_list
FROM `adobe_analytics.raw_data_20200*` rd
WHERE campaign IS NOT NULL AND
      EXISTS (SELECT 1
              FROM UNNEST(SPLIT(rd.event_list)) el
              WHERE el IN ('1', '2', '3')
             );



回答2:


Below is for BigQuery Standard SQL

SELECT campaign ,event_list
FROM `adobe_analytics.raw_data_20200*`
WHERE campaign IS NOT NULL
AND (
  SELECT COUNT(1) FROM UNNEST(SPLIT(event_list,",")) e
  JOIN UNNEST(SPLIT("1,2,3",",")) e USING(e)
) > 0


来源:https://stackoverflow.com/questions/65635224/how-to-check-if-several-values-are-in-a-list-in-bigquery

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!