在同一个表中输出不同的查询结果

时间:2018-01-28 20:10:58

标签: google-bigquery standard-sql

在最近的更新之后,google bigquery现在允许从特定国家/地区的表中查询。我想在us表中找到包含单词' space'的来源(网站)的数量。并与日本表格中的类似结果并排显示。我正在进行的查询是 -

WITH
 query_1 as 
    (select distinct origin as japan 
     from `chrome-ux-report.country_jp.201712` where 
     origin like "%space%"),
 query_2 as 
    (select distinct origin as usa 
     from `chrome-ux-report.country_us.201712` 
     where origin like "%space%" )
SELECT japan,usa from query_1,query_2

但是它导致在日本和美国列中具有相同来源的多次重复的表格。另一个奇怪的事情是o / p表包含相同数量的日本和美国的行数,其中显然包含单词' space'在2个表中不相同。我使用的是标准的sql,而不是传统的。 任何帮助表示赞赏。谢谢。
注意:并排,我的意思是将有两列,日本列显示日本的网站,美国列显示美国的结果。

1 个答案:

答案 0 :(得分:2)

在BigQuery标准SQL(您在查询中使用)中FROM语句中的表之间的逗号表示CROSS JOIN。这解释了为什么it results in a table having multiple repetitions of the same origin in both the japan and usa column

取决于您希望结果的确切程度 - 您可以通过多种不同的方式构建查询 - 例如

WITH
 query_1 AS 
    (SELECT DISTINCT origin AS japan 
     FROM `chrome-ux-report.country_jp.201712` WHERE 
     origin LIKE "%space%"),
 query_2 AS 
    (SELECT DISTINCT origin AS usa 
     FROM `chrome-ux-report.country_us.201712` 
     WHERE origin LIKE "%space%" )
SELECT 
  ARRAY(SELECT japan FROM query_1) AS japan,
  ARRAY(SELECT usa FROM query_2) AS usa   

您也可以查看以下计数

WITH
 query_1 AS 
    (SELECT DISTINCT origin AS japan 
     FROM `chrome-ux-report.country_jp.201712` WHERE 
     origin LIKE "%space%"),
 query_2 AS 
    (SELECT DISTINCT origin AS usa 
     FROM `chrome-ux-report.country_us.201712` 
     WHERE origin LIKE "%space%" )
SELECT 
  ARRAY_LENGTH(ARRAY(SELECT japan FROM query_1)) AS japan_count,
  ARRAY_LENGTH(ARRAY(SELECT usa FROM query_2)) AS usa_count