Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模剖析需求保驾护航。自在且开源。立刻体验云服务: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
  • Paper | Eager Aggregation and Lazy Aggregation

Support All TPC-DS Queries

Databend 现已支撑全部TPC-DS查询!

TPC-DS 是一个面向决议计划支撑体系的包含多维度常规应用模型的决议计划支撑基准,它对决议计划支撑体系的几个普遍适用方面进行建模,包括查询和数据保护。TPC基准测验的意图是为职业用户供给相关、客观的功能数据。

假如你想要了解更多信息,请检查下面列出的资源。

  • PR | feat: support cte in dphyp
  • PR | chore(test): add tpcds to test

Code Corner

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

databend-driver – A driver for Databend in Rust

Databend 社区目前为 Databend 开发了 Rust Driver 。现在,你能够运用 Rust 来轻松连接 Databend 并履行 SQL 查询。

下面是一个运用该驱动程序的比如:

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-Exupry', '1943-04-06');";
conn.exec(sql_insert).await.unwrap();

欢迎测验并给咱们一些反应。假如你想要了解更多信息,请检查下面列出的资源。

  • Crates.io – databend-driver
  • Github – 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
  • Github – datafuselabs/askbend

亮点

以下是一些值得注意的事情,或许您能够找到感兴趣的内容。

  • 新增聚合函数:QUANTILE_DISCKURTOSISSKEWNESS
  • 阅览文档 Docs – AI Functions 了解关于 Databend 中 AI 函数的全部。

What’s Up Next

咱们始终对前沿技能和创新理念持开放情绪,欢迎您参加社区,为 Databend 注入活力。

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

目前,Databend 表结构默许状况下不可为空。因而,几乎全部测验表结构都不可为空。

咱们需要在 Databend 中添加一些新的测验用例,以掩盖表结构可为空的状况。

Issue #10969 | test: add some tests which table schemas are nullable

假如你对这个主题感兴趣,能够测验解决其间的部分问题或者参加评论和 PR review 。或者,你能够点击 link.databend.rs/i-m-feeling… 来选择一个随机问题,祝好运!

New Contributors

一起认识社区中的新伙伴,Databend 因你们而变得愈加夸姣。

  • @Dousir9 修正聚合函数在处理多列参数时的过错基数估量,#10884 。
  • @YimingQiao 为 KURTOSISSKEWNESS 补充了文档,并重新调整了条意图顺序 #10906 。
  • @jsoref 修正了若干拼写过错,改善了文档和代码质量,#10914 。
  • @leiwenfang 美化博客图片,#10917 。
  • @ArberSephirotheca 新增 to_unix_timestamp() 函数,#10949 。

Changelog

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

地址:github.com/datafuselab…

Contributors

非常感谢贡献者们在本周的杰出作业。

Databend 开源周报第 88 期

Connect With Us

Databend 是一款开源、弹性、低成本,根据目标存储也能够做实时剖析的新式数仓。期待您的关注,一起探究云原生数仓解决方案,打造新一代开源 Data Cloud。

  • Databend Website
  • GitHub Discussions
  • Twitter
  • Slack Channel