---
title: Databend 开源周报第 94 期
description: 本周 Databend 新增对计算列的支持，另外，VACUUM TABLE 可以从表中永久删除历史数据文件来释放存储空间，有助于优化系统性能。
slug: category-weekly/databend-weekly-94
date: 2023-05-22
tags: [weekly]
category: Weekly

image: databend-weekly.png
contributors:
  - name: andylokandy
  - name: ariesdevil
  - name: b41sh
  - name: BohuTANG
  - name: Chasen-Zhang
  - name: dantengsky
  - name: Dousir9
  - name: drmingdrmer
  - name: everpcpc
  - name: flaneur2020
  - name: gitccl
  - name: hantmac
  - name: Jake-00
  - name: lichuang
  - name: PsiACE
  - name: RinChanNOWWW
  - name: silver-ymz
  - name: soyeric128
  - name: sundy-li
  - name: TCeason
  - name: wubx
  - name: youngsofun
  - name: zhang2014
  - name: ZhiHanZ
authors:
  - DatabendLabs
---

# Databend 开源周报 第 94 期

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

## What's On In Databend

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

### 计算列

计算列（Computed Columns）使用其他列的标量表达式计算得来。有两种类型的计算列：存储计算列和虚拟计算列。

存储计算列在按行插入数据时计算并存储结果值。可以使用以下 SQL 语法创建存储计算列：

```sql
column_name <type> AS (<expr>) STORED
```

虚拟计算列在查询时进行计算，不会存储结果值。可以使用以下 SQL 语法创建虚拟计算列：

```sql
column_name <type> AS (<expr>) VIRTUAL
```

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

- [PR | feat(query): Support Computed columns](https://github.com/databendlabs/databend/pull/11391)

### VACUUM TABLE

`VACUUM TABLE` 命令通过从表中永久删除历史数据文件来释放存储空间，有助于优化系统性能。删除的文件包括：

- 与表相关的快照及其关联的 segments 和 blocks。
- 孤立文件。在 Databend 中，孤立文件指不再与该表关联的快照、segments 和 blocks。孤立文件可能由各种操作和错误生成，例如在数据备份和还原期间，并且随着时间的推移会占用宝贵的磁盘空间并降低系统性能。

`VACUUM TABLE` 需要升级至 **企业版** 。如需了解升级信息，请联系 [Databend 团队](https://www.databend.cn/contact-us) 。

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

- [Docs | VACUUM TABLE](https://docs.databend.cn/sql/sql-commands/ddl/table/vacuum-table)

{/* truncate */}

## Code Corner

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

### 为 Python 绑定启用缓存

Databend 支持数据缓存和查询结果缓存，可以有效加速查询。Databend 的 Python 绑定也支持这些特性，尽管有一些细微的差别。

对于查询结果缓存，可以使用 SQL 语句进行设置，非常方便。

```sql
>>> from databend import SessionContext
>>> ctx = SessionContext()
>>> ctx.sql("set enable_query_result_cache = 1")
```

对于数据缓存，则可以通过环境变量来启用。

```python
>>> import os
>>> os.environ["CACHE_DATA_CACHE_STORAGE"] = "disk"
>>> from databend import SessionContext
>>> ctx = SessionContext()
>>> ctx.sql("select * from system.configs where name like '%data_cache%'")
┌────────────────────────────────────────────────────────────────────────────┐
│  group  │                   name                   │  value  │ description │
│  String │                  String                  │  String │    String   │
├─────────┼──────────────────────────────────────────┼─────────┼─────────────┤
│ 'cache' │ 'data_cache_storage'                     │ 'disk'  │ ''          │
│ 'cache' │ 'table_data_cache_population_queue_size' │ '65536' │ ''          │
└────────────────────────────────────────────────────────────────────────────┘
```

现在行动起来，将 Databend 集成到你的数据科学工作流中。

- [databend · PyPI](https://pypi.org/project/databend/)

## 亮点

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

- 阅读 [Docs | Date & Time - Formatting Date and Time](https://docs.databend.cn/sql/sql-reference/data-types/datetime) 以了解如何精确控制时间和日期的格式。
- 从 URI 加载数据时支持数据转换。
- 为通过 HTTP API 执行 `REPLACE INTO` 语句支持 `stage_attachment` 字段。
- 新增位图相关函数：`bitmap_contains`，`bitmap_has_all`，`bitmap_has_any`， `bitmap_or`, `bitmap_and`, `bitmap_xor`等。
- 支持整数除法运算符 `//` 。

## What's Up Next

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

### 从 Meta 请求中删除 `if_not_exists` 字段

在 `CreateIndexReq` / `CreateTableReq` 这类 Meta 请求中，我们使用 `if_not_exists` 字段来表示索引/表是否已经存在。

```rust
pub struct CreateIndexReq {
    pub if_not_exists: bool,
    pub name_ident: IndexNameIdent,
    pub meta: IndexMeta,
}
```

但是 `if_not_exists` 字段仅影响呈现给用户的结果，并不改变 Meta Services 的行为。

因此，对于 `SchemaApi` ，一个更好的设计方案可能是：提供 **Created** 或 **Exist** 状态代码以允许调用者确定是否需要生成错误消息。

[Issue #11456 | Moving if_not_exists out of meta request body](https://github.com/databendlabs/databend/issues/11456)

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

## New Contributors

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

- [@silver-ymz](https://github.com/silver-ymz) 为 Databend 新增了 5 个 bitmap 相关的标量函数，[#11487](https://github.com/databendlabs/databend/pull/11487) 。
- [@Jake-00](https://github.com/Jake-00) 帮忙修改 `SOUNDS LIKE` 语法的重复测试用例，[#11503](https://github.com/databendlabs/databend/pull/11503)。
- [@gitccl](https://github.com/gitccl) 为 Databend 新增了 5 个 bitmap 逻辑运算函数，并且修复了对空位图调用部分函数时的崩溃问题，[#11507](https://github.com/databendlabs/databend/pull/11507)。

## Changelog

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

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