跳转到主要内容
要使以下函数正常工作,服务器配置中必须指定获取所有嵌入式字典所需的路径和地址。这些字典会在首次调用其中任一函数时加载。如果无法加载参考列表,则会抛出异常。因此,除非预先完成配置,否则本节中的示例默认会在 ClickHouse Fiddle 以及快速发布版和生产部署中抛出异常。
有关创建参考列表的信息,请参见”字典”部分。

多个地理库

ClickHouse 支持同时使用多个可选的 geobase (区域层级) ,以便支持从不同视角看待某些区域属于哪个国家。 ‘clickhouse-server’ 配置中指定了区域层级文件: <path_to_regions_hierarchy_file>/opt/geo/regions_hierarchy.txt</path_to_regions_hierarchy_file> 除该文件外,它还会在相邻位置查找文件名中带有 _ 符号并追加任意后缀的文件 (位于文件扩展名之前) 。 例如,如果存在,它也会找到文件 /opt/geo/regions_hierarchy_ua.txt。其中,ua 称为字典键。对于没有后缀的字典,键为空字符串。 所有字典都会在运行时重新加载 (按 builtin_dictionaries_reload_interval 配置参数定义的间隔,每隔若干秒加载一次;默认情况下为每小时一次) 。不过,可用字典的列表只会在服务器启动时确定一次。 所有用于处理区域的函数在末尾都有一个可选参数——字典键。它称为 geobase。 示例:

regionToName

接受一个区域 ID 和 geobase,返回对应语言的区域名称字符串。如果指定 ID 的区域不存在,则返回空字符串。 语法
参数 返回值
  • geobase 指定的对应语言的区域名称。String
  • 否则为空字符串。
示例
Query
Response

regionToCity

接受 geobase 中的区域 ID。如果该区域是某个城市或某个城市的一部分,则返回对应城市的区域 ID。否则返回 0。 语法
参数 返回值
  • 对应城市的区域 ID (如果存在) 。UInt32
  • 0,如果不存在对应城市。
示例
Query
Response

regionToArea

将区域转换为 area (geobase 中的类型 5) 。除此之外,该函数与 ‘regionToCity’ 相同。 语法
参数 返回值
  • 如果存在,则返回对应区域的区域 ID。UInt32
  • 如果不存在,则返回 0。
示例
Query
Response

regionToDistrict

将区域转换为联邦区 (geobase 中的类型 4) 。除此之外,该函数与 ‘regionToCity’ 完全相同。 语法
参数 返回值
  • 对应城市的区域 ID (如果存在) 。UInt32
  • 如果不存在,则返回 0。
示例
Query
Response

regionToCountry

将区域转换为国家 (geobase 中的类型 3) 。除此之外,此函数与 ‘regionToCity’ 完全相同。 语法
参数 返回值
  • 如果存在,则返回对应国家的区域 ID。UInt32
  • 如果不存在,则返回 0。
示例
Query
Response

regionToContinent

将区域转换为大洲 (即 geobase 中的类型 1) 。除此之外,此函数与 ‘regionToCity’ 相同。 语法
参数 返回值
  • 对应大洲的区域 ID (如果存在) 。UInt32
  • 如果不存在,则返回 0。
示例
Query
Response

regionToTopContinent

返回该地区在层级结构中所属的最高层大洲。 语法
参数 返回值
  • 最高层级大洲的标识符 (即沿区域层级向上追溯后得到的大洲) 。UInt32
  • 如果不存在,则为 0。
示例
Query
Response

regionToPopulation

获取某个区域的人口数量。人口数据可以记录在包含 geobase 的文件中。请参见“字典”一节。如果该区域未记录人口数据,则返回 0。在 geobase 中,人口数据可能记录在子区域中,而父区域中则没有记录。 语法
参数 返回值
  • 该区域的人口。UInt32
  • 如果不存在,则为 0。
示例
Query
Response

regionIn

判断 lhs 区域是否属于 rhs 区域。如果属于,则返回值为 1 的 UInt8 数值;如果不属于,则返回 0。 语法
参数
  • lhs — geobase 中的 lhs 区域 ID。UInt32
  • rhs — geobase 中的 rhs 区域 ID。UInt32
  • geobase — 字典键。参见多个地理库String。可选。
返回值
  • 如果属于,则返回 1。UInt8
  • 如果不属于,则返回 0。
实现细节 这种关系是自反的——任何区域也属于它自身。 示例
Query
Response

regionHierarchy

接受一个 UInt32 数值,即 geobase 中的区域 ID。返回一个区域 ID 数组,其中包含传入的区域以及事件链中向上的所有父区域。 语法
参数 返回值
  • 返回包含传入区域及其沿层级链上的所有父区域的区域 ID 的数组。Array(UInt32)。
示例
Query
Response
最后修改于 2026年7月2日