ВНЕШНЕЕ ПРИМЕНЕНИЕ в BigQuery

#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 . Я предполагаю, что ваша внешняя прикладная производная таблица выполняет что-то более причудливое, требующее этого оператора.