Функции для работы со словарями
Для словарей, создаваемых с помощью DDL‑запросов, параметр dict_name должен быть полностью указан в формате <database>.<dict_name>. В противном случае используется текущая база данных.
Информацию о подключении и настройке словарей см. в разделе Словари.
dictGet, dictGetOrDefault, dictGetOrNull
Извлекает значения из словаря.
Аргументы
dict_name— имя словаря. Строковый литерал.attr_names— имя столбца словаря, строковый литерал, или кортеж имён столбцов — Tuple(строковый литерал).id_expr— значение ключа. Выражение, возвращающее значение типа ключа словаря или значение типа Tuple в зависимости от конфигурации словаря.default_value_expr— значения, возвращаемые, если в словаре нет строки с ключомid_expr. Expression или Tuple(Expression), возвращающее значение (или значения) в типах данных, настроенных для атрибутаattr_names.
Возвращаемое значение
-
Если ClickHouse успешно приводит атрибут к типу данных атрибута, функции возвращают значение атрибута словаря, соответствующее
id_expr. -
Если в словаре отсутствует ключ, соответствующий
id_expr, то:dictGetвозвращает содержимое элемента<null_value>, указанного для атрибута в конфигурации словаря.dictGetOrDefaultвозвращает значение, переданное в параметреdefault_value_expr.dictGetOrNullвозвращаетNULL, если ключ не найден в словаре.
ClickHouse выдает исключение, если не может распарсить значение атрибута или значение не соответствует типу данных атрибута.
Пример словаря с простым ключом
Создайте текстовый файл ext-dict-test.csv со следующим содержимым:
Первый столбец — id, второй столбец — c1.
Настройте словарь:
Выполните запрос:
Пример словаря со сложным ключом
Создайте текстовый файл ext-dict-mult.csv со следующим содержимым:
Первый столбец — id, второй — c1, третий — c2.
Настройте словарь:
Выполните запрос:
Пример словаря с диапазонным ключом
Входная таблица:
Создайте словарь:
Выполните запрос:
Результат:
См. также
dictHas
Проверяет, присутствует ли ключ в словаре.
Аргументы
dict_name— имя словаря. Строковый литерал.id_expr— значение ключа. Выражение, возвращающее значение типа ключа словаря или значение типа Tuple в зависимости от конфигурации словаря.
Возвращаемое значение
dictGetHierarchy
Создаёт массив, содержащий всех родителей заданного ключа в иерархическом словаре.
Синтаксис
Аргументы
dict_name— Имя словаря. Строковый литерал.key— Значение ключа. Выражение, возвращающее значение типа UInt64.
Возвращаемое значение
- Родительские элементы для ключа. Array(UInt64).
dictIsIn
Проверяет наличие предка ключа во всей иерархической цепочке словаря.
Аргументы
dict_name— имя словаря. Строковый литерал.child_id_expr— ключ, который требуется проверить. Выражение, возвращающее значение типа UInt64.ancestor_id_expr— предполагаемый предок ключаchild_id_expr. Выражение, возвращающее значение типа UInt64.
Возвращаемое значение
- 0, если
child_id_exprне является потомкомancestor_id_expr. UInt8. - 1, если
child_id_exprявляется потомкомancestor_id_exprили еслиchild_id_exprравенancestor_id_expr. UInt8.
dictGetChildren
Возвращает дочерние элементы первого уровня в виде массива индексов. Является обратной операцией к dictGetHierarchy.
Синтаксис
Аргументы
dict_name— имя словаря. Строковый литерал.key— значение ключа. Выражение, возвращающее значение типа UInt64.
Возвращаемые значения
Пример
Рассмотрим иерархический словарь:
Дочерние элементы первого уровня:
dictGetDescendant
Возвращает всех потомков так, как если бы функция dictGetChildren была рекурсивно применена level раз.
Синтаксис
Аргументы
dict_name— имя словаря. Строковый литерал.key— значение ключа. Выражение, возвращающее значение типа UInt64.level— уровень иерархии. Еслиlevel = 0, возвращает всех потомков до последнего уровня. UInt8.
Возвращаемые значения
Пример
Рассмотрим иерархический словарь:
Все потомки:
Потомки первого уровня:
dictGetAll
Извлекает значения атрибутов всех узлов, соответствующих каждому ключу в словаре на основе дерева регулярных выражений.
Помимо возврата значений типа Array(T) вместо T, эта функция ведёт себя аналогично dictGet.
Синтаксис
Аргументы
dict_name— имя словаря. Строковый литерал.attr_names— имя столбца словаря — строковый литерал — или кортеж имён столбцов — Tuple(строковый литерал).id_expr— значение ключа. Выражение, возвращающее массив значений типа ключа словаря или значение типа Tuple в зависимости от конфигурации словаря.limit— максимальная длина для каждого возвращаемого массива значений. При усечении дочерние узлы имеют приоритет над родительскими, а в остальных случаях соблюдается определённый порядок списка для словаря regexp tree. Если параметр не указан, длина массива не ограничена.
Возвращаемое значение
-
Если ClickHouse успешно интерпретирует значение атрибута в его тип данных, определённый в словаре, возвращается массив значений атрибутов словаря, которые соответствуют
id_exprдля каждого атрибута, указанного вattr_names. -
Если в словаре нет ключа, соответствующего
id_expr, возвращается пустой массив.
ClickHouse выбрасывает исключение, если не может интерпретировать значение атрибута или значение не соответствует типу данных атрибута.
Пример
Рассмотрим следующий словарь regexp tree:
Получить все совпадающие значения:
Получите до двух совпадающих значений:
dictGetKeys
Возвращает ключ(и) словаря, значение указанного атрибута которых равно заданному значению. Является обратной функцией к dictGet по одному атрибуту.
Синтаксис
Аргументы
dict_name— имя словаря. Строковый литерал.attr_name— имя столбца атрибута словаря. Строковый литерал.value_expr— значение для сравнения с атрибутом. Выражение, которое может быть приведено к типу данных атрибута.
Возвращаемое значение
-
Для словарей с простым ключом: массив ключей, для которых значение атрибута равно
value_expr. Array(T), гдеT— тип данных ключа словаря. -
Для словарей с составным ключом: массив кортежей ключей, для которых значение атрибута равно
value_expr. Array(Tuple(T1, T2, ...)), где каждыйTupleсодержит столбцы ключа словаря в заданном порядке. -
Если в словаре нет атрибута, соответствующего
value_expr, возвращается пустой массив.
ClickHouse генерирует исключение, если не удаётся интерпретировать значение атрибута или привести его к типу данных атрибута.
Пример
Рассмотрим следующий словарь:
Теперь получим все идентификаторы с уровнем high:
Используйте параметр max_reverse_dictionary_lookup_cache_size_bytes, чтобы ограничить размер кеша обратного поиска для каждого запроса, используемого dictGetKeys. Кеш хранит сериализованные кортежи ключей для каждого значения атрибута, чтобы избежать повторного сканирования словаря в рамках одного и того же запроса. Кеш не сохраняется между запросами. Когда лимит достигается, записи вытесняются по принципу LRU. Это наиболее эффективно для больших словарей, когда входные данные имеют низкую кардинальность и рабочий набор помещается в кеш. Установите значение 0, чтобы отключить кеширование.
Кроме того, если уникальные значения столбца attr_name помещаются в кеш, то в большинстве случаев выполнение функции должно быть линейным по количеству входных строк плюс небольшое количество сканирований словаря.
Другие функции
ClickHouse поддерживает специализированные функции, которые преобразуют значения атрибутов словаря в определённый тип данных независимо от конфигурации словаря.
Функции:
dictGetInt8,dictGetInt16,dictGetInt32,dictGetInt64dictGetUInt8,dictGetUInt16,dictGetUInt32,dictGetUInt64dictGetFloat32,dictGetFloat64dictGetDatedictGetDateTimedictGetUUIDdictGetStringdictGetIPv4,dictGetIPv6
Все эти функции имеют модификацию OrDefault. Например, dictGetDateOrDefault.
Синтаксис:
Аргументы
dict_name— Имя словаря. Строковый литерал.attr_name— Имя столбца словаря. Строковый литерал.id_expr— Значение ключа. Выражение, возвращающее значение типа UInt64 или Tuple в зависимости от конфигурации словаря.default_value_expr— Значение, возвращаемое, если в словаре нет строки с ключомid_expr. Выражение, возвращающее значение в тип данных, настроенный для атрибутаattr_name.
Возвращаемое значение
-
Если ClickHouse успешно разбирает атрибут в тип данных атрибута, функции возвращают значение атрибута словаря, соответствующее
id_expr. -
Если запрошенный
id_exprотсутствует в словаре, то:dictGet[Type]возвращает содержимое элемента<null_value>, указанного для атрибута в конфигурации словаря.dictGet[Type]OrDefaultвозвращает значение, переданное в параметреdefault_value_expr.
ClickHouse генерирует исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры словарей
Примеры в этом разделе используют следующие словари. Вы можете создать их в ClickHouse, чтобы выполнить примеры для функций, описанных ниже.
Пример словаря для функций dictGet<T> и dictGet<T>OrDefault
Пример словаря для dictGetAll
Создайте таблицу для хранения данных словаря regexp tree:
Вставьте данные в таблицу:
Создайте словарь regexp tree:
Пример словаря с ключом-диапазоном
Создайте исходную таблицу:
Вставьте данные в исходную таблицу:
Создайте словарь:
Пример словаря со сложным ключом
Создайте исходную таблицу:
Вставьте данные в исходную таблицу:
Создайте словарь:
Пример иерархического словаря
Создайте исходную таблицу:
Вставьте данные в исходную таблицу:
Создайте словарь:
dictGet
Появилась в версии: v18.16
Извлекает значения из словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_names— Имя столбца словаря или кортеж имен столбцов.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее UInt64/Tuple(T).UInt64илиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr, если ключ найден.
Если ключ не найден, возвращает содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
Примеры
Получение одного атрибута
Несколько атрибутов
dictGetAll
Появилась в версии: v23.5
Преобразует значение атрибута словаря в тип данных All независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse выбрасывает исключение, если не может распарсить значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetChildren
Появилась в версии: v21.4
Возвращает дочерние элементы первого уровня в виде массива индексов. Является обратным преобразованием к dictGetHierarchy.
Синтаксис
Аргументы
dict_name— имя словаря.Stringkey— ключ, который требуется проверить.const String
Возвращаемое значение
Возвращает потомков первого уровня для ключа. Array(UInt64)
Примеры
Получение потомков первого уровня словаря
dictGetDate
Введена в версии: v1.1
Преобразует значение атрибута словаря к типу данных Date независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает содержимое элемента <null_value>, заданного для атрибута в конфигурации словаря.
ClickHouse выбрасывает исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetDateOrDefault
Добавлено в: v1.1
Преобразует значение атрибута словаря в тип данных Date независимо от настроек словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение-кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение или значения, возвращаемые, если словарь не содержит строки с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, соответствующее id_expr,
в противном случае — значение, переданное в параметре default_value_expr.
ClickHouse генерирует исключение, если не может распарсить значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetDateTime
Появилась в версии: v1.1
Преобразует значение атрибута словаря в тип данных DateTime независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае — содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse генерирует исключение, если не может распарсить значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetDateTimeOrDefault
Добавлена в версии: v1.1
Преобразует значение атрибута словаря к типу данных DateTime независимо от конфигурации словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение кортежа (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение или значения, возвращаемые, если словарь не содержит строки с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
иначе возвращает значение, переданное в параметре default_value_expr.
ClickHouse генерирует исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetDescendants
Добавлено в: v21.4
Возвращает всех потомков так, как если бы функция dictGetChildren была рекурсивно применена level раз.
Синтаксис
Аргументы
dict_name— имя словаря.Stringkey— ключ, который нужно проверить.const Stringlevel— уровень иерархии. Еслиlevel = 0, возвращает всех потомков до конца.UInt8
Возвращаемое значение
Возвращает потомков для ключа. Array(UInt64)
Примеры
Получение дочерних элементов словаря первого уровня
dictGetFloat32
Появилась в версии: v1.1
Преобразует значение атрибута словаря к типу данных Float32 независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение-кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, соответствующее id_expr,
в противном случае возвращает содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse генерирует исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetFloat32OrDefault
Добавлена в версии: v1.1
Преобразует значение атрибута словаря к типу данных Float32 независимо от конфигурации словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение или значения, возвращаемые, если в словаре нет строки с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, соответствующее id_expr,
в противном случае возвращает значение, переданное в параметре default_value_expr.
ClickHouse генерирует исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetFloat64
Впервые представлена в версии v1.1
Преобразует значение атрибута словаря к типу данных Float64 независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя атрибута словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж значений (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse выбрасывает исключение, если не может распарсить значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetFloat64OrDefault
Впервые представлена в: v1.1
Преобразует значение атрибута словаря к типу данных Float64 независимо от конфигурации словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение кортежа (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение или значения, которые возвращаются, если словарь не содержит строку с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, соответствующее id_expr,
в противном случае возвращает значение, переданное в параметре default_value_expr.
ClickHouse генерирует исключение, если не удаётся разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetHierarchy
Появилось в версии: v1.1
Создаёт массив, содержащий всех родителей ключа в иерархическом словаре.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringkey— Значение ключа.const String
Возвращаемое значение
Возвращает родителей для ключа. Array(UInt64)
Примеры
Получение иерархии для ключа
dictGetIPv4
Впервые появилась в версии v1.1
Преобразует значение атрибута словаря в тип данных IPv4 независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение кортежа (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, соответствующее id_expr,
иначе возвращает содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse генерирует исключение, если не удаётся разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetIPv4OrDefault
Впервые появилась в: v23.1
Преобразует значение атрибута словаря к типу данных IPv4 независимо от конфигурации словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение или значения, возвращаемые, если словарь не содержит строки с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, соответствующее id_expr,
в противном случае возвращает значение, переданное через параметр default_value_expr.
ClickHouse генерирует исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetIPv6
Добавлена в версии: v23.1
Преобразует значение атрибута словаря в тип данных IPv6 независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение кортежа (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, соответствующее id_expr,
иначе возвращает содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse генерирует исключение, если не удаётся распарсить значение атрибута или оно не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetIPv6OrDefault
Введена в версии: v23.1
Преобразует значение атрибута словаря к типу данных IPv6 независимо от конфигурации словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение кортежа (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение или значения, возвращаемые, если словарь не содержит строку с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
иначе возвращает значение, переданное в параметре default_value_expr.
ClickHouse выбрасывает исключение, если не может распарсить значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetInt16
Добавлено в: v1.1
Преобразует значение атрибута словаря к типу данных Int16 независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse выбрасывает исключение, если не удаётся разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetInt16OrDefault
Впервые представлена в: v1.1
Преобразует значение атрибута словаря к типу данных Int16 независимо от конфигурации словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— имя словаря.Stringattr_name— имя столбца словаря.StringилиTuple(String)id_expr— значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж значений (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— значение или значения, возвращаемые, если словарь не содержит строки с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, соответствующее id_expr,
в противном случае возвращает значение, переданное в параметре default_value_expr.
ClickHouse генерирует исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetInt32
Добавлена в версии: v1.1
Преобразует значение атрибута словаря к типу данных Int32 независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
иначе возвращает содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse генерирует исключение, если не может интерпретировать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetInt32OrDefault
Введён в версии: v1.1
Преобразует значение атрибута словаря к типу данных Int32 независимо от конфигурации словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение-кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение (значения), возвращаемое, если словарь не содержит строки с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, соответствующее id_expr,
в противном случае возвращает значение, переданное в параметре default_value_expr.
ClickHouse вызывает исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetInt64
Добавлена в: v1.1
Преобразует значение атрибута словаря к типу данных Int64 независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— имя словаря.Stringattr_name— имя столбца словаря.StringилиTuple(String)id_expr— значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает значение элемента <null_value>, заданного для атрибута в конфигурации словаря.
ClickHouse генерирует исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetInt64OrDefault
Добавлена в версии: v1.1
Преобразует значение атрибута словаря к типу данных Int64 независимо от конфигурации словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение или значения, которые возвращаются, если словарь не содержит строки с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает значение, переданное в параметре default_value_expr.
ClickHouse генерирует исключение, если не может разобрать значение атрибута или если это значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetInt8
Введена в версии: v1.1
Преобразует значение атрибута словаря в тип данных Int8 независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение-кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse генерирует исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetInt8OrDefault
Введена в версии v1.1
Преобразует значение атрибута словаря к типу данных Int8 независимо от конфигурации словаря или возвращает переданное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение ключевого типа словаря или значение кортежа (зависит от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение или значения, возвращаемые, если словарь не содержит строки с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает значение, переданное в параметре default_value_expr.
ClickHouse выбрасывает исключение, если не может интерпретировать значение атрибута или значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetKeys
Введена в версии v25.12
Возвращает ключ(и) словаря, для которых значение атрибута равно указанному. Это обратная операция к функции dictGet для одного атрибута.
Используйте SETTING max_reverse_dictionary_lookup_cache_size_bytes, чтобы ограничить размер кэша обратного поиска для каждого запроса, используемого в dictGetKeys.
Кэш хранит сериализованные кортежи ключей для каждого значения атрибута, чтобы избежать повторного сканирования словаря в рамках одного запроса.
Кэш не сохраняется между запросами. При достижении лимита записи вытесняются по алгоритму LRU.
Функция наиболее эффективна для больших словарей, когда входные данные имеют низкую кардинальность, а рабочий набор помещается в кэш. Установите 0, чтобы отключить кэширование.
Синтаксис
Аргументы
dict_name— имя словаря.Stringattr_name— атрибут для сравнения.Stringvalue_expr— значение для сравнения с атрибутом.Expression
Возвращаемое значение
Для словарей с одним ключом: массив ключей, атрибут которых равен value_expr. Для словарей с составным ключом: массив кортежей ключей, атрибут которых равен value_expr. Если в словаре нет атрибута, соответствующего значению value_expr, возвращается пустой массив. ClickHouse генерирует исключение, если не может разобрать значение атрибута или если значение не может быть преобразовано к типу данных атрибута.
Примеры
Пример использования
dictGetOrDefault
Добавлена в версии v18.16
Извлекает значения из словаря, возвращая значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_names— Имя столбца словаря или кортеж имён столбцов.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее UInt64/Tuple(T).UInt64илиTuple(T)default_value— Значение по умолчанию, которое возвращается, если ключ не найден. Тип должен соответствовать типу данных атрибута.
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr, если ключ найден.
Если ключ не найден, возвращает переданное значение default_value.
Примеры
Получение значения с заданным значением по умолчанию
dictGetOrNull
Появилась в версии: v21.4
Извлекает значения из словаря, возвращая NULL, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря. Строковый литерал. -attr_name— Имя столбца, значение которого нужно получить. Строковый литерал. -id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря.
Возвращаемое значение
Возвращает значение атрибута словаря, соответствующее id_expr, если ключ найден.
Если ключ не найден, возвращает NULL.
Примеры
Пример с использованием словаря с диапазонным ключом
dictGetString
Добавлена в версии: v1.1
Преобразует значение атрибута словаря в тип данных String независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, соответствующее id_expr,
в противном случае возвращает содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse генерирует исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetStringOrDefault
Введена в версии: v1.1
Преобразует значение атрибута словаря к типу данных String независимо от конфигурации словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение типа кортежа (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение (или значения), возвращаемое, если в словаре нет строки с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает значение, переданное в параметре default_value_expr.
ClickHouse выбрасывает исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetUInt16
Впервые появилась в версии v1.1
Преобразует значение атрибута словаря к типу данных UInt16 независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение кортежа (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse выбрасывает исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetUInt16OrDefault
Впервые появилась в: v1.1
Преобразует значение атрибута словаря в тип данных UInt16 независимо от конфигурации словаря либо возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение-кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение или значения, возвращаемые, если словарь не содержит строку с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует значению id_expr,
в противном случае возвращает значение, переданное в параметре default_value_expr.
ClickHouse выбрасывает исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetUInt32
Добавлена в версии: v1.1
Преобразует значение атрибута словаря к типу данных UInt32 независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение кортежа (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
иначе возвращает содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse выбрасывает исключение, если не может распознать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetUInt32OrDefault
Добавлено в версии: v1.1
Преобразует значение атрибута словаря в тип данных UInt32 вне зависимости от конфигурации словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж значений (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение (значения), возвращаемое, если в словаре нет строки с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает значение, переданное в параметре default_value_expr.
ClickHouse выбрасывает исключение, если не может проанализировать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetUInt64
Впервые представлена в версии v1.1
Преобразует значение атрибута словаря к типу данных UInt64 независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае — содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse выбрасывает исключение, если не может интерпретировать значение атрибута или значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetUInt64OrDefault
Добавлена в версии v1.1
Преобразует значение атрибута словаря к типу данных UInt64 независимо от конфигурации словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение (значения), возвращаемое, если словарь не содержит строку с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, соответствующее id_expr,
в противном случае — значение, переданное в параметре default_value_expr.
ClickHouse генерирует исключение, если не может интерпретировать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetUInt8
Добавлена в версии v1.1
Преобразует значение атрибута словаря к типу данных UInt8 независимо от конфигурации словаря.
Синтаксис
Параметры
dict_name— имя словаря.Stringattr_name— имя столбца словаря.StringилиTuple(String)id_expr— значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае — содержимое элемента <null_value>, указанного для атрибута в конфигурации словаря.
ClickHouse генерирует исключение, если не может распарсить значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetUInt8OrDefault
Добавлена в версии v1.1
Преобразует значение атрибута словаря к типу данных UInt8 независимо от конфигурации словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, которое возвращает значение типа ключа словаря или кортеж значений (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение или кортеж значений, возвращаемые, если словарь не содержит строки с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает значение, переданное в параметре default_value_expr.
ClickHouse возбуждает исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetUUID
Появилось в версии: v1.1
Преобразует значение атрибута словаря в тип данных UUID независимо от конфигурации словаря.
Синтаксис
Аргументы
dict_name— имя словаря.Stringattr_name— имя столбца словаря.StringилиTuple(String)id_expr— значение ключа. Выражение, возвращающее значение типа ключа словаря или кортеж (в зависимости от конфигурации словаря).ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает содержимое элемента <null_value>, указанного для этого атрибута в конфигурации словаря.
ClickHouse выбрасывает исключение, если не может разобрать значение атрибута или если значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictGetUUIDOrDefault
Появилась в версии: v1.1
Преобразует значение атрибута словаря к типу данных UUID независимо от конфигурации словаря или возвращает указанное значение по умолчанию, если ключ не найден.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringattr_name— Имя столбца словаря.StringилиTuple(String)id_expr— Значение ключа. Выражение, возвращающее значение ключевого типа словаря или кортеж значений (в зависимости от конфигурации словаря).ExpressionилиTuple(T)default_value_expr— Значение (значения), возвращаемое, если словарь не содержит строки с ключомid_expr.ExpressionилиTuple(T)
Возвращаемое значение
Возвращает значение атрибута словаря, которое соответствует id_expr,
в противном случае возвращает значение, переданное в параметр default_value_expr.
ClickHouse выбрасывает исключение, если не может разобрать значение атрибута или значение не соответствует типу данных атрибута.
Примеры
Пример использования
dictHas
Добавлена в версии: v1.1
Проверяет, существует ли ключ в словаре.
Синтаксис
Аргументы
dict_name— Имя словаря.Stringid_expr— Значение ключа.const String
Возвращаемое значение
Возвращает 1, если ключ существует, иначе 0. UInt8
Примеры
Проверка существования ключа в словаре
dictIsIn
Появилась в версии: v1.1
Проверяет наличие предка ключа по всей иерархической цепочке в словаре.
Синтаксис
Аргументы
dict_name— имя словаря.Stringchild_id_expr— ключ, подлежащий проверке.Stringancestor_id_expr— предполагаемый предок ключаchild_id_expr.const String
Возвращаемое значение
Возвращает 0, если child_id_expr не является потомком ancestor_id_expr, и 1, если child_id_expr является потомком ancestor_id_expr или если child_id_expr равен ancestor_id_expr. UInt8
Примеры
Проверка иерархического отношения