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

range_hashed

Словарь хранится в памяти в виде хеш-таблицы с упорядоченным массивом диапазонов и соответствующих им значений. Этот способ хранения работает так же, как hashed, и позволяет использовать диапазоны даты/времени (произвольного числового типа) в дополнение к ключу. Пример: Таблица содержит скидки для каждого рекламодателя в следующем формате:
Чтобы использовать диапазоны дат, определите элементы range_min и range_max в структуре. В этих элементах должны быть указаны name и type (если type не указан, будет использоваться тип по умолчанию — Date). type может быть любым числовым типом (Date / DateTime / UInt64 / Int32 / другие).
Значения range_min и range_max должны помещаться в диапазон типа Int64.
Пример:

Чтобы работать с этими словарями, нужно передать в функцию dictGet дополнительный аргумент, по которому выбирается диапазон:
Пример запроса:
Эта функция возвращает значение для указанных id и диапазона дат, в который попадает переданная дата. Подробности алгоритма:
  • Если id не найден или для id не найден диапазон, возвращается значение по умолчанию для типа атрибута.
  • Если есть перекрывающиеся диапазоны и range_lookup_strategy=min, возвращается подходящий диапазон с минимальным range_min; если найдено несколько диапазонов, возвращается диапазон с минимальным range_max; если и после этого найдено несколько диапазонов (то есть несколько диапазонов имеют одинаковые range_min и range_max), возвращается случайный диапазон из них.
  • Если есть перекрывающиеся диапазоны и range_lookup_strategy=max, возвращается подходящий диапазон с максимальным range_min; если найдено несколько диапазонов, возвращается диапазон с максимальным range_max; если и после этого найдено несколько диапазонов (то есть несколько диапазонов имеют одинаковые range_min и range_max), возвращается случайный диапазон из них.
  • Если range_max имеет значение NULL, диапазон считается открытым. NULL рассматривается как максимально возможное значение. Для range_min в качестве открытого значения можно использовать 1970-01-01 или 0 (-MAX_INT).
Пример конфигурации:

Пример конфигурации с перекрывающимися и открытыми диапазонами:

complex_key_range_hashed

Словарь хранится в памяти в виде хеш-таблицы с упорядоченным массивом диапазонов и соответствующих им значений (см. range_hashed). Этот тип хранилища используется с составными ключами. Пример конфигурации:
Последнее изменение 2 июля 2026 г.