Aggr

Aggr() renvoie un tableau de valeurs pour l'expression calculée au moyen de la ou des dimensions définies. Par exemple, la valeur maximale de ventes, par client et par région. La fonction Aggr s'emploie dans le cadre d'agrégations avancées, dans lesquelles la fonction Aggr est imbriquée dans une autre fonction d'agrégation, en utilisant un tableau de résultats provenant de la fonction Aggr comme données d'entrée pour l'agrégation dans laquelle elle est imbriquée.

Syntax:  

Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})

Return data type: double

Arguments:  

Argument Description
expr

Expression composée d'une fonction d'agrégation. Par défaut, la fonction d'agrégation couvre l'ensemble des enregistrements possibles définis par la sélection.

StructuredParameter

StructuredParameter se compose d'une dimension et, éventuellement, de critères de tri au format suivant : (Dimension(Sort-type, Ordering))

La dimension est un champ unique et ne peut pas correspondre à une expression. La dimension permet de déterminer le tableau de valeurs pour lequel l'expression Aggr est calculée.

Si des critères de tri sont inclus, le tableau de valeurs créé par la fonction Aggr, calculée pour la dimension, est trié. Ce paramètre est important lorsque l'ordre de tri affecte le résultat de l'expression dans laquelle la fonction Aggr est imbriquée.

Pour plus d'informations sur l'utilisation des critères de tri, voir Ajout de critères de tri à la dimension dans le paramètre structuré.

SetExpression Par défaut, la fonction d'agrégation couvre l'ensemble des enregistrements possibles définis par la sélection. Il est possible de définir un ensemble d'enregistrements alternatif à l'aide d'une expression d'analyse d'ensembles.
DISTINCT Si l'argument expression est précédé du qualificateur distinct ou si aucun qualificateur n'est utilisé, chaque combinaison de valeurs de dimension génère une seule valeur de retour. Il s'agit du mode de création standard des agrégations ; chaque combinaison distincte de valeurs de dimension correspond à une ligne dans le graphique.
NODISTINCT

Si l'argument expression est précédé du qualificateur nodistinct, chaque combinaison de valeurs de dimension peut, suivant la structure de données sous-jacente, générer plusieurs valeurs de retour. En présence d'une seule dimension, la fonction aggr renvoie un tableau comprenant autant d'éléments que les données de la source comportent de lignes.

Les fonctions d'agrégation de base (telles que Sum, Min et Avg) renvoient une valeur numérique unique, tandis que la fonction Aggr() est comparable à la création d'un ensemble temporaire de résultats intermédiaires (une table virtuelle) sur lequel une autre agrégation peut être réalisée. Par exemple, lorsque vous calculez une valeur de ventes moyenne en additionnant les ventes par clients dans une instruction Aggr() puis calculez la moyenne des résultats additionnés : Avg(TOTAL Aggr(Sum(Sales), Customer)).

Conseil: Si vous souhaitez créer une agrégation de graphiques imbriqués à plusieurs niveaux, utilisez la fonction Aggr() dans les dimensions calculées.

Limitations:  

Dans une fonction Aggr(), chaque dimension doit correspondre à un seul champ et ne peut pas désigner une expression (dimension calculée).

Ajout de critères de tri à la dimension dans le paramètre structuré

Dans sa forme de base, l'argument StructuredParameter utilisé dans la syntaxe de la fonction Aggr correspond à une dimension unique. L'expression : Aggr(Sum(Sales, Month)) recherche la valeur totale des ventes pour chaque mois. Cependant, lorsqu'elle est imbriquée dans une autre fonction d'agrégation, des résultats inattendus peuvent se produire, à moins que des critères de tri ne soient définis. Cela s'explique par le fait qu'il est possible de trier certaines dimensions par ordre numérique ou alphabétique, et ainsi de suite.

Dans l'argument StructuredParameter de la fonction Aggr, vous pouvez spécifier des critères de tri au niveau de la dimension dans l'expression. De cette façon, vous imposez un ordre de tri à appliquer à la table virtuelle générée par la fonction Aggr.

