Accéder au contenu principal

Fonctions d'agrégation

La famille de fonctions appelée fonctions d'agrégation se compose de fonctions qui utilisent plusieurs valeurs de champ comme entrée et qui renvoient un seul résultat par groupe, où le regroupement est défini par une dimension de graphique ou une clause group by dans l'instruction de script.

Les fonctions d'agrégation comprennent, entre autres, Sum(), Count(), Min() et Max().

La plupart des fonctions d'agrégation s'utilisent à la fois dans le script de chargement de données et dans les expressions de graphique, même si leur syntaxe diffère.

Utilisation des fonctions d'agrégation dans un script de chargement de données

Les fonctions d'agrégation peuvent uniquement être utilisées dans des instructions LOAD et SELECT.

Utilisation des fonctions d'agrégation dans les expressions de graphique

Le paramètre de la fonction d'agrégation ne doit pas comprendre d'autres fonctions d'agrégation, à moins que ces agrégations internes ne contiennent le qualificateur TOTAL. Pour des agrégations imbriquées plus complexes, utilisez la fonction avancée Aggr en combinaison avec une dimension spécifiée.

Une fonction d'agrégation regroupe l'ensemble des enregistrements possibles définis par la sélection. Il est toutefois possible de définir un ensemble alternatif d'enregistrements en utilisant une expression d'ensemble dans une analyse d'ensembles.

Voir : Analyse d'ensembles

Mode de calcul des agrégations

Une agrégation effectue une boucle sur les enregistrements d'une table spécifique, agrégeant ainsi les enregistrements qu'elle contient. Par exemple, Count(<Field>) compte le nombre d'enregistrements de la table dans laquelle réside <Field>. Si vous souhaitez agréger uniquement les valeurs de champ distinctes, vous devez utiliser la clause distinct comme suit : Count(distinct <Field>).

Si la fonction d'agrégation contient des champs provenant de différentes tables, elle effectue une boucle sur les enregistrements du produit croisé des tables des champs constitutifs. Cela affecte les performances. C'est pourquoi il est recommandé d'éviter de telles agrégations, en particulier lorsque vous avez de grandes quantités de données.

Agrégation de champs clés

Le mode de calcul des agrégations signifie que vous ne pouvez pas agréger des champs clés, car il est difficile de savoir quelle table utiliser pour l'agrégation. Par exemple, si le champ <Key> relie deux tables, il est difficile de savoir si Count(<Key>) doit renvoyer le nombre d'enregistrements de la première ou de la deuxième table.

En revanche, si vous utilisez la clause distinct, l'agrégation est bien définie et peut être calculée.

C'est pourquoi, si vous utilisez un champ clé à l'intérieur d'une fonction d'agrégation sans la clause distinct, Qlik Sense renverra un nombre qui risque de n'avoir aucun sens. La solution consiste à utiliser la clause distinct ou une copie de la clé – une copie qui réside dans une seule table.

Par exemple, dans les tables suivantes, ProductID est la clé entre les tables.

Clé ProductID entre tables Produits et Détails

Count(ProductID) peut être compté soit dans la table Products (qui contient un seul enregistrement par produit – ProductID est la clé primaire), soit dans la table Details (qui contient très probablement plusieurs enregistrements par produit). Si vous souhaitez compter le nombre de produits distincts, vous devez utiliser Count(distinct ProductID). Si vous souhaitez compter le nombre de lignes d'une table spécifique, vous ne devez pas utiliser la clé.