BigQuery: выберите из regexp_match, где поле в другой таблице

Как я могу выбрать некоторые поля из нескольких таблиц при перекрестной проверке с каким-либо полем из другой таблицы. Мне нужна информация от удидов, перечисленных в другой таблице.

Пример прояснит:

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

Можно ли это сделать с помощью «ГДЕ В»? И как? Я получаю следующую ошибку: «JOIN (включая полусоединение) и UNION ALL (запятая) не могут быть объединены в одном операторе SELECT. Либо переместите UNION ALL во внутренний запрос, либо JOIN во внешний запрос».

Как это можно сделать с помощью JOIN, поскольку моя первая таблица исходит из regexp_match, каков синтаксис?

Спасибо!


person chip9munk    schedule 27.05.2014    source источник


Ответы (1)


Вы можете сделать подвыбор.

Этот запрос к общедоступным данным показывает ту же ошибку:

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
person Felipe Hoffa    schedule 27.05.2014
comment
Спасибо, это работает! у вас есть какое-нибудь объяснение, почему это так ?? Это действительно кажется глупым! - person chip9munk; 27.05.2014
comment
Это досадное ограничение текущей реализации, которое следует устранить. Спасибо, что сообщили об этом! - person Felipe Hoffa; 27.05.2014