---
title: Databend 开源周报第 97 期
description: 本周新增对列位置的支持，本期的编程角介绍了 Databend 的拼写检查工作流。
slug: category-weekly/databend-weekly-97
date: 2023-06-12
tags: [weekly]
category: Weekly

image: databend-weekly.png
contributors:
  - name: andylokandy
  - name: b41sh
  - name: Chasen-Zhang
  - name: dantengsky
  - name: dependabot[bot]
  - name: Dousir9
  - name: drmingdrmer
  - name: JackTan25
  - name: PsiACE
  - name: RinChanNOWWW
  - name: soyeric128
  - name: sundy-li
  - name: tisonkun
  - name: Xuanwo
  - name: youngsofun
  - name: zhang2014
  - name: zhyass
authors:
  - DatabendLabs
---

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

## What's On In Databend

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

### 列位置

Databend 现在支持 `$N` 这一语法，用来表示列位置，例如：`$2` 意味着匹配第 2 列。Databend 也支持在 SQL 语句中将列位置和列名结合使用。下面是一个简单的例子：

```SQL
CREATE TABLE IF NOT EXISTS t1(a int, b varchar);
INSERT INTO t1 values (1, 'a'), (2, 'b');
select $1, $2, a, b from t1;

┌─────────────────────────────────┐
│   $1  │   $2   │   a   │    b   │
│ Int32 │ String │ Int32 │ String │
├───────┼────────┼───────┼────────┤
│     1 │ a      │     1 │ a      │
│     2 │ b      │     2 │ b      │
└─────────────────────────────────┘
```

我们正在为 `SELECT FROM @stage` 添加列位置支持。目前，你可以在 NDJSON 格式上尝试这一新特性。其他格式的支持还在进行中。

```sql
SELECT $1 FROM @my_stage (FILE_FORMAT=>'ndjson')

COPY INTO my_table FROM (SELECT $1 SELECT @my_stage t) FILE_FORMAT = (type = NDJSON)
```

需要注意的是，在 Databend 中使用 SELECT 语句处理 NDJSON 格式文件时，只允许使用 `$1` 表示整行数据，并且其数据类型为 Variant。

```SQL
-- Select the entire row using column position:
SELECT $1 FROM @my_stage (FILE_FORMAT=>'ndjson')

--Select a specific field named "a" using column position:
SELECT $1:a FROM @my_stage (FILE_FORMAT=>'ndjson')
```

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

- [Issue | Feature: support &lt;col_position&gt;](https://github.com/databendlabs/databend/issues/11585)
- [Issue | Feature: copy/select from stage by pos](https://github.com/databendlabs/databend/issues/11581)
- [PR | feat: support column position like $N](https://github.com/databendlabs/databend/pull/11672)
- [PR | feat: select from stage support NDJson](https://github.com/databendlabs/databend/pull/11701)

{/* truncate */}

## Code Corner

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

### 了解 Databend 的持续集成工作流 - 拼写检查

Databend 现在有一组非常复杂的持续集成工作流，用于代码审计、测试、benchmark 和发布。拼写检查无疑是其中最简单的部分。

与其他工作流一样，我们使用 `actions/checkout` 检出代码。

```yaml
- uses: actions/checkout@v4
  with:
    clean: 'true'
```

`typos-cli` 是一个用 Rust 编写的拼写检查工具，快速、准确，适用于像 Databend 这样的大型单一代码库，并且非常适用于针对 PR 的检查。

```yaml
- uses: baptiste0928/cargo-install@v1
  with:
    crate: typos-cli
    args: --locked
    cache-key: typos-check
```

使用 `baptiste0928/cargo-install` 可以轻松安装依赖，它几乎和 `cargo install` 保持一致，只是需要遵循 GitHub actions 的风格。另外，它还提供自动缓存支持，能够加速后续构建。

```yaml
- name: do typos check with typos-cli
  run: typos
```

需要注意的是，虽然 crate 的名字是 `typos-cli` ，但是对应二进制可执行程序的名字是 `typos` 。

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

- [Workflows | typos.yml](https://github.com/databendlabs/databend/blob/main/.github/workflows/typos.yml)

## 亮点

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

- 支持分布式 Top-N.
- 默认启用 `lazy_topn_threshold` ，并设置默认阈值为 1000。
- 为保障安全性，root 用户可以变更密码。
- 阅读 _[Blog | Databend X Tableau](https://www.databend.com/blog/2023-06-01-tableau)_ 了解如何使用 Tableau 连接 Databend 进行 BI 数据分析。
- 阅读 _[Docs | Integrating Databend as a Sink for Vector](https://docs.databend.cn/guides/load-data/load-db/vector/)_ 和 _[Docs | Analyzing Nginx Access Logs with Databend](https://docs.databend.cn/tutorials/load/automating-json-log-loading-with-vector)_ 理解如何集成 Vector 和 Databend。

## What's Up Next

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

### 在 REST API 中添加去重标签字段

为了确保数据摄取是幂等操作，Databend 使用去重标签来支持 DML 的去重。你可以在 [Docs | Setting Commands - SET_VAR](https://docs.databend.cn/sql/sql-commands/administration-cmds/set-var/) 中找到关于此功能的更多信息。

为了方便跨语言驱动程序集成，我们可以在 REST API 中添加去重标签字段。

[Issue #11710 | Feature: support to bring deduplication label on stage attachment api](https://github.com/databendlabs/databend/issues/11710)

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

## Changelog

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

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