---
title: 'Databend 产品月报（2024 年 9 月）'
date: 2024-10-17
slug: category-product/monthly-sep2024
cover_url: 'monthly-sep2024.png'
description: '很高兴为您带来 Databend 2024 年 9 月的最新更新、新功能和改进！我们希望这些增强功能对您有所帮助，并期待您的反馈'
tags: [databend, monthly]
category: Product
authors:
  - Eric
---

# Databend 产品月报（2024 年 9 月）

很高兴为您带来 Databend 2024 年 9 月的最新更新、新功能和改进！我们希望这些增强功能对您有所帮助，并期待您的反馈。

{/* truncate */}

## 新集成方式：字典

您现在可以通过定义字典的结构并指定外部数据源来创建字典。Databend 的字典功能提供了一种高效的方式，可以直接在 Databend 中集成并查询来自支持的外部数据源（目前支持 MySQL 和 Redis）。通过充当内存中的键值存储，字典能够快速访问外部数据，而不需要复杂的数据管道或传统的 ETL 过程。

以下示例创建了一个引用 MySQL orders 表的字典。完整示例请参阅：https://docs.databend.cn/guides/query/dictionary

```sql
CREATE DICTIONARY order_dict
(
    order_id INT,
    customer_name STRING,
    order_total INT
)
PRIMARY KEY order_id
SOURCE(MYSQL(
    host='mysql'
    port='3306'
    username='root'
    password='admin'
    db='dict'
    table='orders'
));
```

如果感兴趣，您可以跟随本教程进行实际操作体验：[使用字典访问 MySQL 和 Redis](https://docs.databend.cn/tutorials/integrate/access-mysql-and-redis)。

## SQL 变量

您现在可以使用 SQL 变量来存储和管理临时数据。在查询中使用变量时，您可以使用 \$ 进行值替换，或使用 IDENTIFIER 访问数据库对象。有关更多信息，请参阅 [SQL 变量](https://docs.databend.cn/sql/sql-reference/sql-variables/)。

您可以在 SQL 语句中通过 \$ 符号或 getvariable() 函数引用变量的值。两种方法都支持动态替换，即在运行时将变量的值直接嵌入查询中。

```sql
-- Set a variable to use as a filter value
SET VARIABLE threshold = 100;

-- Use the variable in a query with $
SELECT * FROM sales WHERE amount > $threshold;

-- Alternatively, use the getvariable() function
SELECT * FROM sales WHERE amount > getvariable('threshold');
```

IDENTIFIER 关键字允许您动态引用存储在变量中的数据库对象名。请注意，使用 IDENTIFIER 访问对象的功能在 BendSQL 中尚未支持。

```sql
-- Create a table with sales data
CREATE TABLE sales_data (region TEXT, sales_amount INT, month TEXT) AS 
SELECT 'North', 5000, 'January' UNION ALL
SELECT 'South', 3000, 'January';

select * from sales_data;

-- Set variables for the table name and column name
SET VARIABLE table_name = 'sales_data';
SET VARIABLE column_name = 'sales_amount';

-- Use IDENTIFIER to dynamically reference the table and column in the query
SELECT region, IDENTIFIER($column_name) 
FROM IDENTIFIER($table_name) 
WHERE IDENTIFIER($column_name) > 4000;
```

## 故障安全（Fail-Safe）

Databend 中的故障安全机制旨在从对象存储中恢复丢失或意外删除的数据。目前，故障安全仅支持 S3 兼容的存储类型。有关故障安全的更多信息，请参阅[故障安全](https://docs.databend.cn/guides/security/fail-safe/)。

```sql
CALL SYSTEM$FUSE_AMEND('<database_name>', '<table_name>');
```

要使故障安全（Fail-Safe）生效，必须启用存储桶版本控制。请注意，启用版本控制之前创建的数据无法通过此方法恢复。

## 流提示

流提示允许您通过提示来指定各种流配置选项，从而控制流的处理方式。

```sql
SELECT ...
FROM <stream_name> WITH (<hint1> = <value1>[, <hint2> = <value2>, ...])
```

可用的提示选项：

- **CONSUME**: 指定此查询是否会消费流。默认为 False。

- **MAX_BATCH_SIZE**: 定义从流中每批处理的最大行数。

有关这些提示和示例的更多信息，请参阅 [WITH 流提示](https://docs.databend.cn/sql/sql-commands/query-syntax/with-stream-hints/)。

## 新增 FUSE 引擎选项

我们引入了一个新的 FUSE 引擎选项 data_retention_period_in_hours，允许您指定保留表数据的小时数。有关更多信息，请参阅 [FUSE 引擎](https://docs.databend.cn/sql/sql-reference/table-engines/fuse/#fuse-engine-options)。

## Databend Cloud 体验优化

我们给 Databend Cloud 带来了一些新功能，准备好迎接更棒的体验吧！

### TASK_HISTORY 表函数

我们引入了一个新的表函数 [TASK_HISTORY](https://docs.databend.cn/sql/sql-functions/table-functions/task_histroy)，用于显示任务运行历史。

```sql
-- Retrieve all task history records
SELECT
 *
FROM TASK_HISTORY() order by scheduled_time;

-- Retrieve the task history records where the scheduled time range starts at '2022-01-02T01:12:00-07:00' and ends at '2022-01-02T01:12:30-07:00'.
SELECT *
  FROM TASK_HISTORY(
    SCHEDULED_TIME_RANGE_START=>TO_TIMESTAMP('2022-01-02T01:12:00-07:00'),
    SCHEDULED_TIME_RANGE_END=>TO_TIMESTAMP('2022-01-02T01:12:30-07:00'));
```

### 批量操作

您可以对计算集群执行批量操作，包括批量重启、批量暂停、批量恢复和批量删除。要进行批量操作，可以在计算集群列表中勾选所需操作的计算集群，然后点击省略号按钮选择所需的操作。

![](/img/blog/sync/2093c7aba8e8f1e94b95d170c9e64760.png)

### 新教程

- [**分析 AWS 账单**](https://docs.databend.cn/tutorials/databend-cloud/aws-billing)：在本教程中，我们将指导您完成导入 AWS 账单数据并使用 SQL 进行成本分析的过程。您将学习如何将 AWS 账单数据加载到 Databend Cloud 中，查询以找出主要的成本驱动因素，并深入了解您的 AWS 使用情况。

- [**从 Snowflake 迁移**](https://docs.databend.cn/tutorials/migrate/migrating-from-snowflake)：在本教程中，我们将指导您完成将数据从 Snowflake 导出为 Parquet 格式并存储到 Amazon S3 存储桶的过程，然后将其加载到 Databend Cloud 中。

### 授予财务人员访问权限

为了便利财务团队的工作，同时确保数据安全，您可以在 Databend Cloud 中创建一个名为 billing 的角色。

```
CREATE ROLE billing;
```

该角色将专门为仅提供与账单相关的信息访问而定制。有关更多信息，请参阅[授予财务人员访问权限](https://docs.databend.cn/guides/cloud/manage/costs/#%E6%8E%88%E4%BA%88%E8%B4%A2%E5%8A%A1%E4%BA%BA%E5%91%98%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90)。

![](/img/blog/sync/5e822449ce0a2aef0da9dab4708ec27e.png)
