Чтобы приведенные ниже функции работали, в конфигурации сервера должны быть указаны пути и адреса для получения всех встроенных словарей. Словари загружаются при первом вызове любой из этих функций. Если словари не удается загрузить, будет сгенерировано исключение.Поэтому примеры, приведенные в этом разделе, по умолчанию сгенерируют исключение в ClickHouse Fiddle, а также в развертываниях quick release и production, если их предварительно не настроить.
Несколько геобаз
<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, или раз в час по умолчанию). Однако список доступных словарей определяется только один раз — при запуске сервера.
Все функции для работы с регионами имеют необязательный аргумент в конце — ключ словаря. Он называется геобазой.
Пример:
regionToName
Принимает идентификатор региона и геобазу и возвращает строку с названием региона на соответствующем языке. Если региона с указанным идентификатором не существует, возвращается пустая строка. Синтаксисid— идентификатор региона из геобазы. UInt32.geobase— ключ словаря. См. раздел Несколько геобаз. String. Необязательный.
- Название региона на языке, соответствующем значению
geobase. String. - В противном случае — пустая строка.
Query
Response
regionToCity
Принимает идентификатор региона из геобазы. Если этот регион является городом или частью города, возвращает идентификатор соответствующего города. В противном случае возвращает 0. Синтаксисid— идентификатор региона из геобазы. UInt32.geobase— ключ словаря. См. раздел Несколько геобаз. String. Необязательный параметр.
- идентификатор региона для соответствующего города, если он существует. UInt32.
- 0, если такого региона нет.
Query
Response
regionToArea
Преобразует регион в область (тип 5 в геобазе). Во всех остальных отношениях эта функция совпадает с ‘regionToCity’. Синтаксисid— идентификатор региона из геобазы. UInt32.geobase— ключ словаря. См. Несколько геобаз. String. Необязательный.
- Идентификатор региона для соответствующей области, если такой существует. UInt32.
- 0, если такого нет.
Query
Response
regionToDistrict
Преобразует регион в федеральный округ (тип 4 в геобазе). Во всём остальном эта функция аналогична ‘regionToCity’. Синтаксисid— идентификатор региона из геобазы. UInt32.geobase— ключ словаря. См. Несколько геобаз. String. Необязательный.
- Идентификатор региона для соответствующего города, если он существует. UInt32.
- 0, если такого региона нет.
Query
Response
regionToCountry
Преобразует регион в страну (тип 3 в геобазе). Во всём остальном эта функция аналогична ‘regionToCity’. Синтаксисid— идентификатор региона из геобазы. UInt32.geobase— ключ словаря. См. раздел Несколько геобаз. String. Необязательный.
- Идентификатор региона для соответствующей страны, если такой существует. UInt32.
- 0, если такого нет.
Query
Response
regionToContinent
Преобразует регион в континент (тип 1 в геобазе). Во всех остальных отношениях эта функция совпадает с ‘regionToCity’. Синтаксисid— идентификатор региона из геобазы. UInt32.geobase— ключ словаря. См. Несколько геобаз. String. Необязательный параметр.
- Идентификатор региона для соответствующего континента, если он существует. UInt32.
- 0, если такого континента нет.
Query
Response
regionToTopContinent
Возвращает континент верхнего уровня в иерархии для региона. Синтаксисid— идентификатор региона из геобазы. UInt32.geobase— ключ словаря. См. Несколько геобаз. String. Необязательный параметр.
- Идентификатор континента верхнего уровня (последнего при подъеме по иерархии регионов). UInt32.
- 0, если такого нет.
Query
Response
regionToPopulation
Возвращает численность населения региона. Численность населения может быть указана в файлах геобазы. См. раздел “Словари”. Если для региона численность населения не указана, возвращается 0. В геобазе численность населения может быть указана для дочерних регионов, но не для родительских. Синтаксисid— идентификатор региона из геобазы. UInt32.geobase— ключ словаря. См. Несколько геобаз. String. Необязательно.
- Численность населения региона. UInt32.
- 0, если данные отсутствуют.
Query
Response
regionIn
Проверяет, входит ли регионlhs в регион rhs. Возвращает число типа UInt8: 1, если входит, и 0, если не входит.
Синтаксис
lhs— идентификатор региона lhs из геобазы. UInt32.rhs— идентификатор региона rhs из геобазы. UInt32.geobase— ключ словаря. См. Несколько геобаз. String. Необязательный параметр.
- 1, если принадлежит. UInt8.
- 0, если не принадлежит.
Query
Response
regionHierarchy
Принимает число типа UInt32 — идентификатор региона из геобазы. Возвращает массив идентификаторов регионов, состоящий из переданного региона и всех вышестоящих регионов по цепочке. Синтаксисid— идентификатор региона из геобазы. UInt32.geobase— ключ словаря. См. Несколько геобаз. String. Необязательный параметр.
- Массив идентификаторов регионов, включающий переданный регион и всех его родителей по цепочке. Array(UInt32).
Query
Response