写点什么

Databend 产品月报(2024 年 12 月)

作者:Databend
  • 2025-01-02
    福建
  • 本文字数:3858 字

    阅读完需:约 13 分钟

Databend 产品月报(2024年12月)

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

临时表

您现在可以创建一个临时表,该临时表在会话结束时会自动删除。临时表仅在创建它的会话中可见,并在会话结束时自动删除,所有数据都会被清除。要创建临时表,请使用 CREATE TEMP TABLE 命令。


CREATE [ OR REPLACE ] { TEMPORARY | TEMP } TABLE        [ IF NOT EXISTS ]        [ <database_name>. ]<table_name>       ...
复制代码

新数据类型:INTERVAL

INTERVAL 数据类型表示时间长度,允许精确操作和存储跨不同单位的时间间隔。


-- Create a table with one INTERVAL columnCREATE OR REPLACE TABLE intervals (duration INTERVAL);
-- Insert different types of INTERVAL dataINSERT INTO intervals VALUES ('1 year 2 months ago'), -- Natural language format with 'ago' (negative interval) ('1 year 2 months'), -- Natural language format without 'ago' (positive interval) ('1000000'), -- Positive numeric value interpreted as microseconds ('-1000000'); -- Negative numeric value interpreted as microseconds
-- Query the table to see the resultsSELECT * FROM intervals;
┌──────────────────────────┐│ duration │├──────────────────────────┤│ -1 year -2 months ││ 1 year 2 months ││ 0:00:01 ││ -1 month -1 day -0:00:01 │└──────────────────────────┘
复制代码

自定义聚合函数

现在您可以使用 Python 和 JavaScript 定义自己的聚合函数。


CREATE or REPLACE FUNCTION weighted_avg (INT, INT) STATE {sum INT, weight INT} RETURNS FLOATLANGUAGE javascript AS $$export function create_state() {    return {sum: 0, weight: 0};}export function accumulate(state, value, weight) {    state.sum += value * weight;    state.weight += weight;    return state;}export function retract(state, value, weight) {    state.sum -= value * weight;    state.weight -= weight;    return state;}export function merge(state1, state2) {    state1.sum += state2.sum;    state1.weight += state2.weight;    return state1;}export function finish(state) {    return state.sum / state.weight;}$$;
复制代码

新教程:使用 Vector 自动加载 JSON 日志

在本教程中,我们模拟在本地生成日志,使用 Vector 收集日志,将其存储在 S3 中,并使用计划任务自动将其提取到 Databend Cloud 中。请单击此处访问完整教程。


增强对 Parquet 文件处理的支持

我们引入了一些新参数,以便在处理 Parquet 文件时提供更大的灵活性和精确性。


CASE_SENSITIVE 参数


CASE_SENSITIVE 参数用来决定所查询的 Parquet 文件中的列名是否区分大小写:


  • CASE_SENSITIVE => false(默认): 列名不区分大小写。例如,b 和 B 被视为相同。

  • CASE_SENSITIVE => true:列名区分大小写,即只有完全匹配(包括大小写)才有效。例如,如果文件中的列名为 B,则查询 B 会成功,但如果列名为 b,则查询不会成功。


例如,如果在 Parquet 文件中有名为 MinTemp 的列,当 CASE_SENSITIVE 设置为 false 时,可以使用以下语句之一进行查询:


SELECT MinTemp FROM '@mystage/weather.parquet'(CASE_SENSITIVE=>false);
SELECT MINTEMP FROM '@mystage/weather.parquet'(CASE_SENSITIVE=>false);
SELECT mintemp FROM '@mystage/weather.parquet'(CASE_SENSITIVE=>false);
复制代码


当 CASE_SENSITIVE 设置为 true 时,必须使用文件中出现的准确列名:


SELECT `MinTemp` FROM '@mystage/weather.parquet'(CASE_SENSITIVE=>true);
复制代码


