写点什么

Databend 开源周报第 112 期

作者:Databend
  • 2023-09-26
    福建
  • 本文字数:1803 字

    阅读完需:约 6 分钟

Databend 开源周报第112期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn

What's On In Databend

探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。

理解用户自定义函数(UDF)

用户自定义函数(User-Defined Function,UDF)允许你的自定义操作与 Databend 进行集成,从而更好地处理数据、执行任务,构造更合理的数据工作流。


Databend 目前支持两种形式的用户自定义函数:使用 SQL lambda 表达式编写或者用 Python 等编程语言实现 UDF 服务器注册。用户自定义函数可以作为 Databend 查询处理流程的一部分执行。


使用 UDFs 的优点包括:


  • 自定义数据转换。

  • 优化性能。

  • 改善代码可重用性。


如果您想了解更多信息,请查看下面列出的资源。


Code Corner

一起来探索 Databend 和周边生态中的代码片段或项目。

使用 Prometheus 改善可观测性

metrics-rs 为不同的可观测性方案构建了一个通用的抽象层,支持包括 statsd、prometheus、new-relic 等在内的多种工具,但是 metrics-rs 无法很好地支持直方图统计之类的度量。


如今,Prometheus 已成为可观测性领域的事实标准,使用原始的 Prometheus 客户端,而不是将指标推送给其他工具,会带来一些显而易见的好处:


  • 更好的性能:经过良好实现的观测指标的内存分配应该是 O(1) ,无需本地缓冲队列。

  • 减少抽象层:我们可以减少关于指标的抽象层,使代码路径更易于理解。

  • 更好的编码规范:目前我们在不同模块中有不同的度量标准实践,可以学习 Prometheus 社区的度量标准实践来统一我们的度量标准实践。


现在,Databend 的可观测性指标已经完全迁移到 Prometheus 实现,在保持原有指标几乎不变的情况下,带来了更全面、更可靠的可观测性体验。


如果您想了解更多信息,请查看下面列出的资源。


Highlights

以下是一些值得注意的事件,也许您可以找到感兴趣的内容。


  • COMPACT 支持分布式执行。

  • 新增 json_path_exists 函数。

  • 新增 recluster_block_size 设置用于控制重聚类时的块大小。

  • 支持 DECIMAL 类型向 INT 类型的转换。

  • 支持 inverted filter 以减少 filter 执行,部分场景下 4 倍性能提升。

  • SQLSmith 测试支持生成表函数、窗口函数、子查询和 WITH 子句。

What's Up Next

我们始终对前沿技术和创新理念持开放态度,欢迎您加入社区,为 Databend 注入活力。

实现 GREATEST 函数

GREATEST 函数的输入是一个表达式列表,输出是该表达式列表中的最大值。


语法:


GREATEST( <expr1> [ , <expr2> ... ] )
复制代码


示例:


SELECT id, name, category, price, rating,       CASE         WHEN rating = 1 THEN 0.02         WHEN rating = 2 THEN 0.04         WHEN rating = 3 THEN 0.06         WHEN rating = 4 THEN 0.08         ELSE 0.1       END AS increase_percentage_based_on_rating,       rank() OVER (PARTITION BY category ORDER BY rating) AS rating_rank,       CASE         WHEN rating_rank = 1 THEN 0.2         WHEN rating_rank = 2 THEN 0.1         ELSE 0       END AS increase_percentage_based_on_rank,       GREATEST(increase_percentage_based_on_rating,                 increase_percentage_based_on_rank) AS final_increase_percentage,       CAST(price * (1 + final_increase_percentage) AS DECIMAL(10, 2))         AS adjusted_priceFROM products
复制代码


Issue #12944 | feat: GREATEST function


如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review 。或者,你可以点击 https://link.databend.rs/i-m-feeling-lucky 来挑选一个随机问题,祝好运!

Changelog

前往查看 Databend 每日构建的变更日志,以了解开发的最新动态。


地址:https://github.com/datafuselabs/databend/releases

Contributors

非常感谢贡献者们在本周的卓越工作。



Connect With Us

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。


发布于: 刚刚阅读数: 4
用户头像

Databend

关注

还未添加个人签名 2022-08-25 加入

还未添加个人简介

评论

发布
暂无评论
Databend 开源周报第112期_Databend_InfoQ写作社区