博客

Databend 产品月报(2025 年 3 月)

avatarEric3月 31, 2025
Databend 产品月报(2025 年 3 月)

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

仪表盘共享

您现在可以在 Databend Cloud 上与组织内的所有人或特定个人共享您的仪表盘,并选择以下权限级别之一来控制他人对其的访问方式:

  • 只读(Read Only):查看仪表盘,但无法进行更改或运行查询以获取最新结果。
  • 执行(Execute):运行查询以获取最新结果或与仪表盘交互,但无法修改它。
  • 编辑(Edit):修改仪表盘,包括更改查询和仪表盘如何反映结果。

img

使用来自另一个表的值更新表

UPDATE
命令已增强,允许使用来自另一个表的值更新表。

UPDATE bookstore
SET book_name = book_updates.new_book_name
FROM book_updates
WHERE bookstore.book_id = book_updates.book_id;

最小日期和时间戳调整

我们已更新日期和时间戳数据类型的最小值:

  • 最小日期:
    0001-01-01
  • 最小时间戳:
    0001-01-01 00:00:00.00000

对用户名称和角色名称的限制

Databend 不允许 SQL 用户或角色名称包含以下特殊字符:

  • 单引号(')
  • 双引号(")
  • 退格符(\b)
  • 换页符(\f)

使用
enable_expand_roles
管理角色继承

enable_expand_roles
设置确定
SHOW_GRANTS
函数是否显示来自角色的继承权限。默认设置为
1
,它递归地扩展所有权限;当设置为
0
时,它仅显示直接权限和角色授予。例如:

enable_expand_roles
=1 时:

SELECT grants FROM show_grants('role', 'a') ORDER BY object_id;

┌──────────────────────────────────────────────────────┐
│ grants │
├──────────────────────────────────────────────────────┤
GRANT SELECT ON 'default'.'default'.'t1' TO ROLE `a`
GRANT SELECT ON 'default'.'default'.'t2' TO ROLE `a`
└──────────────────────────────────────────────────────┘

enable_expand_roles
=0 时:

SELECT grants FROM show_grants('role', 'a') ORDER BY object_id;

┌──────────────────────────────────────────────────────┐
│ grants │
├──────────────────────────────────────────────────────┤
GRANT SELECT ON 'default'.'default'.'t1' TO ROLE `a`
GRANT ROLE b to ROLE `a`
GRANT ROLE public to ROLE `a`
└──────────────────────────────────────────────────────┘

日志级别配置更新

databend-query.toml
配置文件中的
[log.file]
[log.stderr]
设置现在使用
env_logger
语法(error, warn, info, debug, trace, off),默认设置为
warn,databend_=info,openraft=info
,以实现灵活的日志控制。

Iceberg 表函数

Databend 引入了以下表函数用于查询 Iceberg 元数据,允许用户高效地检查快照和清单:

  • ICEBERG_MANIFEST:返回 Iceberg 表的清单文件的元数据,包括文件路径、分区详细信息和快照关联。
SELECT * FROM ICEBERG_MANIFEST('tpcds', 'catalog_returns');

╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ content │ path │ length │ partition_spec │ added_snapshot │ added_data_fil │ existing_data_ │ deleted_data_ │ added_delete_ │ existing_dele │ deleted_delet │ partition_sum │
│ Int32 │ String │ Int64 │ _id │ _id │ es_count │ files_count │ files_count │ files_count │ te_files_coun │ e_files_count │ maries │
│ │ │ │ Int32 │ Nullable(Int64 │ Nullable(Int32 │ Nullable(Int32 │ Nullable(Int3 │ Nullable(Int3 │ t │ Nullable(Int3 │ Array(Nullabl │
│ │ │ │ │ )))2)2) │ Nullable(Int3 │ 2) │ e(Tuple(Nulla │
│ │ │ │ │ │ │ │ │ │ 2) │ │ ble(Boolean),
│ │ │ │ │ │ │ │ │ │ │ │ Nullable(Bool
│ │ │ │ │ │ │ │ │ │ │ │ ean), String,
│ │ │ │ │ │ │ │ │ │ │ │ String)))
├─────────┼────────────────┼────────┼────────────────┼────────────────┼────────────────┼────────────────┼───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤
0 │ s3://warehouse │ 9241 │ 0 │ 75657674165904 │ 2 │ 0 │ 0 │ 2 │ 0 │ 0 │ [] │
│ │ /catalog_retur │ │ │ 11866 │ │ │ │ │ │ │ │
│ │ ns/metadata/fa │ │ │ │ │ │ │ │ │ │ │
│ │ 1ea4d5-a382-49 │ │ │ │ │ │ │ │ │ │ │
│ │ 7a-9f22-1acb9a │ │ │ │ │ │ │ │ │ │ │
│ │ 74a346-m0.avro │ │ │ │ │ │ │ │ │ │ │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
  • ICEBERG_SNAPSHOT:返回 Iceberg 表的快照元数据,包括数据更改、操作信息和摘要统计信息。
SELECT * FROM ICEBERG_SNAPSHOT('tpcds', 'catalog_returns');

╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ committed_at │ snapshot_id │ parent_id │ operation │ manifest_list │ summary │
├────────────────────────────┼─────────────────────┼───────────┼───────────┼──────────────────────────────────────────────────────┼─────────────────────────────────────────────────────┤
2025-03-12 23:18:26.62600075657674165904118660 │ append │ s3://warehouse/catalog_returns/metadata/snap-7565767 │ {'spark.app.id':'local-1741821433430','added-data-f │
│ │ │ │ │ 416590411866-1-fa1ea4d5-a382-497a-9f22-1acb9a74a346. │ iles':'2','added-records':'144067','total-equality-
│ │ │ │ │ avro │ deletes':'0','changed-partition-count':'1','total-r │
│ │ │ │ │ │ ecords':'144067','total-files-size':'7679811','tota │
│ │ │ │ │ │ l-data-files':'2','added-files-size':'7679811','tot │
│ │ │ │ │ │ al-delete-files':'0','total-position-deletes':'0'} │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

[新功能预览] 表函数 fuse_vacuum2()

fuse_vacuum2()
表函数根据
data_retention_time_in_days
的设置,帮助用户清理 Fuse 表中过时的数据,回收存储空间并提升查询性能。

SET data_retention_time_in_days = 0;

SELECT * FROM fuse_vacuum2('<database>', '<table>');

[新功能预览] Hilbert Clustering 优化

Databend 引入 基于范围的分区 来增强 Hilbert Clustering,使数据组织更加高效。它通过 对 Clustering Key 进行采样分配范围分区 ID 以及 计算 Hilbert 索引,从而实现更好的数据裁剪(pruning)和聚类,提高查询性能。

img

分享本篇文章

订阅我们的新闻简报

及时了解功能发布、产品规划、支持服务和云服务的最新信息!