Databend 产品月报(2024年11月)

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

计算集群访问控制

Databend Cloud 现在允许您通过为计算集群分配特定角色来管理计算集群访问,以便只有具有该角色的用户才能访问计算集群。需要注意的是,计算集群访问控制默认 启用。要启用访问控制,请在 工单 > 创建新工单 提交请求。

使用 Prometheus 跟踪指标

Databend Cloud(仅限 Business 和 Dedicated 用户)现已支持与 Prometheus 集成:您现在可以使用 Prometheus 实时监控查询性能、资源使用情况和系统指标。有关如何与 Prometheus 集成以及可用指标,请参阅 使用 Prometheus 跟踪指标

全新方式安装 BendSQL

你现在可以使用 Shell 脚本安装BendSQL。以下两种方式可供选择:

新增数据类型:GEOMETRY 和 GEOGRAPHY

Databend 新增对地理空间数据类型的基础支持,用于处理空间数据:

  • GEOMETRY: 使用平面坐标系(笛卡尔坐标),适用于二维几何对象。坐标以 (X, Y) 对表示,单位由关联的空间参考系统 (SRS) 决定。默认 SRID 为 0,但可以指定自定义 SRID。适合城市或省级分析等小范围测量,计算速度快且资源占用低,但在较大区域可能产生显著误差。
  • GEOGRAPHY: 使用基于纬度(-90° 至 90°)和经度(-180° 至 180°)的地理坐标系(球面坐标),遵循 WGS 84 标准(SRID 4326)。专为全球或大范围空间数据设计,在处理大距离时提供高精度,但计算复杂度和资源需求较高。必要时可以转换为 GEOMETRY 类型。

目前已支持的地理空间函数:

新支持子句:SETTINGS

新增 SETTINGS 子句: 用于配置特定设置,以影响其前置 SQL 语句的执行行为。

-- 允许 COPY INTO 使用最多 100 个线程进行并行处理:
SETTINGS (max_threads = 100) COPY INTO ...

新增 Map Lambda 函数

  • MAP_FILTER: 使用 lambda 表达式定义条件,从 map 中筛选出符合条件的键值对。

    SELECT MAP_FILTER({101:15, 102:8, 103:12, 104:5}, (product_id, stock) -> (stock < 10)) AS low_stock_products;

    ┌────────────────────┐
    │ low_stock_products │
    ├────────────────────┤
    │ {102:8,104:5} │
    └────────────────────┘

  • MAP_TRANSFORM_KEYS: 使用 lambda 表达式对 map 中的每个键进行转换。

    SELECT MAP_TRANSFORM_KEYS({101: 29.99, 102: 45.50, 103: 15.00}, (product_id, price) -> product_id + 1000) AS updated_product_ids;

    ┌────────────────────────────────────┐
    │ updated_product_ids │
    ├────────────────────────────────────┤
    │ {1101:29.99,1102:45.50,1103:15.00} │
    └────────────────────────────────────┘

  • MAP_TRANSFORM_VALUES: 使用 lambda 表达式对 map 中的每个值进行转换。

    SELECT MAP_TRANSFORM_VALUES({101: 100.0, 102: 150.0, 103: 200.0}, (product_id, price) -> price * 0.9) AS discounted_prices;

    ┌───────────────────────────────────┐
    │ discounted_prices │
    ├───────────────────────────────────┤
    │ {101:90.00,102:135.00,103:180.00} │
    └───────────────────────────────────┘

  • JSON_MAP_FILTER: 根据使用 lambda 表达式定义的条件,筛选 JSON 对象中的键值对。

    SELECT JSON_MAP_FILTER('{"status":"active", "user":"admin", "time":"2024-11-01"}'::VARIANT, (k, v) -> k = 'status') AS filtered_metadata;

    ┌─────────────────────┐
    │ filtered_metadata │
    ├─────────────────────┤
    │ {"status":"active"} │
    └─────────────────────┘

  • JSON_MAP_TRANSFORM_KEYS: 使用 lambda 表达式对 JSON 对象中的每个键进行转换。

    SELECT JSON_MAP_TRANSFORM_KEYS('{"name":"John", "role":"admin"}'::VARIANT, (k, v) -> CONCAT(k, '_v1')) AS versioned_metadata;

    ┌──────────────────────────────────────┐
    │ versioned_metadata │
    ├──────────────────────────────────────┤
    │ {"name_v1":"John","role_v1":"admin"} │
    └──────────────────────────────────────┘

  • JSON_MAP_TRANSFORM_VALUES: 使用 lambda 表达式对 JSON 对象中的每个值进行转换。

    SELECT JSON_MAP_TRANSFORM_VALUES('{"product1":"laptop", "product2":"phone"}'::VARIANT, (k, v) -> CONCAT(v, ' - Special Offer')) AS promo_descriptions;

    ┌──────────────────────────────────────────────────────────────────────────┐
    │ promo_descriptions │
    ├──────────────────────────────────────────────────────────────────────────┤
    │ {"product1":"laptop - Special Offer","product2":"phone - Special Offer"} │
    └──────────────────────────────────────────────────────────────────────────┘

