Стандартный BigQuery Unnest и JOIN вопрос - PullRequest
0 голосов
/ 24 января 2020

У меня есть основа c BigQuery Unnesting Join вопрос

У меня есть таблица событий сеанса и таблица событий настройки. Настраиваемая таблица событий имеет вложенный столбец с именем «data».

Как только я сглаживаю setting_event.data (он же unnest), столбец из него должен присоединиться к столбцу из таблицы Session Events.

Есть ли способ напрямую присоединиться к таблице событий сеанса к необъявленному Setting_event.data? Я попытался сделать:

SELECT .... FROM SESSION_EVENTS LEFT JOIN UNNEST ([setting_event.data])

Однако я получаю setting_event not found.

Как бы я это сделал в Стандартном БК SQL?

Ответы [ 3 ]

0 голосов
/ 24 января 2020

Вы можете сделать:

SELECT <FIELDS> FROM `<session_events>` 
LEFT JOIN
(SELECT <FIELDS> FROM `<setting_events>`, UNNEST(data)
)
ON <JOIN_CONDITION>

Или:

SELECT <FIELDS> FROM `<session_events>` 
LEFT JOIN
(SELECT <FIELDS> FROM `<setting_events>` t, t.data d
)
ON <JOIN_CONDITION>

Во втором варианте вы должны ссылаться на поля внутри t.data как d. Надеюсь, это поможет

0 голосов
/ 24 января 2020

Это должно делать то, что вы хотите:

SELECT ....
FROM SESSION_EVENTS sese LEFT JOIN 
     (SETTING_EVENT sete CROSS JOIN
      UNNEST(se.data) se_data
     ) 
     ON sese.? = se_data

Это решение, при котором вам не нужно иметь вложенный SELECT (и, следовательно, список нужных столбцов).

Если бы вы использовали внутренние объединения, я бы не использовал скобки, а вместо этого изменил бы порядок ссылок на таблицы:

SELECT ....
FROM SETTING_EVENT sete CROSS JOIN
     UNNEST(se.data) se_data JOIN
     SESSION_EVENTS sese
     ON sese.? = se_data
0 голосов
/ 24 января 2020
SELECT ....
FROM `project.dataset.SESSION_EVENTS`
LEFT JOIN (
  SELECT ....
  FROM `project.dataset.SETTING_EVENT`, UNNEST(data)
)
ON ... = ...
...