大查询 - 和/或运算符

时间:2014-11-04 09:22:42

标签: selection google-bigquery operator-keyword

我尝试获取一个答案数据库,该数据库为我提供了目的地美国和不同来源国家的所有数据。但是在一行中可能写成CN,HK,JP - 意思是很多东西。所以,我写的查询如下,但答案只包含原产地CN或HK而不是" CN,JP,HK"。
什么是正确的代码?

SELECT destination_country,origin_country, createDate FROM [DataWarehouse.Draft] 
Where destination_country contains "US"
And originCountries In ("CN", "HK")

行originCountries destinationCountries createWeek
1 CN US 2014W30
2 CN US 2014W30
3 CN US 2014W30
4 CN US 2014W30
5 HK US 2014W30
6 HK US 2014W30

2 个答案:

答案 0 :(得分:4)

您的origin_country数据目前在originCountries字段内展平。您需要将此(展平的)字段扩展为重复字段。我不知道你的确切架构,但有些内容如下:

SELECT * FROM
  (SELECT destination_country, SPLIT(originCountries, ",") as origin_country,
   createDate FROM [DataWarehouse.Draft])
WHERE destination_country contains "US" And origin_country IN ("CN", "HK")

应该做你需要的。我不知道这个版本是否表现良好,但它应该进行你想要的过滤。

请参阅string function reference文档中的SPLIT文档以及有关nested and repeated fields的文档。

答案 1 :(得分:4)

这确实是一个AND / OR问题。

尝试:

SELECT destination_country,origin_country, createDate FROM [DataWarehouse.Draft] 
Where destination_country contains "US"
And (originCountries CONTAINS "CN" OR originCountries CONTAINS "HK")