range_hashed
Le dictionnaire est stocké en mémoire sous la forme d’une table de hachage avec un tableau ordonné de plages et de leurs valeurs correspondantes. Cette méthode de stockage fonctionne comme hashed et permet d’utiliser, en plus de la clé, des plages de dates/heures (de type numérique arbitraire). Exemple : la table contient des remises pour chaque annonceur, au format :range_min et range_max dans la structure. Ces éléments doivent inclure les éléments name et type (si type n’est pas spécifié, le type par défaut sera utilisé : Date). type peut être n’importe quel type numérique (Date / DateTime / UInt64 / Int32 / autres).
Les valeurs de
range_min et range_max doivent pouvoir être représentées par le type Int64.- DDL
- Fichier de configuration
Pour utiliser ces dictionnaires, vous devez passer un argument supplémentaire à la fonction
dictGet, auquel une plage est appliquée :
id spécifiés et la plage de dates qui inclut la date fournie.
Détails de l’algorithme :
- Si l’
idest introuvable ou si aucune plage n’est trouvée pour cetid, elle renvoie la valeur par défaut du type de l’attribut. - S’il existe des plages qui se chevauchent et que
range_lookup_strategy=min, elle renvoie une plage correspondante dont lerange_minest minimal ; si plusieurs plages sont trouvées, elle renvoie une plage dont lerange_maxest minimal ; si plusieurs plages sont encore trouvées (plusieurs plages ayant le mêmerange_minet le mêmerange_max), elle renvoie l’une d’elles aléatoirement. - S’il existe des plages qui se chevauchent et que
range_lookup_strategy=max, elle renvoie une plage correspondante dont lerange_minest maximal ; si plusieurs plages sont trouvées, elle renvoie une plage dont lerange_maxest maximal ; si plusieurs plages sont encore trouvées (plusieurs plages ayant le mêmerange_minet le mêmerange_max), elle renvoie l’une d’elles aléatoirement. - Si
range_maxvautNULL, la plage est ouverte.NULLest traité comme la valeur maximale possible. Pourrange_min,1970-01-01ou0(-MAX_INT) peuvent être utilisés comme valeur ouverte.
- DDL
- Fichier de configuration
Exemple de configuration avec des plages qui se chevauchent et des plages ouvertes :