Aggr - fonction de graphique

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, qui 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é pour la dimension, est trié. Ceci est important lorsque l'ordre de tri affecte le résultat de l'expression dans laquelle la fonction Aggr est incluse.

Pour en savoir plus sur l'utilisation des critères de tri, reportez-vous à la rubrique 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 de résultats graduel temporaire (table virtuelle), sur lequel une autre agrégation peut être effectuée. Par exemple, lorsque vous calculez une valeur de vente moyenne en additionnant les ventes par client dans une instruction Aggr(), puis en calculant la moyenne des résultats additionnés : Avg(TOTAL Aggr(Sum(Sales),Customer)).

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

Limitations:  

Dans une fonction Aggr(), chaque dimension doit consister en un seul champ et être différente d'une expression (dimension calculée).

Dans sa forme de base, l'argument StructuredParameter dans la syntaxe de la fonction Aggr est une dimension unique. L'expression Aggr(Sum(Sales, Month)) détermine la valeur totale des ventes pour chaque mois. Toutefois, lorsqu'elle est incluse dans une autre fonction d'agrégation, des résultats inattendus peuvent survenir si aucun critère de tri n'est utilisé. En effet, certaines dimensions peuvent être triées par ordre numérique ou alphabétique, et ainsi de suite.

Dans l'argument StructuredParameter de la fonction Aggr, vous pouvez indiquer des critères de tri sur la dimension dans votre expression. De cette manière, vous imposez un ordre de tri sur la table virtuelle qui est créée par la fonction Aggr.

L'argument StructuredParameter présente la syntaxe suivante :

(FieldName, (Sort-type, Ordering))

Les paramètres structurés peuvent être imbriqués :

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

Les types de tri possibles sont les suivants : 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 autorisés
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, et 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) détermine la valeur totale des ventes par Customer et renvoie un tableau de valeurs : 295, 715 et 120 pour les trois valeurs Customer.

De fait, nous avons établi une liste temporaire de valeurs sans avoir à créer de table ou colonne explicite contenant ces valeurs.

Ces valeurs sont utilisées comme données d'entrée pour la fonction Avg() afin de rechercher la valeur moyenne des ventes, soit 376.6667. (Vous devez avoir sélectionné l'option Totaux 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 d'eux correspond à la valeur UnitPrice maximale pour chaque cellule Customer et chaque cellule Product.

Données utilisées dans les exemples :

Créez une table utilisant Customer, Product, UnitPrice et UnitSales comme dimensions. 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 '|');

 

Examples and results: Paramètres structurés

Exemple Résultat
Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))

Cette mesure calcule, pour chaque mois, les chiffres de vente de la période en cours depuis le début de l'exercice à l'aide de critères de tri dans l'argument du paramètre structuré de l'expression.

Sans critère de tri, le résultat de l'expression Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year), (Month) )) dépend de la façon dont les dimensions Year et Month sont triées. Il est possible que nous n'obtenions pas le résultat escompté.

En ajoutant des valeurs pour le type de tri et le type de classement à la dimension, nous fournissons des critères de tri au paramètre structuré : (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)). Le type de tri NUMERIC et le type de classement ASCENDING déterminent que Year et Month sont triés par ordre numérique croissant.

Données utilisées dans les exemples :

Le script de chargement suivant génère une table de commandes comportant des lignes de commande, que nous utiliserons dans l'exemple pour les paramètres structurés.

Set vNumberOfOrders = 1000; OrderLines: Load RowNo() as OrderLineID, OrderID, OrderDate, Round((Year(OrderDate)-2005)*1000*Rand()*Rand()*Rand1) as Sales While Rand()<=0.5 or IterNo()=1; Load * Where OrderDate<=Today(); Load Rand() as Rand1, Date(MakeDate(2013)+Floor((365*4+1)*Rand())) as OrderDate, RecNo() as OrderID Autogenerate vNumberOfOrders; Calendar: Load distinct Year(OrderDate) as Year, Month(OrderDate) as Month, OrderDate Resident OrderLines;

Vous pouvez comparer la différence entre ces mesures dans une table ou dans des graphiques en courbes distincts :

  • Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year), (Month) ))
  • Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))

La deuxième mesure donne les chiffres de vente par mois corrects pour la période en cours depuis le début de l'exercice.