Fonctions MEDIAN() et PERCENTILE()
- En mode Live, les fonctions MEDIAN() et PERCENTILE() (depuis la version v0.1.3 du connecteur) utilisent la fonction ClickHouse quantile()(), ce qui accélère considérablement le calcul, mais repose sur l’échantillonnage. Si vous souhaitez obtenir des résultats précis, utilisez plutôt les fonctions
MEDIAN_EXACT()etPERCENTILE_EXACT()(basées sur quantileExact()()). - En mode Extract, vous ne pouvez pas utiliser MEDIAN_EXACT() et PERCENTILE_EXACT(), car MEDIAN() et PERCENTILE() sont toujours exactes (mais lentes).
Fonctions supplémentaires pour les champs calculés en Live mode
ClickHouse dispose d’un très grand nombre de fonctions utilisables pour l’analyse des données — bien plus que ce que Tableau prend en charge. Pour faciliter l’utilisation par les utilisateurs, nous avons ajouté de nouvelles fonctions disponibles en Live mode lors de la création de champs calculés. Malheureusement, il n’est pas possible d’ajouter une description à ces fonctions dans l’interface de Tableau ; nous les décrivons donc ici même.
-IfCombinateur d’agrégation (ajouté dans la v0.2.3) - permet d’appliquer des filtres par ligne directement dans le calcul d’agrégation. Les fonctionsSUM_IF(), AVG_IF(), COUNT_IF(), MIN_IF() & MAX_IF()ont été ajoutées.BAR([my_int], [min_val_int], [max_val_int], [bar_string_length_int])(ajouté dans la v0.2.1) — Oubliez les barres ennuyeuses ! Utilisez plutôt la fonctionBAR()(équivalent debar()dans ClickHouse). Par exemple, ce champ calculé renvoie de jolies barres au format String :BAR([my_int], [min_val_int], [max_val_int], [bar_string_length_int]) + " " + FORMAT_READABLE_QUANTITY([my_int])== BAR() == ██████████████████▊ 327.06 million █████ 88.02 million ███████████████ 259.37 millionCOUNTD_UNIQ([my_field])(ajouté dans la version v0.2.0) — Calcule le nombre approximatif de valeurs distinctes de l'argument. Équivalent de uniq(). Beaucoup plus rapide queCOUNTD().DATE_BIN('day', 10, [my_datetime_or_date])(ajouté dans la v0.2.1) — équivalent detoStartOfInterval()dans ClickHouse. Arrondit à l’inférieur une valeur Date ou DateTime selon l’intervalle donné, par exemple :== my_datetime_or_date == | == DATE_BIN('day', 10, [my_datetime_or_date]) == 28.07.2004 06:54:50 | 21.07.2004 00:00:00 17.07.2004 14:01:56 | 11.07.2004 00:00:00 14.07.2004 07:43:00 | 11.07.2004 00:00:00FORMAT_READABLE_QUANTITY([my_integer])(ajouté dans v0.2.1) — Renvoie un nombre arrondi avec un suffixe (millier, million, milliard, etc.) sous forme de chaîne. Utile pour faciliter la lecture des grands nombres. Équivalent deformatReadableQuantity().FORMAT_READABLE_TIMEDELTA([my_integer_timedelta_sec], [optional_max_unit])(ajouté dans v0.2.1) — Accepte une durée en secondes. Renvoie une durée avec (année, mois, jour, heure, minute, seconde) sous forme de chaîne.optional_max_unitest l’unité maximale à afficher. Valeurs acceptées :seconds,minutes,hours,days,months,years. Équivalent deformatReadableTimeDelta().GET_SETTING([my_setting_name])(ajouté dans v0.2.1) — Renvoie la valeur actuelle d’un paramètre personnalisé. Équivalent degetSetting().HEX([my_string])(ajouté dans v0.2.1) — Renvoie une chaîne contenant la représentation hexadécimale de l’argument. Équivalent dehex().KURTOSIS([my_number])— Calcule la kurtosis d’échantillon d’une séquence. Équivalent dekurtSamp().KURTOSISP([my_number])— Calcule la kurtosis d’une séquence. Équivalent dekurtPop().MEDIAN_EXACT([my_number])(ajouté dans v0.1.3) — Calcule exactement la médiane d’une séquence de données numériques. Équivalent dequantileExact(0.5)(...).MOD([my_number_1], [my_number_2])— Calcule le reste de la division. Si les arguments sont des nombres à virgule flottante, ils sont d’abord convertis en entiers en supprimant la partie décimale. Équivalent demodulo().PERCENTILE_EXACT([my_number], [level_float])(ajouté dans v0.1.3) — Calcule exactement le percentile d’une séquence de données numériques. La plage de niveaux recommandée est [0.01, 0.99]. Équivalent dequantileExact()().PROPER([my_string])(ajouté dans la version v0.2.5) - Convertit une chaîne de texte de façon à mettre en majuscule la première lettre de chaque mot et en minuscules les lettres restantes. Les espaces et les caractères non alphanumériques, comme la ponctuation, servent également de séparateurs. Par exemple :PROPER("PRODUCT name") => "Product Name"PROPER("darcy-mae") => "Darcy-Mae"RAND()(ajoutée dans la v0.2.1) — renvoie un entier (UInt32), par exemple3446222955. Équivalent derand().RANDOM()(ajoutée dans la v0.2.1) — fonction TableauRANDOM()non officielle, qui renvoie un nombre flottant compris entre 0 et 1.RAND_CONSTANT([optional_field])(ajoutée dans la v0.2.1) — produit une colonne constante avec une valeur aléatoire. Comparable à{RAND()}Fixed LOD, mais plus rapide. Équivalent derandConstant().REAL([my_number])— convertit le champ en nombre flottant (Float64). Voir les détailsici.SHA256([my_string])(ajoutée dans la v0.2.1) — calcule le hash SHA-256 d'une chaîne et renvoie l'ensemble d'octets obtenu sous forme de chaîne (FixedString). Pratique avec la fonctionHEX(), par exempleHEX(SHA256([my_string])). Équivalent deSHA256().SKEWNESS([my_number])— calcule le coefficient d'asymétrie de l'échantillon d'une séquence. Équivalent deskewSamp().SKEWNESSP([my_number])— calcule le coefficient d'asymétrie d'une séquence. Équivalent deskewPop().TO_TYPE_NAME([field])(ajoutée dans la v0.2.1) — renvoie une chaîne contenant le nom du type ClickHouse de l'argument transmis. Équivalent detoTypeName().TRUNC([my_float])— identique à la fonctionFLOOR([my_float]). Équivalent detrunc().UNHEX([my_string])(ajoutée dans la v0.2.1) — effectue l'opération inverse deHEX(). Équivalent deunhex().