Перейти к основному содержимому
Перейти к основному содержимому

Функции для работы со встроенными словарями

примечание

Чтобы функции ниже работали, в конфигурации сервера должны быть указаны пути и адреса для получения всех встроенных словарей. Словари загружаются при первом вызове любой из этих функций. Если список ссылок не может быть загружен, выбрасывается исключение.

Таким образом, примеры, приведенные в этом разделе, будут вызывать исключение в ClickHouse Fiddle и в развертываниях быстрого релиза и производства по умолчанию, если не будут предварительно настроены.

Для получения информации о создании списков ссылок смотрите раздел "Словари".

Несколько геобаз

ClickHouse поддерживает работу с несколькими альтернативными геобазами (региональными иерархиями) одновременно, чтобы поддерживать различные взгляды на то, к каким странам принадлежат определенные регионы.

Конфигурация '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, или раз в час по умолчанию). Однако список доступных словарей определяется один раз, когда сервер запускается.

Все функции для работы с регионами имеют необязательный аргумент в конце – ключ словаря. Он обозначается как геобаза.

Пример:

regionToName

Принимает ID региона и геобазу и возвращает строку с названием региона на соответствующем языке. Если региона с указанным ID не существует, возвращается пустая строка.

Синтаксис

Параметры

Возвращаемое значение

  • Название региона на соответствующем языке, указанном в geobase. String.
  • В противном случае пустая строка.

Пример

Запрос:

Результат:

regionToCity

Принимает ID региона из геобазы. Если этот регион является городом или частью города, он возвращает ID региона для соответствующего города. В противном случае возвращает 0.

Синтаксис

Параметры

Возвращаемое значение

  • ID региона для соответствующего города, если он существует. UInt32.
  • 0, если такого нет.

Пример

Запрос:

Результат:

regionToArea

Преобразует регион в область (тип 5 в геобазе). Во всех остальных отношениях эта функция такая же, как 'regionToCity'.

Синтаксис

Параметры

Возвращаемое значение

  • ID региона для соответствующей области, если он существует. UInt32.
  • 0, если такого нет.

Пример

Запрос:

Результат:

regionToDistrict

Преобразует регион в федеральный округ (тип 4 в геобазе). Во всех остальных отношениях эта функция такая же, как 'regionToCity'.

Синтаксис

Параметры

Возвращаемое значение

  • ID региона для соответствующего округа, если он существует. UInt32.
  • 0, если такого нет.

Пример

Запрос:

Результат:

regionToCountry

Преобразует регион в страну (тип 3 в геобазе). Во всех остальных отношениях эта функция такая же, как 'regionToCity'.

Синтаксис

Параметры

Возвращаемое значение

  • ID региона для соответствующей страны, если он существует. UInt32.
  • 0, если такого нет.

Пример

Запрос:

Результат:

regionToContinent

Преобразует регион в континент (тип 1 в геобазе). Во всех остальных отношениях эта функция такая же, как 'regionToCity'.

Синтаксис

Параметры

Возвращаемое значение

  • ID региона для соответствующего континента, если он существует. UInt32.
  • 0, если такого нет.

Пример

Запрос:

Результат:

regionToTopContinent

Находит наивысший континент в иерархии для региона.

Синтаксис

Параметры

Возвращаемое значение

  • Идентификатор континента верхнего уровня (последнего, когда вы поднимаетесь по иерархии регионов). UInt32.
  • 0, если такого нет.

Пример

Запрос:

Результат:

regionToPopulation

Получает население региона. Население может быть записано в файлы с геобазой. Смотрите раздел "Словари". Если население не записано для региона, возвращает 0. В геобазе население может быть записано для дочерних регионов, но не для родительских регионов.

Синтаксис

Параметры

Возвращаемое значение

  • Население региона. UInt32.
  • 0, если такого нет.

Пример

Запрос:

Результат:

regionIn

Проверяет, принадлежит ли регион lhs региону rhs. Возвращает число UInt8, равное 1, если принадлежит, или 0, если не принадлежит.

Синтаксис

Параметры

Возвращаемое значение

  • 1, если принадлежит. UInt8.
  • 0, если не принадлежит.

Подробности реализации

Отношение является рефлексивным – любой регион также принадлежит самому себе.

Пример

Запрос:

Результат:

regionHierarchy

Принимает число UInt32 – ID региона из геобазы. Возвращает массив ID регионов, состоящий из переданного региона и всех родителей вдоль цепочки.

Синтаксис

Параметры

Возвращаемое значение

  • Массив ID регионов, состоящий из переданного региона и всех родителей вдоль цепочки. Array(UInt32).

Пример

Запрос:

Результат: