BigQuery:从regexp_match中选择其他表中的字段

时间:2014-05-27 08:08:13

标签: google-bigquery

如何从多个表中选择一些字段,同时与另一个表中的某个字段进行交叉检查。我想要来自另一个表中列出的udids的信息。

示例将清楚说明:

SELECT udid, score 
FROM (TABLE_QUERY(data_one,'REGEXP_MATCH(table_id, "Data_2014_05_*")'))
WHERE udid IN (SELECT udid FROM data_two.udid_with_high_levels)
GROUP BY udid

是否可以使用“WHERE IN”执行此操作?如何?我收到以下错误: “JOIN(包括半连接)和UNION ALL(逗号)不能组合在一个SELECT语句中。将UNION ALL移动到内部查询或将JOIN移动到外部查询。”

如何用JOIN完成,因为我的第一个表来自regexp_match,语法是什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以进行子选择。

对公共数据的查询显示相同的错误:

SELECT title, SUM(requests) c
FROM (TABLE_QUERY([fh-bigquery:wikipedia],'REGEXP_MATCH(table_id, "pagecounts_2014*")')) 
WHERE title IN (
  SELECT title
  FROM [fh-bigquery:wikipedia.wikipedia_views_201308_en_top_titles_views]
  GROUP BY title) 
GROUP BY 1
ORDER BY 2

在表格选择中添加外部选择可解决问题:

SELECT title, SUM(requests) c
FROM (SELECT title, requests 
  FROM (TABLE_QUERY([fh-bigquery:wikipedia],'REGEXP_MATCH(table_id, "pagecounts_2014*")')))
WHERE title IN (
  SELECT title
  FROM [fh-bigquery:wikipedia.wikipedia_views_201308_en_top_titles_views]
  GROUP BY title) 
GROUP BY 1
ORDER BY 2