---
# System prepended metadata

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

---

---
title: Databend 开源周报第 110 期
description: 
slug:  databend-weekly-110
date: 2023-09-11
tags: [weekly]
cover_url: databend-weekly.svg
image: databend-weekly.png
contributors:
  - name: akoshchiy
  - name: andylokandy
  - name: ariesdevil
  - name: b41sh
  - name: BohuTANG
  - name: Chasen-Zhang
  - name: dantengsky
  - name: Dousir9
  - name: drmingdrmer
  - name: everpcpc
  - name: flaneur2020
  - name: JackTan25
  - name: lichuang
  - name: nange
  - name: PsiACE
  - name: RinChanNOWWW
  - name: soyeric128
  - name: sundy-li
  - name: TCeason
  - name: Xuanwo
  - name: xudong963
  - name: youngsofun
  - name: zhang2014
  - name: ZhiHanZ
authors:
  - databendlabs
---

![](https://hackmd.io/_uploads/B1qYLI3Ch.png)

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

## What's On In Databend

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

### 使用 BendSQL 管理 Stage 中的文件

Databend 推荐使用 PRESIGN 来将文件上传到 stage 中或者将文件下载到本地。PRESIGN 会生成一个带有时间限制的预签名 URL ，提供了一种安全高效的数据传输方式，并且减少文件传输的延迟。

![](https://hackmd.io/_uploads/SyWhbw30h.png)

对于 BendSQL 客户端的用户而言，可以利用 PUT 命令将文件上传到 Stage 并使用 GET 命令下载 Stage 中的文件。 

```SQL
root@localhost:8000/default> PUT fs:///books.parquet @~

PUT fs:///books.parquet @~

┌───────────────────────────────────────────────┐
│                 file                │  status │
│                String               │  String │
├─────────────────────────────────────┼─────────┤
│ /books.parquet                       │ SUCCESS │
└───────────────────────────────────────────────┘

GET @~/ fs:///fromStage/

┌─────────────────────────────────────────────────────────┐
│                      file                     │  status │
│                     String                    │  String │
├───────────────────────────────────────────────┼─────────┤
│ /fromStage/books.parquet                      │ SUCCESS │
└─────────────────────────────────────────────────────────┘
```


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

- [Docs | Staging Files](https://databend.rs/doc/load-data/stage/stage-files)

## Code Corner

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

### 在 Jupyter Notebook 中使用 Databend Python Binding

Databend 提供 Python Binding ，无需部署 Databend 实例即可使用，DataFrame 也可以自由转换到 Polars 和 Pandas 格式，方便和数据科学工具集成使用。

只需要执行下面的命令安装即可：

```
pip install databend
```

下面的程序展示了如何在 Jupyter Notebook 中使用 Databend Python Binding ，并利用 matplotlib 绘制条形图。

```python!
# Create a table in DataBend
ctx.sql("CREATE TABLE IF NOT EXISTS user (created_at Date, count Int32)")

# Create a table in DataBend
ctx.sql("CREATE TABLE IF NOT EXISTS user (created_at Date, count Int32)")

# Insert multiple rows of data into the table
ctx.sql("INSERT INTO user VALUES ('2022-04-01', 5), ('2022-04-01', 3), ('2022-04-03', 4), ('2022-04-03', 1), ('2022-04-04', 10)")

# Execute a query
result = ctx.sql("SELECT created_at as date, count(*) as count FROM user GROUP BY created_at")

# Display the query result
result.show()

# Import libraries for data visualization
import matplotlib.pyplot as plt

# Convert the query result to a Pandas DataFrame
df = result.to_pandas()

# Create a bar chart to visualize the data
df.plot.bar(x='date', y='count')
plt.show()
```

![](https://hackmd.io/_uploads/SkrifDnRh.png)

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

- [Docs | Tutorial-3: Integrate with Jupyter Notebook with Python Binding Library](https://databend.rs/doc/integrations/jupyter#tutorial-3-integrate-with-jupyter-notebook-with-python-binding-library)

## Highlights

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

- 实现对所有权模型的初步支持
- Hash Join 支持溢出（spill）
- Databend 中的列现在默认支持空值，阅读文档 [Docs | NULL Values and NOT NULL Constraint](https://databend.rs/doc/sql-reference/data-types/#null-values-and-not-null-constraint) 了解详细情况。
- 阅读文档 [Docs | databend-local](https://databend.rs/doc/sql-clients/databend-local) 掌握 Databend Local 模式。

## What's Up Next

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

### 支持使用 JavaScript 创建 UDF

[PR #12729 | feat: implement udf server in databend](https://github.com/datafuselabs/databend/pull/12729) 预计会在本周进行合并。这意味着 Databend 即将支持使用 Python 创建用户自定义函数。

```SQL
CREATE FUNCTION [IF NOT EXISTS] <udf_name> (<arg_type>, ...) RETURNS <return_type> LANGUAGE <language> HANDLER=<handler> ADDRESS=<udf_server_address>
```

我们期望在这个 PR 的基础上提供对多种语言 UDF 的支持，JavaScript 可能是值得尝试的选项之一。 

[Issue #12746 | Feature: support javascript udf ](https://github.com/datafuselabs/databend/issues/12746)

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

## Changelog

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

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

## Contributors

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

![](https://hackmd.io/_uploads/Skm7OIhRh.png)

## 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)