Description
Le combinateur Array
peut être appliqué à la fonction uniq
pour calculer le nombre approximatif d’éléments uniques dans l’ensemble des tableaux,
à l’aide de la fonction de combinateur d’agrégation uniqArray.
La fonction uniqArray est utile lorsque vous devez compter les éléments uniques de
plusieurs tableaux dans un jeu de données. Elle est équivalente à l’utilisation de uniq(arrayJoin()), où
arrayJoin aplatit d’abord les tableaux, puis uniq compte les éléments uniques.
Exemple d’utilisation
Dans cet exemple, nous utiliserons un échantillon de données sur les centres d’intérêt des utilisateurs dans différentes
catégories pour montrer le fonctionnement de uniqArray. Nous le comparerons à
uniq(arrayJoin()) afin d’illustrer la différence dans le comptage des éléments uniques.
CREATE TABLE user_interests
(
user_id UInt32,
interests Array(String)
) ENGINE = Memory;
INSERT INTO user_interests VALUES
(1, ['reading', 'gaming', 'music']),
(2, ['gaming', 'sports', 'music']),
(3, ['reading', 'cooking']);
SELECT
uniqArray(interests) AS unique_interests_total,
uniq(arrayJoin(interests)) AS unique_interests_arrayJoin
FROM user_interests;La fonction uniqArray compte les éléments distincts dans l’ensemble des tableaux combinés, à l’instar de uniq(arrayJoin()).
Dans cet exemple :
uniqArrayrenvoie 5, car il y a 5 centres d’intérêt distincts parmi tous les utilisateurs : 'reading', 'gaming', 'music', 'sports', 'cooking'uniq(arrayJoin())renvoie également 5, ce qui montre que les deux fonctions comptent les éléments distincts dans l’ensemble des tableaux
┌─unique_interests_total─┬─unique_interests_arrayJoin─┐
1. │ 5 │ 5 │
└────────────────────────┴────────────────────────────┘