【问题标题】:Repeating the same window for several functions in Presto?在 Presto 中为多个功能重复相同的窗口?
【发布时间】:2021-10-22 05:04:20
【问题描述】:

我正在运行类似于以下内容的查询,以累积截至日期的 7 天窗口中正值数量和事件总数的总和。

SELECT
    first_value(date) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS date_left,
    last_value(date) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS date_right,
    sum(positives) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS events,
    sum(events) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS total
FROM
    data

虽然这个查询有效,但它并不漂亮,因为它重复了相同的长窗口规范 4 次。

有没有办法在 Presto 中“保存”一个窗口,或者在同一个窗口上使用多个功能?

【问题讨论】:

  • 大多数数据库都支持FROM 子句中的标准WINDOW 定义。但是,根据文档,Presto 似乎不支持这一点:prestodb.io/docs/current/sql/select.html
  • 也只是供参考 Trino(PrestoSQL 的更名版本)supprotsWINDOW 定义。

标签: sql window-functions presto trino


【解决方案1】:

为了呼应@Gordon Linoff 和@Guru Stron 在 cmets 中所说的话,PrestoDB 确实支持窗口函数,但不支持 WINDOW 子句。然而,今年早些时候,Trino (formerly PrestoSQL) 拥有 support for WINDOW 和 Trino recently added more features。如:

  • 完全支持RANGE 帧类型。
  • 支持GROUPS 帧类型。
  • WINDOW 子句的更多支持。

如果您的团队需要这些类型的功能,我建议您升级到 Trino。

【讨论】:

    猜你喜欢
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2018-06-18
    • 2020-02-23
    相关资源
    最近更新 更多