ClickHouse 24.5 版本发布说明
发布概要 本次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 由 Pavel Kruglov 贡献 本次发布引入了一种新的实验性数据类型,用于半结构化数据。Dynamic 数据类型类似于版本 24.1 中引入的 Variant 数据类型,但你无需预先指定接受的数据类型。 例如,如果我们想允许 String、UInt64 和 Array(String) 值,我们需要定义一个 Variant(String, UInt64, Array(String)) 列类型。而对于 Dynamic 数据类型,只需定义为 Dynamic,如果需要,还可以添加任何其他类型的值。 如果你想使用这种数据类型,你需要设置以下配置参数:
假设我们有一个名为 sensors.json 的文件,里面包含传感器读数。由于读数收集得不一致,这意味着我们有混合类型的值。
这是 Dynamic 类型的一个很好的用例,所以让我们创建一个表:
现在,让我们运行下面导入数据的语句:
接下来,让我们查询表,返回所有列,以及存储在 reading 列中的值的具体类型:
如果我们只想检索使用特定类型的行,我们可以使用 dynamicElement 函数或等效的 dot 语法:
如果我们想计算 reading 列在类型为 Int64 或 Float64 时的平均值,我们可以编写以下查询:
Dynamic 类型是将半结构化列添加到 ClickHouse 的一个长期项目的一部分。 由 Dan Ivanik 贡献 从 23.8 版本开始,只要存档文件在本地文件系统中,就可以读取存档文件(例如 zip/tar)中的数据。在 24.5 版本中,该功能扩展到了存储在 S3 上的存档文件。 让我们通过查询一些包含 CSV 文件的 ZIP 文件来看看它是如何工作的。我们先编写一个查询,列出嵌入的 CSV 文件:
因此,我们有 31 个文件可以使用。接下来,让我们计算这些文件中共有多少行数据:
每个文件大约有 100 万行数据。让我们来看一些行数据。我们可以使用 DESCRIBE 子句来了解数据的结构:
最后,让我们查看其中的几行数据:
由 Maksim Alekseev 贡 |
版权声明:本文为 clickhouse 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。