---
title: Databend 开源周报第 106 期
description: 'Databend 新增数据脱敏能力。通过设定脱敏策略（Masking Policy），可以控制敏感数据的显示或访问方式，从而在允许授权用户与数据交互的同时保护机密性。'
slug: category-weekly/databend-weekly-106
date: 2023-08-14
tags: [weekly]
category: Weekly
cover_url: 'weekly/weekly-106.jpg'
image: 'weekly/weekly-106.jpg'
contributors:
  - name: akoshchiy
  - name: b41sh
  - name: BohuTANG
  - name: Chasen-Zhang
  - name: dantengsky
  - name: Dousir9
  - name: drmingdrmer
  - name: everpcpc
  - name: flaneur2020
  - name: hantmac
  - name: JackTan25
  - name: lichuang
  - name: nange
  - name: parkma99
  - name: PsiACE
  - name: RinChanNOWWW
  - name: SkyFan2002
  - name: soyeric128
  - name: sundy-li
  - name: TCeason
  - name: wubx
  - name: Xuanwo
  - name: xudong963
  - name: zhyass
authors:
  - DatabendLabs
---

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

## What's On In Databend

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

### 数据脱敏

Databend 新增数据脱敏能力。通过设定脱敏策略（Masking Policy），可以控制敏感数据的显示或访问方式，从而在允许授权用户与数据交互的同时保护机密性。

```sql
-- Create a masking policy
CREATE MASKING POLICY email_mask
AS
  (val string)
  RETURNS string ->
  CASE
  WHEN current_role() IN ('MANAGERS') THEN
    val
  ELSE
    '*********'
  END
  COMMENT = 'hide_email';

-- Associate the masking policy with the 'email' column
ALTER TABLE user_info MODIFY COLUMN email SET MASKING POLICY email_mask;
```

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

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

- [Docs | MASKING POLICY](https://docs.databend.cn/sql/sql-commands/ddl/mask-policy/)

{/* truncate */}

## Code Corner

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

### 为 Python Binding 支持 `show()` 方法

在 PySpark、DuckDB、DataFusion 的 Python 绑定/包中均支持了 `show()` 方法，用于输出前 n 行结果。

Databend 最近也通过 PyO3 为 Python Binding 实现了相应的支持，代码片段如下。

```rust
    #[pyo3(signature = (num=20))]
    fn show(&self, py: Python, num: usize) -> PyResult<()> {
        let blocks = self.collect(py)?;
        let bs = self.get_box();
        let result = blocks.box_render(num, bs.bs_max_width, bs.bs_max_width);

        // Note that println! does not print to the Python debug console and is not visible in notebooks for instance
        let print = py.import("builtins")?.getattr("print")?;
        print.call1((result,))?;
        Ok(())
    }
```

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

- [Issue #12255 | For Python compatibility, please add show() method](https://github.com/databendlabs/databend/issues/12255)

## Highlights

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

- 支持分布式 `REPLACE INTO` 。
- 支持用于计算向量 2 范数（欧几里得范数）的算符 `<->` 。
- 新增地理位置函数：`h3_to_center_child` / `h3_exact_edge_length_m` / `h3_exact_edge_length_km` / `h3_exact_edge_length_rads` / `h3_num_hexagons` / `h3_line` / `h3_distance` / `h3_hex_ring` `h3_get_unidirectional_edge`。
- 阅读文档 [Docs | ALTER TABLE COLUMN](https://docs.databend.cn/sql/sql-commands/ddl/table/alter-table-column) 了解如何利用添加、转换、重命名、更改或删除列等操作修改表。

## What's Up Next

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

### 为 Hive Catalog 添加存储后端支持

此前 Databend 的 Hive Catalog 实现缺反自己的存储后端配置，只能回滚到 Default Catalog 对应的存储后端。导致当 Hive MetaStore 指向的存储服务与 Default Catalog 配置不一致时无法读取数据。

现在计划为 Hive Catalog 引入 CONNECTION 选项，允许对存储后端进行配置，解决异构存储下的 Hive 加速问题。

```sql
CREATE CATALOG hive_ctl
TYPE=HIVE
HMS_ADDRESS='127.0.0.1:9083'
CONNECTION=(
    URL='s3://warehouse/'
    AWS_KEY_ID='admin'
    AWS_SECRET_KEY='password'
    ENDPOINT_URL='http://localhost:9000'
);
```

[Issue #12407 | Feature: Add storage support for Hive catalog](https://github.com/databendlabs/databend/issues/12407)

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

## New Contributors

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

- [@parkma99](https://github.com/parkma99) 修复了 `CREATE ROLE` 时的解析问题，[#12341](https://github.com/databendlabs/databend/pull/12341) 。

## Changelog

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

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