新增日期函数

  • LAST_DAY: 根据提供的日期或时间戳,返回指定区间(周、月、季度或年)的最后一天。

    SELECT LAST_DAY(to_date('2024-11-13'), month) AS billing_date;

    ┌──────────────┐
    │ billing_date │
    ├──────────────┤
    │ 2024-11-30 │
    └──────────────┘

  • NEXT_DAY: 返回给定日期或时间戳之后,下一次出现的指定星期几的日期。

    SELECT NEXT_DAY(to_date('2024-11-13'), monday) AS next_monday;

    ┌─────────────┐
    │ next_monday │
    ├─────────────┤
    │ 2024-11-18 │
    └─────────────┘

  • PREVIOUS_DAY: 返回给定日期或时间戳之前,最近一次出现的指定星期几的日期。

    SELECT PREVIOUS_DAY(to_date('2024-11-13'), friday) AS last_friday;

    ┌─────────────┐
    │ last_friday │
    ├─────────────┤
    │ 2024-11-08 │
    └─────────────┘

新增 Trim 函数

  • LTRIM: 移除字符串开头(左侧)的特定字符。

    SELECT LTRIM('xxdatabend', 'xx');

    ┌───────────────────────────┐
    │ ltrim('xxdatabend', 'xx') │
    ├───────────────────────────┤
    │ databend │
    └───────────────────────────┘

  • RTRIM: 移除字符串末尾(右侧)的特定字符。

    SELECT RTRIM('databendxx', 'xx');

    ┌───────────────────────────┐
    │ rtrim('databendxx', 'xx') │
    ├───────────────────────────┤
    │ databend │
    └───────────────────────────┘

  • TRIM_BOTH: 移除字符串两端的特定字符。

    SELECT TRIM_BOTH('xxdatabendxx', 'xx');

    ┌─────────────────────────────────┐
    │ trim_both('xxdatabendxx', 'xx') │
    ├─────────────────────────────────┤
    │ databend │
    └─────────────────────────────────┘

  • TRIM_LEADING: 移除字符串开头(左侧)的特定字符。

    SELECT TRIM_LEADING('xxdatabend', 'xx');

    ┌──────────────────────────────────┐
    │ trim_leading('xxdatabend', 'xx') │
    ├──────────────────────────────────┤
    │ databend │
    └──────────────────────────────────┘

  • TRIM_TRAILING: 移除字符串末尾(右侧)的特定字符。

    SELECT TRIM_TRAILING('databendxx', 'xx');

    ┌───────────────────────────────────┐
    │ trim_trailing('databendxx', 'xx') │
    ├───────────────────────────────────┤
    │ databend │
    └───────────────────────────────────┘

关于 Databend

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

👨‍💻‍ Databend Cloud:databend.cn

📖 Databend 文档:docs.databend.cn/

💻 Wechat:Databend

✨ GitHub:github.com/databendlab...

相关推荐
见欢.11 分钟前
sqli-labs靶场第26-30关
数据库
ggdpzhk28 分钟前
idea连不上mysql数据库
数据库·mysql·intellij-idea
清酒伴风(面试准备中......)36 分钟前
面经自测——Redis分布式锁实现/Redis/用Redis实现消息队列的功能怎么做中的RedLock具体解决了什么问题
数据库·redis·分布式·面试·面经·实习·自测
简单哟1 小时前
mybatisplus 分库查询
数据库·spring boot·mybatis
是十一月末1 小时前
Mysql基本使用语法
数据库·sql·mysql
chian-ocean1 小时前
进程管理的关键:Linux进程状态与常用命令解析
linux·服务器·数据库
abments4 小时前
neo4j删除所有数据
数据库·neo4j
m0_748244834 小时前
Neo4j+Neovis+Vue3:前端连接数据库渲染
前端·数据库·neo4j
小扳7 小时前
Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:药品进销存信息管理系统(前后端源码 + 数据库 sql 脚本)
前端·数据库·spring boot·sql·mysql·毕业设计·课程设计