
本文字数:12168;估计阅读时间:31 分钟
审校:庄晓东(魏庄)
本文在公众号【ClickHouseInc】首发
Meetup活动
ClickHouse Shanghai User Group第1届 Meetup 讲师招募中,欢迎讲师在文末扫码报名!

发布概要
本次ClickHouse 24.5版本包含了19个新功能🎁、20项性能优化🛷、68个bug修复🐛
新贡献者
一如既往,我们对 24.5 版本的所有新贡献者表示特别欢迎!ClickHouse 的受欢迎程度在很大程度上归功于社区的贡献。看到这个社区不断壮大,总是让人感到谦卑。
以下是新贡献者的名字:
Alex Katsman, Alexey Petrunyaka, Ali, Caio Ricciuti, Danila Puzov, Evgeniy Leko, Francisco Javier Jurado Moreno, Gabriel Martinez, Grégoire Pineau, KenL, Leticia Webb, Mattias Naarttijärvi, Maxim Alexeev, Michael Stetsyuk, Pazitiff9, Sariel, TTPO100AJIEX, Tomer Shafir, Vinay Suryadevara, Volodya, Volodya Giro, Volodyachan, Xiaofei Hu, ZhiHong Zhang, Zimu Li, anonymous, joe09@foxmail.com, p1rattttt, pet74alex, qiangxuhui, sarielwxm, v01dxyz, vinay92-ch, woodlzm, zhou, zzyReal666
Dynamic 数据类型
由 Pavel Kruglov 贡献
本次发布引入了一种新的实验性数据类型,用于半结构化数据。Dynamic 数据类型类似于版本 24.1 中引入的 Variant 数据类型,但你无需预先指定接受的数据类型。
例如,如果我们想允许 String、UInt64 和 Array(String) 值,我们需要定义一个 Variant(String, UInt64, Array(String)) 列类型。而对于 Dynamic 数据类型,只需定义为 Dynamic,如果需要,还可以添加任何其他类型的值。
如果你想使用这种数据类型,你需要设置以下配置参数:
SET allow_experimental_dynamic_type = 1;
假设我们有一个名为 sensors.json 的文件,里面包含传感器读数。由于读数收集得不一致,这意味着我们有混合类型的值。
{"sensor_id": 1, "reading_time": "2024-06-05 12:00:00", "reading": 23.5}
{"sensor_id": 2, "reading_time": "2024-06-05 12:05:00", "reading": "OK"}
{"sensor_id": 3, "reading_time": "2024-06-05 12:10:00", "reading": 100}
{"sensor_id": 4, "reading_time": "2024-06-05 12:15:00", "reading": "62F"}
{"sensor_id": 5, "reading_time": "2024-06-05 12:20:00", "reading": 45.7}
{"sensor_id": 6, "reading_time": "2024-06-05 12:25:00", "reading": "ERROR"}
{"sensor_id": 7, "reading_time": "2024-06-05 12:30:00", "reading": "22.5C"}
这是 Dynamic 类型的一个很好的用例,所以让我们创建一个表:
CREATE TABLE sensor_readings (
sensor_id UInt32,
reading_time DateTime,
reading Dynamic
) ENGINE = MergeTree()
ORDER BY (sensor_id, reading_time);
现在,让我们运行下面导入数据的语句:
INSERT INTO sensor_readings
select * FROM 'sensors.json';
接下来,让我们查询表,返回所有列,以及存储在 reading 列中的值的具体类型:
SELECT
sensor_id,
reading_time,
reading,
dynamicType(reading) AS type
FROM sensor_readings
Query id: eb6bf220-1c08-42d5-8e9d-1f77247897c3
┌─sensor_id─┬────────reading_time─┬─reading─┬─type────┐
1. │ 1 │ 2024-06-05 12:00:00 │ 23.5 │ Float64 │
2. │ 2 │ 202

最低0.47元/天 解锁文章
2283

被折叠的 条评论
为什么被折叠?



