博客

Databend 产品月报(2024 年 11 月)

avatarEric12月 3, 2024
Databend 产品月报(2024 年 11 月)

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

计算集群访问控制

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

使用 Prometheus 跟踪指标

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

全新方式安装 BendSQL

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

  • 安装到用户的主目录(~/.bendsql):

    curl -fsSL https://repo.databend.com/install/bendsql.sh | bash

    B E N D S Q L
    Installer

    --------------------------------------------------------------------------------
    Website: https://databend.com
    Docs: https://docs.databend.com
    Github: https://github.com/databendlabs/bendsql
    --------------------------------------------------------------------------------

    >>> We'll be installing BendSQL via a pre-built archive at https://repo.databend.com/bendsql/v0.22.2/
    >>> Ready to proceed? (y/n)
    >>> Please enter y or n.
    >>> y
    --------------------------------------------------------------------------------
    >>> Downloading BendSQL via https://repo.databend.com/bendsql/v0.22.2/bendsql-aarch64-apple-darwin.tar.gz ✓
    >>> Unpacking archive to /Users/eric/.bendsql ... ✓
    >>> Adding BendSQL path to /Users/eric/.zprofile ✓
    >>> Adding BendSQL path to /Users/eric/.profile ✓
    >>> Install succeeded! 🚀
    >>> To start BendSQL:
    bendsql --help
    >>> More information at https://github.com/databendlabs/bendsql
  • 安装到指定目录(例如,/usr/local):

    curl -fsSL https://repo.databend.com/install/bendsql.sh | bash -s -- -y --prefix /usr/local
    B E N D S Q L
    Installer
    --------------------------------------------------------------------------------
    Website: https://databend.com
    Docs: https://docs.databend.com
    Github: https://github.com/databendlabs/bendsql
    --------------------------------------------------------------------------------
    >>> Downloading BendSQL via https://repo.databend.com/bendsql/v0.22.2/bendsql-aarch64-apple-darwin.tar.gz ✓
    >>> Unpacking archive to /usr/local ... ✓
    >>> Install succeeded! 🚀
    >>> To start BendSQL:
    bendsql --help
    >>> More information at https://github.com/databendlabs/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 │
    └───────────────────────────────────┘
分享本篇文章

订阅我们的新闻简报

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