histogram
values — Expression produisant des valeurs d’entrée.
Paramètres
number_of_bins — Limite supérieure du nombre de classes dans l’histogramme. La fonction calcule automatiquement le nombre de classes. Elle essaie d’atteindre le nombre de classes spécifié, mais si elle n’y parvient pas, elle en utilise moins.
Valeurs renvoyées
-
Array de Tuples au format suivant :
lower— Borne inférieure de la classe.upper— Borne supérieure de la classe.height— Hauteur calculée de la classe.
sequenceMatch
Les événements qui se produisent au cours de la même seconde peuvent figurer dans la séquence dans un ordre indéfini, ce qui peut affecter le résultat.
-
timestamp— Colonne considérée comme contenant des données temporelles. Les types de données typiques sontDateetDateTime. Vous pouvez également utiliser n’importe lequel des types de données UInt pris en charge. -
cond1,cond2— Conditions qui décrivent la chaîne d’événements. Type de données :UInt8. Vous pouvez transmettre jusqu’à 32 arguments de condition. La fonction ne prend en compte que les événements décrits dans ces conditions. Si la séquence contient des données non décrites par une condition, la fonction les ignore.
pattern— Chaîne de motif. Voir Syntaxe du motif.
- 1, si le motif correspond.
- 0, si le motif ne correspond pas.
UInt8.
Syntaxe du motif
-
(?N)— Correspond à l’argument de condition à la positionN. Les conditions sont numérotées dans la plage[1, 32]. Par exemple,(?1)correspond à l’argument transmis au paramètrecond1. -
.*— Correspond à un nombre quelconque d’événements. Il n’est pas nécessaire de fournir des arguments de condition pour faire correspondre cet élément du motif. -
(?t operator value)— Définit l’intervalle de temps, en secondes, qui doit séparer deux événements. Par exemple, le motif(?1)(?t>1800)(?2)correspond à des événements qui se produisent à plus de 1800 secondes d’intervalle. Un nombre quelconque d’événements peut se trouver entre ces événements. Vous pouvez utiliser les opérateurs>=,>,<,<=,==.
t :
sequenceCount
Les événements qui se produisent à la même seconde peuvent se trouver dans la séquence dans un ordre indéfini, ce qui affecte le résultat.
-
timestamp— Colonne considérée comme contenant des données temporelles. Les types de données les plus courants sontDateetDateTime. Vous pouvez également utiliser n’importe lequel des types de données UInt pris en charge. -
cond1,cond2— Conditions décrivant la chaîne d’événements. Type de données :UInt8. Vous pouvez fournir jusqu’à 32 arguments de condition. La fonction prend uniquement en compte les événements décrits par ces conditions. Si la séquence contient des données qui ne sont décrites par aucune condition, la fonction les ignore.
pattern— Chaîne de motif. Voir Syntaxe du motif.
- Nombre de chaînes d’événements non chevauchantes correspondantes.
UInt64.
Exemple
Considérez les données de la table t :
sequenceMatchEvents
Les événements qui se produisent à la même seconde peuvent apparaître dans la séquence dans un ordre indéfini, ce qui affecte le résultat.
-
timestamp— Colonne considérée comme contenant des données temporelles. Les types de données les plus courants sontDateetDateTime. Vous pouvez également utiliser n’importe lequel des types de données UInt pris en charge. -
cond1,cond2— Conditions qui décrivent la chaîne d’événements. Type de données :UInt8. Vous pouvez fournir jusqu’à 32 arguments de condition. La fonction ne prend en compte que les événements décrits dans ces conditions. Si la séquence contient des données qui ne sont décrites dans aucune condition, la fonction les ignore.
pattern— Chaîne de motif. Voir Syntaxe du motif.
- Array d’horodatages pour les arguments de condition correspondants (?N) de la chaîne d’événements. La position dans le tableau correspond à celle de l’argument de condition dans le motif.
t :
windowFunnel
- La fonction recherche les données qui satisfont à la première condition de la chaîne et fixe le compteur d’événements à 1. C’est à ce moment que la fenêtre glissante démarre.
- Si des événements de la chaîne se produisent successivement dans la fenêtre, le compteur est incrémenté. Si la séquence d’événements est interrompue, le compteur n’est pas incrémenté.
- Si les données contiennent plusieurs chaînes d’événements à différents stades d’avancement, la fonction renvoie uniquement la longueur de la chaîne la plus longue.
timestamp— Nom de la colonne contenant le timestamp. Types de données pris en charge : Date, DateTime et autres types entiers non signés (notez que même sitimestampprend en charge le typeUInt64, sa valeur ne peut pas dépasser la valeur maximale deInt64, soit 2^63 - 1).cond— Conditions ou données décrivant la chaîne d’événements. UInt8.
window— Longueur de la fenêtre glissante ; il s’agit de l’intervalle de temps entre la première et la dernière condition. L’unité dewindowdépend detimestamplui-même et peut varier. Elle est déterminée à l’aide de l’expressiontimestamp of cond1 <= timestamp of cond2 <= ... <= timestamp of condN <= timestamp of cond1 + window.mode— Argument facultatif. Un ou plusieurs modes peuvent être définis.'strict_deduplication'— Si la même condition est vérifiée pour une séquence d’événements, cet événement répété interrompt la suite du traitement. Remarque : le comportement peut être inattendu si plusieurs conditions sont vérifiées pour un même événement.'strict_order'— N’autorise pas l’intercalation d’autres événements. Par ex., dans le cas deA->B->D->C, la détection deA->B->Cs’arrête àDet le niveau maximal d’événement est 2.'strict_increase'— Applique les conditions uniquement aux événements dont les timestamps sont strictement croissants.'strict_once'— Ne compte chaque événement qu’une seule fois dans la chaîne, même s’il satisfait la condition plusieurs fois.'allow_reentry'— Ignore les événements qui ne respectent pas l’ordre strict. Par ex., dans le cas de A->A->B->C, il détecte A->B->C en ignorant le A redondant et le niveau maximal d’événement est 3.
Integer.
Exemple
Déterminez si une période donnée est suffisante pour qu’un utilisateur sélectionne un téléphone et l’achète deux fois dans la boutique en ligne.
Définissez la chaîne d’événements suivante :
- L’utilisateur s’est connecté à son compte sur la boutique (
eventID = 1003). - L’utilisateur recherche un téléphone (
eventID = 1007, product = 'phone'). - L’utilisateur a passé une commande (
eventID = 1009). - L’utilisateur a de nouveau passé la commande (
eventID = 1010).
user_id a pu progresser dans la chaîne au cours d’une période entre janvier et février 2019.
Query
Response
allow_reentry avec les modèles de réentrée utilisateur :
retention
UInt8, qui indiquent si une condition donnée a été remplie pour l’événement.
N’importe quelle condition peut être spécifiée comme argument (comme dans WHERE).
Les conditions, à l’exception de la première, s’appliquent par paires : le résultat de la deuxième sera true si la première et la deuxième sont true, celui de la troisième si la première et la troisième sont true, etc.
Syntaxe
cond— Une expression qui renvoie un résultatUInt8(1 ou 0).
- 1 — La condition est remplie pour l’événement.
- 0 — La condition n’est pas remplie pour l’événement.
UInt8.
Exemple
Prenons l’exemple du calcul de la fonction retention pour déterminer le trafic du site.
1. Créez une table pour illustrer cet exemple.
Query
Query
Response
uid à l’aide de la fonction retention.
Query
Response
Query
Response
r1- le nombre de visiteurs uniques ayant visité le site le 2020-01-01 (la conditioncond1).r2- le nombre de visiteurs uniques ayant visité le site durant une période donnée entre 2020-01-01 et 2020-01-02 (les conditionscond1etcond2).r3- le nombre de visiteurs uniques ayant visité le site durant une période donnée les 2020-01-01 et 2020-01-03 (les conditionscond1etcond3).
uniqUpTo(N)(x)
N. Si le nombre de valeurs d’argument distinctes est supérieur à N, cette fonction renvoie N + 1 ; sinon, elle calcule la valeur exacte.
Recommandée pour de petites valeurs de N, jusqu’à 10. La valeur maximale de N est 100.
Pour l’état d’une fonction d’agrégation, cette fonction utilise une quantité de mémoire égale à 1 + N * la taille en octets d’une valeur.
Lorsqu’il s’agit de chaînes, cette fonction stocke un hash non cryptographique de 8 octets ; le calcul est approximatif pour les chaînes.
Par exemple, si vous avez une table qui enregistre chaque requête de recherche effectuée par les utilisateurs sur votre site web. Chaque ligne de la table représente une seule requête de recherche, avec des colonnes pour l’ID utilisateur, la requête de recherche et le timestamp de la requête. Vous pouvez utiliser uniqUpTo pour générer un rapport qui n’affiche que les mots-clés ayant produit au moins 5 utilisateurs uniques.
uniqUpTo(4)(UserID) calcule le nombre de valeurs UserID distinctes pour chaque SearchPhrase, mais n’en compte que 4 au maximum. S’il y a plus de 4 valeurs UserID distinctes pour une SearchPhrase, la fonction renvoie 5 (4 + 1). La clause HAVING filtre ensuite les valeurs SearchPhrase pour lesquelles le nombre de valeurs UserID distinctes est inférieur à 5. Vous obtiendrez ainsi une liste de mots-clés de recherche utilisés par au moins 5 utilisateurs distincts.
sumMapFiltered
sumMapFiltered(keys_to_keep)(keys, values)
Paramètres
keys_to_keep: Array de clés à utiliser pour le filtrage.keys: Array de clés.values: Array de valeurs.
- Renvoie un tuple de deux tableaux : les clés dans l’ordre trié et les valeurs additionnées pour les clés correspondantes.
Query
Query
Response
sumMapFilteredWithOverflow
sumMapFilteredWithOverflow(keys_to_keep)(keys, values)
Paramètres
keys_to_keep: Array de clés à utiliser pour le filtre.keys: Array de clés.values: Array de valeurs.
- Renvoie un tuple de deux tableaux : les clés dans l’ordre trié, et les valeurs additionnées pour les clés correspondantes.
sum_map, y insérons des données, puis utilisons sumMapFilteredWithOverflow, sumMapFiltered et la fonction toTypeName pour comparer le résultat. Alors que requests était de type UInt8 dans la table créée, sumMapFiltered a converti le type des valeurs additionnées en UInt64 pour éviter un overflow, tandis que sumMapFilteredWithOverflow a conservé le type UInt8, qui n’est pas assez grand pour stocker le résultat, c’est-à-dire qu’un overflow s’est produit.
Query
Query
Query
Response
Response
sequenceNextNode
SET allow_experimental_funnel_functions = 1 pour l’activer.
Syntaxe
-
direction— Sert à définir le sens de navigation.- forward — Vers l’avant.
- backward — Vers l’arrière.
-
base— Sert à définir le point de base.- head — Définit le point de base sur le premier événement.
- tail — Définit le point de base sur le dernier événement.
- first_match — Définit le point de base sur le premier
event1correspondant. - last_match — Définit le point de base sur le dernier
event1correspondant.
timestamp— Nom de la colonne contenant l’horodatage. Types de données pris en charge : Date, DateTime et d’autres types d’entiers non signés.event_column— Nom de la colonne contenant la valeur du prochain événement à renvoyer. Types de données pris en charge : String et Nullable(String).base_condition— Condition que le point de base doit satisfaire.event1,event2, … — Conditions décrivant la chaîne d’événements. UInt8.
event_column[next_index]— Si le motif correspond et que la valeur suivante existe.NULL- Si le motif ne correspond pas ou que la valeur suivante n’existe pas.
Query
Response
forward et de head
backward et de tail
forward et de first_match
backward et last_match
base_condition