跳转到内容
搜索文档

更新日志

Cloudflare 的最新更新与改进。

Back to all posts

R2 SQL 现在支持窗口函数、DISTINCT 和集合操作

R2 SQL 现在支持窗口函数、SELECT DISTINCT、集合操作和更多聚合,使得编写分析查询变得更加容易,而无需在其他地方预处理数据。

R2 SQL 是 Cloudflare 的无服务器分布式 SQL 引擎,用于查询存储在 R2 Data Catalog 中的 Apache Iceberg 表。

新功能

  • 窗口函数ROW_NUMBERRANKDENSE_RANKPERCENT_RANKCUME_DISTNTILELAGLEADFIRST_VALUELAST_VALUENTH_VALUE,以及带有 OVER (...) 子句的聚合,包括 PARTITION BY 和显式窗口范围(frames)
  • QUALIFY — 根据窗口函数结果过滤行
  • DISTINCTSELECT DISTINCTDISTINCT ON (...) 以及聚合上的 DISTINCT 修饰符(例如 COUNT(DISTINCT ...)
  • 集合操作UNIONUNION ALLINTERSECTEXCEPT
  • 分组扩展GROUPING SETSROLLUPCUBE
  • 精确聚合MEDIANPERCENTILE_CONTARRAY_AGGSTRING_AGG

示例

使用窗口函数对行进行排名

SELECT customer_id, region,
       ROW_NUMBER() OVER (PARTITION BY region ORDER BY total_amount DESC) AS rank_in_region
FROM my_namespace.sales_data

使用 QUALIFY 进行过滤

SELECT customer_id, region, total_amount
FROM my_namespace.sales_data
QUALIFY ROW_NUMBER() OVER (PARTITION BY region ORDER BY total_amount DESC) <= 3

使用集合操作组合表

SELECT customer_id FROM my_namespace.sales_data
EXCEPT
SELECT customer_id FROM my_namespace.archived_sales

不支持具名 WINDOW 子句 — 请在每个调用点内联 OVER (...) 规范。有关完整语法参考,请参阅 SQL 参考。有关支持的功能和性能指南,请参阅限制与最佳实践