Google BigQuery СОЕДИНЕНИЕ между 3 таблицами - PullRequest
0 голосов
/ 26 июня 2018
SELECT
  C. cdrs_id AS cdrs_id,
  C. cdrs_cc_card AS cdrs_cc_card,
  C. cdrs_starttime AS cdrs_starttime,
  C. cdrs_sessiontime AS cdrs_sessiontime,
  S. login_source AS login_source
FROM
  [Dataset.Statistics_Application] AS S 
JOIN EACH [Dataset.User_Info] AS U ON  S. user_id = U. id 
JOIN EACH [Dataset.CDRSTrafficDB] AS C ON U. vcard = C. cdrs_cc_card AND C. cdrs_starttime BETWEEN S. start_date AND S. end_date
GROUP BY
  cdrs_id,
  cdrs_cc_card,
  cdrs_starttime,
  cdrs_sessiontime,
  login_source

Существует способ записи каждого соединения с условием = и условием between. Ошибка: предложение ON должно быть AND of = сравнения одного имени поля из каждой таблицы со всеми именами полей с префиксом имени таблицы.

1 Ответ

0 голосов
/ 26 июня 2018

Стандартный SQL в BigQuery не имеет этого ограничения. Вы можете использовать запрос этой формы; обратите внимание на разницу в имени таблицы при удалении и удалении EACH:

#standardSQL
SELECT
  C. cdrs_id AS cdrs_id,
  C. cdrs_cc_card AS cdrs_cc_card,
  C. cdrs_starttime AS cdrs_starttime,
  C. cdrs_sessiontime AS cdrs_sessiontime,
  S. login_source AS login_source
FROM
  `Dataset.Statistics_Application` AS S 
JOIN `Dataset.User_Info` AS U ON  S. user_id = U. id 
JOIN `Dataset.CDRSTrafficDB` AS C ON U. vcard = C. cdrs_cc_card AND C. cdrs_starttime BETWEEN S. start_date AND S. end_date
GROUP BY
  cdrs_id,
  cdrs_cc_card,
  cdrs_starttime,
  cdrs_sessiontime,
  login_source
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...