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...

相关推荐
一 乐2 小时前
民宿|基于java的民宿推荐系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·源码
美林数据Tempodata3 小时前
大模型驱动数据分析革新:美林数据智能问数解决方案破局传统 BI 痛点
数据库·人工智能·数据分析·大模型·智能问数
野槐3 小时前
node.js连接mysql写接口(一)
数据库·mysql
Zzzone6834 小时前
PostgreSQL日常维护
数据库·postgresql
chxii4 小时前
1.13使用 Node.js 操作 SQLite
数据库·sqlite·node.js
冰刀画的圈4 小时前
修改Oracle编码
数据库·oracle
这个胖子不太裤4 小时前
Django(自用)
数据库·django·sqlite
麻辣清汤4 小时前
MySQL 索引类型及其必要性与优点
数据库·mysql
2501_915374355 小时前
Neo4j 图数据库安装教程(2024最新版)—— Windows / Linux / macOS 全平台指南
数据库·windows·neo4j
it-搬运工6 小时前
3.图数据Neo4j - CQL的使用
数据库·neo4j