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 类型。
目前已支持的地理空间函数:
- Geometry 函数
- H3 函数
新支持子句: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…