跳转到主内容
跳转到主内容

嵌入式(geobase)字典

Not supported in ClickHouse Cloud
注意

本页面不适用于 ClickHouse Cloud。此处介绍的功能在 ClickHouse Cloud 服务中不可用。 有关更多信息,请参阅 ClickHouse 的 Cloud Compatibility 指南。

ClickHouse 包含一个用于处理地理库(geobase)的内置功能。

这使你可以:

  • 使用区域的 ID 获取其在所需语言中的名称。
  • 使用区域的 ID 获取城市、地区、联邦区、国家或大洲的 ID。
  • 检查某个区域是否属于另一个区域。
  • 获取父区域链。

所有函数都支持“translocality”(跨地域性),即能够同时采用关于区域归属的不同视角。更多信息,参阅 “Functions for working with web analytics dictionaries” 一节。

在默认安装包中,内部字典是禁用的。 要启用它们,请在服务器配置文件中取消注释参数 path_to_regions_hierarchy_filepath_to_regions_names_files

地理库从文本文件加载。

regions_hierarchy*.txt 文件放入 path_to_regions_hierarchy_file 目录。该配置参数必须包含指向 regions_hierarchy.txt 文件(默认区域层级)的路径,其余文件(如 regions_hierarchy_ua.txt)必须位于同一目录中。

regions_names_*.txt 文件放入 path_to_regions_names_files 目录。

你也可以自行创建这些文件。文件格式如下:

regions_hierarchy*.txt:TabSeparated(无表头),列:

  • 区域 ID(UInt32
  • 父区域 ID(UInt32
  • 区域类型(UInt8):1 - 大洲,3 - 国家,4 - 联邦区,5 - 地区,6 - 城市;其他类型没有取值
  • 人口(UInt32)— 可选列

regions_names_*.txt:TabSeparated(无表头),列:

  • 区域 ID(UInt32
  • 区域名称(String)— 不能包含制表符或换行符,即使是转义后的。

在 RAM 中使用扁平数组结构进行存储。出于这个原因,ID 不应超过一百万。

字典可以在不重启服务器的情况下更新。但是,可用字典的集合不会发生变化。 在更新时,会检查文件的修改时间。如果文件发生变化,则更新字典。 检查变更的时间间隔通过 builtin_dictionaries_reload_interval 参数进行配置。 字典更新(首次使用时的加载除外)不会阻塞查询。在更新期间,查询会使用旧版本的字典。如果在更新过程中发生错误,该错误会被写入服务器日志中,查询将继续使用旧版本的字典。

我们建议定期使用地理库更新字典。在执行更新时,生成新文件并将其写入单独的位置。当一切准备就绪后,将它们重命名为服务器正在使用的文件名。

还有一些用于处理操作系统标识符和搜索引擎的函数,但不建议使用。