Databend 开源周报第 87 期

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

What's On In Databend

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

聚合窗口函数

聚合窗口函数是指将聚合函数应用于窗口中的每一行数据的函数。OVER 子句指定如何将结果集中的行分区。当与GROUP BY一起使用时,聚合窗口函数不会折叠行,而是返回结果集中的所有行。

-- use aggrerate window function
SELECT date, AVG(amount) over (partition by date)
FROM BookSold

June 21|544.0
June 21|544.0
June 22|454.5
June 22|454.5
June 23|643.0
June 23|643.0

Databend 所支持的所有聚合函数都可以作为聚合窗口函数。

  • Doc | (draft) Aggregate Window Functions
  • PR #10700 | feat(window): initial impl window function

在拼写错误时建议函数名称

Databend 近期新增一项用于提高使用体验的智能提示功能,当输入不正确的函数名称时,可以自动提示最接近匹配项。

#> select base64(1);
ERROR 1105 (HY000) at line 1: Code: 1008, displayText = error:
  --> SQL:1:8
  |
1 | select base64(1)
  |        ^^^^^^^^^ no function matches the given name: 'base64', do you mean 'to_base64'?
  • PR | feat(planner): suggest function name on typo

Code Corner

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

转储运行中的异步任务栈

Databend 现在支持转储正在运行的异步任务栈。只需访问 http:///debug/async_tasks/dump 即可在浏览器中捕获它。

调用 async_backtrace::taskdump_tree 函数可以获取异步任务树(由 #[async_backtrace::framed] 收集)的相关信息。

    let tree =
        async_backtrace::taskdump_tree(req.map(|x| x.wait_for_running_tasks).unwrap_or(false));

任务分为常规任务和轮询任务(标记为 [POLLING])。记录每个任务的栈信息,并按栈深度排序输出到字符串。

    for mut tasks in [tasks, polling_tasks] {
        tasks.sort_by(|l, r| Ord::cmp(&l.stack_frames.len(), &r.stack_frames.len()));

        for item in tasks.into_iter().rev() {
            for frame in item.stack_frames {
                writeln!(output, "{}", frame).unwrap();
            }

            writeln!(output).unwrap();
        }
    }

如果你想要了解其工作原理,可以访问下面的链接:

  • PR | feat(query): try support dump running async task stack

与 Jupyter Notebook 集成的新方法

正如 Doc | Visualization Databend Data in Jupyter Notebook 所述,我们可以使用 Jupyter Notebook 探索 Databend 中的数据。

然而,通过 magic 技巧和 ipython-sql ,我们可以提供另一种交互方式。这种方式使得 SQL 查询看起来像是在 SQL cells 中运行,而不需要维护用于集成的 Python 样板代码。

安装依赖

pip install ipython-sql databend-sqlalchemy

与 Jupyter Notebook 协同

In [1]: %load_ext sql

In [2]: %%sql databend://{username}:{password}@{host_port_name}/{database_name}?secure=false
   ...: SHOW DATABASES;

In [3]: result = %%sql SELECT * FROM numbers(100);

In [4]: %matplotlib inline
   ...: df = result.DataFrame()
   ...: df.plot()

亮点

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

  • 通过选择预配置的 MySQL 驱动程序或添加 Databend JDBC 驱动程序,现在可以 *使用 DBeaver 连接到 Databend*。
  • Databend 现已提供与 Redash 的集成,帮助你洞见数据。文档 | Integrations - Redash
  • 掌握如何显示给定表中的列信息。 文档 | SHOW COLUMNS
  • Databend 现在支持 generate_series 和 range 表函数。
  • Databend 现在支持 ai_embedding_vector 函数,该函数返回由 OpenAI Embeddings API 生成的 1536 维 f32 向量。
  • Databend 增加了对DDL [CREATE | DROP | SHOW] SHARE ENDPOINT 的支持。

What's Up Next

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

收集来自 Sled 的度量信息

sled 是一种嵌入式数据库,启用 metrics 特性后可以导出度量信息。

Databend Meta Service 使用 sled 作为底层存储引擎。我们希望获取更多的度量信息来提高可观测性,并进一步优化。

Issue #7233 | make use of sled metrics feature for collect sled metrics

如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review 。或者,你可以点击 error with build info · Issue #9117 · datafuselabs/databend · GitHub 来挑选一个随机问题,祝好运!

Changelog

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

地址:Releases · datafuselabs/databend · GitHub

Contributors

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

Connect With Us

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

  • Databend Website
  • GitHub Discussions
  • Twitter
  • Slack Channel

你可能感兴趣的:(大数据)