新增 COPY INTO 选项:COLUMN_MATCH_MODE


COLUMN_MATCH_MODE 决定 COPY INTO 过程中列名匹配是区分大小写还是不区分大小写(默认)。有关 COPY INTO 选项的完整列表,请参阅 copyOptions

二进制转换函数:TO_BINARY 和 TRY_TO_BINARY

TO_BINARY 将支持的数据类型(包括字符串、变量、位图、几何图形和地理位置)转换为二进制表示(十六进制格式)。


SELECT TO_BINARY('Databend');
┌───────────────────────┐│ to_binary('Databend') │├───────────────────────┤│ 4461746162656E64 │└───────────────────────┘
SELECT TO_BINARY(PARSE_JSON('{"key":"value", "number":123}')) AS binary_variant;
┌──────────────────────────────────────────────────────────────────────────┐│ binary_variant │├──────────────────────────────────────────────────────────────────────────┤│ 40000002100000031000000610000005200000026B65796E756D62657276616C7565507B │└──────────────────────────────────────────────────────────────────────────┘
SELECT TO_BINARY(TO_BITMAP('10,20,30')) AS binary_bitmap;
┌──────────────────────────────────────────────────────────────────────┐│ binary_bitmap │├──────────────────────────────────────────────────────────────────────┤│ 0100000000000000000000003A3000000100000000000200100000000A0014001E00 │└──────────────────────────────────────────────────────────────────────┘
SELECT TO_BINARY(ST_GEOMETRYFROMWKT('SRID=4326;POINT(1.0 2.0)')) AS binary_geometry;
┌────────────────────────────────────────────────────┐│ binary_geometry │├────────────────────────────────────────────────────┤│ 0101000020E6100000000000000000F03F0000000000000040 │└────────────────────────────────────────────────────┘
SELECT TO_BINARY(ST_GEOGRAPHYFROMEWKT('SRID=4326;POINT(-122.35 37.55)')) AS binary_geography;
┌────────────────────────────────────────────────────┐│ binary_geography │├────────────────────────────────────────────────────┤│ 0101000020E61000006666666666965EC06666666666C64240 │└────────────────────────────────────────────────────┘
复制代码


TRY_TO_BINARY 是 TO_BINARY 的增强版本,它将输入表达式转换为二进制值,如果转换失败则返回 NULL,而不是报错。


SELECT TRY_TO_BINARY(PARSE_JSON(NULL)) AS binary_variant_invalid_json;
┌─────────────────────────────┐│ binary_variant_invalid_json │├─────────────────────────────┤│ NULL │└─────────────────────────────┘
复制代码

字符串函数:JARO_WINKLER

JARO_WINKLER 计算两个字符串之间的 Jaro-Winkler 距离。它通常用于测量字符串之间的相似度,值范围从 0.0(完全不同)到 1.0(完全相同)。


SELECT JARO_WINKLER('databend', 'Databend') AS similarity;
┌────────────────────┐│ similarity │├────────────────────┤│ 0.9166666666666666 │└────────────────────┘
SELECT JARO_WINKLER('databend', 'database') AS similarity;
┌────────────┐│ similarity │├────────────┤│ 0.9 │└────────────┘
复制代码

Databend 集成到 DBeaver 24.3.1

Databend 现已在 DBeaver 24.3.1 中获得官方支持,作为 Analytical 数据库的新连接类型:


私有云管控平台

Databend 新增私有云管理平台,实现对私有云部署的 Databend 节点状态的监控和管理。


关于 Databend

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


👨‍💻‍ Databend Cloud:databend.cn


📖 Databend 文档:docs.databend.cn/


💻 Wechat:Databend


✨ GitHub:github.com/databendlab...

发布于: 刚刚阅读数: 4
用户头像

Databend

关注

还未添加个人签名 2022-08-25 加入

还未添加个人简介

评论

发布
暂无评论
Databend 产品月报(2024年12月)_Databend_InfoQ写作社区