Функции для работы со словарями
Для словарей, созданных с помощью DDL-запросов, параметр dict_name должен быть указан полностью, в формате <database>.<dict_name>. В противном случае будет использована текущая база данных.
Сведения о подключении и настройке словарей см. в разделе Словари.
dictGet, dictGetOrDefault, dictGetOrNull
Возвращают значения из словаря.
Аргументы
dict_name— Имя словаря. Строковый литерал.attr_names— Имя столбца словаря, строковый литерал, или кортеж имён столбцов, Tuple(строковый литерал.id_expr— Значение ключа. Выражение, возвращающее значение типа ключа словаря или значение типа Tuple в зависимости от конфигурации словаря.default_value_expr— Значения, возвращаемые, если словарь не содержит строки с ключомid_expr. Выражение или Tuple(выражение), возвращающее значение (или значения) в типах данных, настроенных для атрибута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. Если параметр не задан, длина массива не ограничена.
Возвращаемое значение
-
Если ClickHouse успешно разбирает атрибут в тип данных атрибута, определённый в словаре, возвращается массив значений атрибутов словаря, которые соответствуют
id_exprдля каждого атрибута, указанного вattr_names. -
Если в словаре нет ключа, соответствующего
id_expr, возвращается пустой массив.
ClickHouse генерирует исключение, если не может разобрать значение атрибута или значение не соответствует типу данных атрибута.
Пример
Рассмотрим следующий словарь-дерево regexp:
Получить все совпадающие значения:
Получите не более 2 совпадающих значений:
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.11
Возвращает ключ(и) словаря, для которых значение атрибута равно указанному. Это операция, обратная функции dictGet для одного атрибута.
Используйте параметр 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
Примеры
Проверка иерархической связи