L'argument StructuredParameter obéit à la syntaxe suivante :

(FieldName, (Sort-type, Ordering))

Il est possible d'imbriquer les paramètres structurés :

(FieldName, (FieldName2, (Sort-type, Ordering)))

Le type de tri peut prendre l'une des valeurs suivantes : NUMERIC, TEXT, FREQUENCY ou LOAD_ORDER.

Les types de classement associés à chaque type de tri sont les suivants :

Type de tri Types de classement admis
NUMERIC ASCENDING, DESCENDING ou REVERSE
TEXT ASCENDING, A2Z, DESCENDING, REVERSE ou Z2A
FREQUENCY DESCENDING, REVERSE ou ASCENDING
LOAD_ORDER ASCENDING, ORIGINAL, DESCENDING ou REVERSE

Les types de classement REVERSE et DESCENDING sont équivalents.

Pour le type de tri TEXT, les types de classement ASCENDING et A2Z sont équivalents. De même, DESCENDING, REVERSE et Z2A sont équivalents.

Pour le type de tri LOAD_ORDER, les types de classement ASCENDING et ORIGINAL sont équivalents.

Examples and results:  

Exemple Résultat
Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))

L'expression Aggr(Sum(UnitSales*UnitPrice), Customer) recherche la valeur totale des ventes par Customer, puis renvoie un tableau de valeurs : 295, 715 et 120 pour les trois valeurs Customer.

Nous avons élaboré de manière efficace une liste de valeurs sans devoir créer une table explicite ou une colonne contenant ces valeurs.

Ces valeurs sont utilisées comme données d'entrée dans la fonction Avg() pour trouver la valeur moyenne des ventes, 376.6667. (Totaux doit être sélectionné sous Présentation dans le panneau des propriétés.

Aggr(NODISTINCT Max(UnitPrice), Customer)

Tableau de valeurs : 16, 16, 16, 25, 25, 25, 19 et 19. Le qualificateur nodistinct signifie que le tableau contient un élément pour chaque ligne des données source : chacun représente le prix unitaire UnitPrice maximum pour chaque client Customer et chaque produit Product.

max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

Utilisation des critères de tri dans l'argument StructuredParameter au sein de l'expression : max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

Sans critères de tri, le résultat de l'expression max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear))) dépend du mode de tri de la dimension MonthYear. Nous n'obtiendrons pas forcément le résultat souhaité.

En ajoutant à la dimension des valeurs pour le type de tri et le type de classement, nous passons des critères de tri au paramètre structuré : (MonthYear, (NUMERIC, ASCENDING)), où le type de tri NUMERIC et le type de classement ASCENDING déterminent que la dimension MonthYear est triée par ordre numérique croissant.

Dans cet exemple, nous souhaitons trouver la plus forte hausse du nombre de clients, d'un mois sur l'autre. Ces données pourraient être utilisées dans une visualisation de type indicateur KPI, par exemple.

La partie Aggr de l'expression compare le nombre total de clients en un mois (fourni par MonthYear) au nombre total de clients du mois précédent.

Comme nous utilisons des critères de tri avec la dimension : (MonthYear,(NUMERIC, ASCENDING)), il est certain que l'expression Aggr compare les nombres de clients par mois consécutifs dans la table virtuelle en triant les mois par ordre numérique croissant, et non par ordre alphabétique croissant.

Données utilisées dans les exemples :

Créez une table dotée des dimensions Customer, Product, UnitPrice et UnitSales. Ajoutez l'expression à la table en tant que mesure.

ProductData:

LOAD * inline [

Customer|Product|UnitSales|UnitPrice

Astrida|AA|4|16

Astrida|AA|10|15

Astrida|BB|9|9

Betacab|BB|5|10

Betacab|CC|2|20

Betacab|DD|25|25

Canutility|AA|8|15

Canutility|CC||19

] (delimiter is '|');