---
# System prepended metadata

title: Databend 开源周报第 88 期
tags: [weekly]

---

---
title: Databend 开源周报第 88 期
description: 
slug:  databend-weekly-88
date: 2023-04-10
tags: [weekly]
cover_url: databend-weekly.svg
image: databend-weekly.png
authors:
- datafuselabs
---

# Databend 开源周报 第 88 期

![databend weekly](https://i.imgur.com/DqRbPYS.png)

> 英文版移步：https://databend.rs/blog/2023-04-08-databend-weekly
> 
> [Databend](https://github.com/datafuselabs/databend) 是一款现代云数仓。专为弹性和高效设计，为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务：[https://app.databend.com](https://app.databend.com) 。

## What's On In Databend

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

### Support Eager Aggregation

Eager Aggregation 是一种查询优化技术，它可以部分地将 Group By 推到 Join 之前，减少了 Join 的输入行数，因此可能会生成更好的整体计划。

Databend 最近添加了对 Eager Aggregation 的支持。以下是它的一个示例：

```
Input:
                expression
                    |
         aggregate: SUM(x), SUM(y)
                    |
                   join
                    | \
                    | (y)
                    |
                   (x)
(1) Eager Groupby-Count:
                expression
                    |
     final aggregate: SUM(eager SUM(x)), SUM(y * cnt)
                    |
                    join
                    | \
                    | (y)
                    |
                    eager group-by: eager SUM(x), eager count: cnt
(2) Eager Split:
                expression
                    |
     final aggregate: SUM(eager SUM(x) * cnt2), SUM(eager SUM(y) * cnt1)
                    |
                    join
                    | \
                    | eager group-by: eager SUM(y), eager count: cnt2
                    |
                    eager group-by: eager SUM(x), eager count: cnt1
```

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

- [PR #10716 | feat(planner): support eager aggregation](https://github.com/datafuselabs/databend/pull/10716)
- [Paper | Eager Aggregation and Lazy Aggregation](https://www.vldb.org/conf/1995/P345.PDF)

### Support All TPC-DS Queries

Databend 现已支持所有TPC-DS查询！

TPC-DS 是一个面向决策支持系统的包含多维度常规应用模型的决策支持基准，它对决策支持系统的几个普遍适用方面进行建模，包括查询和数据维护。TPC基准测试的目的是为行业用户提供相关、客观的性能数据。

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

- [PR | feat: support cte in dphyp](https://github.com/datafuselabs/databend/pull/10910)
- [PR | chore(test): add tpcds to test](https://github.com/datafuselabs/databend/pull/10673)

## Code Corner

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

### databend-driver - A driver for Databend in Rust

Databend 社区目前为 Databend 开发了 Rust Driver 。现在，你可以使用 Rust 来轻松连接 Databend 并执行 SQL 查询。

下面是一个使用该驱动程序的例子：

```Rust
use databend_driver::new_connection;

let dsn = "databend://root:@localhost:8000/default?sslmode=disable";
let conn = new_connection(dsn).unwrap();

let sql_create = "CREATE TABLE books (
    title VARCHAR,
    author VARCHAR,
    date Date
);";
conn.exec(sql_create).await.unwrap();
let sql_insert = "INSERT INTO books VALUES ('The Little Prince', 'Antoine de Saint-Exupéry', '1943-04-06');";
conn.exec(sql_insert).await.unwrap();
```

欢迎尝试并给我们一些反馈。如果你想要了解更多信息，请查看下面列出的资源。

- [Crates.io - databend-driver](https://crates.io/crates/databend-driver)
- [Github - datafuselabs/databend-client](https://github.com/datafuselabs/databend-client)

### AskBend - SQL-based Knowledge Base Search and Completion

AskBend 是使用 Rust 编写的知识库问答系统，由 Databend 和 OpenAI 强力驱动，可以根据 Markdown 文件创建基于 SQL 的知识库。

AskBend 能够自动根据内容生成 embeddings ，可以帮助你轻松检索与问题最相关的信息。

下面是它的工作原理：

1. 从目录中读取并解析 Markdown 文件。
2. 将内容存储到 `askbend.doc` 表中。
3. 使用 Databend Cloud 内置的 AI 能力为内容计算 embeddings 。
4. 当用户提问时，使用 `ai_embedding_vector` SQL 函数为之生成查询 embedding 。
5. 使用 `cosine_distance` SQL 函数找出最相关的文档内容。
6. 利用 `ai_text_completion` SQL 函数，调用 OpenAI 的补全能力，生成合适的结果。
7. 以 Markdown 格式输出最终结果。

如果您想了解有关 AskBend 的更多信息或尝试现有的实时演示，请参阅下面列出的资源：

- [Live Demo - asking for Databend documentation](https://ask.databend.rs/)
- [Github - datafuselabs/askbend](https://github.com/datafuselabs/askbend)

## 亮点

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

- 新增聚合函数：`QUANTILE_DISC`、`KURTOSIS`、`SKEWNESS` 。
- 阅读文档 [Docs - AI Functions](https://databend.rs/doc/sql-functions/ai-functions/) 了解关于 Databend 中 AI 函数的一切。

## What's Up Next

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

### 为 Databend 增加针对可为空表结构的测试

目前，Databend 表结构默认情况下不可为空。因此，几乎所有测试表结构都不可为空。

我们需要在 Databend 中添加一些新的测试用例，以覆盖表结构可为空的情况。

[Issue #10969 | test: add some tests which table schemas are nullable](https://github.com/datafuselabs/databend/issues/10969)

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

## New Contributors

一起认识社区中的新伙伴，Databend 因你们而变得更加美好。

- [@Dousir9](https://github.com/Dousir9) 修复聚合函数在处理多列参数时的错误基数估计，[#10884](https://github.com/datafuselabs/databend/pull/10884) 。
- [@YimingQiao](https://github.com/YimingQiao) 为 `KURTOSIS` 和 `SKEWNESS` 补充了文档，并重新调整了条目的顺序 [#10906](https://github.com/datafuselabs/databend/pull/10906) 。
- [@jsoref](https://github.com/jsoref) 修复了若干拼写错误，改善了文档和代码质量，[#10914](https://github.com/datafuselabs/databend/pull/10914) 。
- [@leiwenfang](https://github.com/leiwenfang) 美化博客图片，[#10917](https://github.com/datafuselabs/databend/pull/10917) 。
- [@ArberSephirotheca](https://github.com/ArberSephirotheca) 新增 `to_unix_timestamp()` 函数，[#10949](https://github.com/datafuselabs/databend/pull/10949) 。

## Changelog

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

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

## Contributors

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

![](https://i.imgur.com/MgOUP1m.jpg)

## Connect With Us

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

- [Databend Website](https://databend.rs) 
- [GitHub Discussions](https://github.com/datafuselabs/databend/discussions)
- [Twitter](https://twitter.com/Datafuse_Labs)
- [Slack Channel](https://link.databend.rs/join-slack)