#sql #google-bigquery #cross-apply #outer-apply
#sql #google-bigquery #перекрестное применение #внешнее применение
Вопрос:
Я хочу применить столбец к списку пользователей, в котором я получаю последнюю дату входа. Традиционно я бы сделал что-то вроде этого:
SELECT U.* , O.* FROM Users.Users U
OUTER APPLY ( SELECT .. FROM .. Events.Events E WHERE E.UserId = U.UserId) O
Однако BigQuery, похоже, не распознает внешние ключевые слова Apply. Что я делаю не так, есть ли замена выше?
Комментарии:
1. Примерные данные и желаемые результаты сделают ваш вопрос намного понятнее.
Ответ №1:
Этот подход, похоже, работает:
SELECT U.*, O.*
FROM Users.Users U
LEFT JOIN UNNEST((
SELECT array_agg(STRUCT(...))
FROM Events.Events E
WHERE E.UserId = U.UserId
)) ON TRUE
Конечно, в вашем упрощенном случае вам на самом деле не нужен OUTER APPLY
(или стандартный SQL LEFT JOIN LATERAL
). Вы бы просто использовали обычный LEFT JOIN
. Я предполагаю, что ваша внешняя прикладная производная таблица выполняет что-то более причудливое, требующее этого оператора.