Accéder au contenu principal

Fonctions d'agrégation

La famille des fonctions appelées fonctions d'agrégation se compose de fonctions qui utilisent plusieurs valeurs de champ comme données d'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 du 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 de fonctions d'agrégation dans un script de chargement de données

Les fonctions d'agrégation s'utilisent exclusivement 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 contenir d'autres fonctions d'agrégation, sauf si ces agrégations internes contiennent le qualificateur TOTAL. Pour des agrégations imbriquées plus avancées, 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.

Analyse d'ensembles et expressions d'ensemble

Mode de calcul des agrégations

Une agrégation effectue une boucle sur les enregistrements d'une table spécifique, agrégeant les enregistrements qu'elle contient. Par exemple, Count(<Field>) comptera 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, par exemple, Count(distinct <Field>).

Si la fonction d'agrégation contient des champs provenant de différentes tables, elle effectuera une boucle sur les enregistrements du produit croisé des tables des champs constitutifs. Cela a un impact sur les performances. C'est pourquoi il convient d'éviter de telles agrégations, en particulier en cas 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 n'est pas clair quelle table il faut utiliser pour l'agrégation. Par exemple, si le champ <Key> relie deux tables, il n'est pas clair 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.

Par conséquent, si vous utilisez un champ clé à l'intérieur d'une fonction d'agrégation sans la clause distinct, QlikView renverra un nombre susceptible de n'avoir aucun sens. La solution consiste à utiliser la clause distinct ou une copie de la clé – copie qui réside dans une seule table.

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

Clé ProductID entre les tables Products et Details

Exemple de sélections actives

La valeur Count(ProductID) peut être comptée soit dans la table Products (qui ne contient qu'un enregistrement par produit – ProductID est la clé primaire), soit dans la table Details (qui compte 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é.

Rejoignez le Programme de modernisation analytique

Remove banner from view

Modernisez votre système sans compromettre vos précieuses applications QlikView grâce au Programme de modernisation analytique. Cliquez ici pour plus d'informations ou contactez : ampquestions@qlik.com