【问题标题】:OUTER APPLY in BigQueryBigQuery 中的外部应用
【发布时间】:2021-02-17 14:52:53
【问题描述】:

我想将一列应用于我提取最新登录日期的用户列表。 传统上我会做这样的事情:

SELECT U.* , O.* FROM Users.Users U 
OUTER APPLY ( SELECT .. FROM .. Events.Events E WHERE E.UserId = U.UserId) O

但是,BigQuery 似乎无法识别 Outer Apply 关键字。我做错了什么,上面有替代品吗?

【问题讨论】:

  • 样本数据和期望的结果会让您的问题更加清晰。

标签: sql google-bigquery cross-apply outer-apply


【解决方案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。我假设你的外部应用派生表做了一些更花哨的事情,需要这个运算符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多