# 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 est utilisée pour les agrégations imbriquées dans lesquelles le première paramètre (l'agrégation interne) est calculé une fois par valeur dimensionnelle. Les dimensions sont spécifiées dans le deuxième paramètre (et les paramètres suivants).

De plus, la fonction Aggr doit être imbriquée dans une fonction d'agrégation externe en utilisant le tableau de résultats provenant de la fonction Aggr comme entrée de l'agrégation dans laquelle elle est imbriquée.

Syntaxe :

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

Type de données renvoyé : double

Arguments :

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))`<br><br>La dimension est un champ unique et ne peut pas être une expression. La dimension permet de déterminer le tableau de valeurs pour lequel l'expression Aggr est calculée.<br><br>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.<br><br>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é](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm#Sorting). |
| 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)).

Note ConseilSi 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).

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)Ajout de critères de tri à la dimension dans le paramètre structuré

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 :

Types de classement autorisés

| 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.

## Exemples : Expressions de graphique avec Aggr

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)

#### Exemples - expressions de graphique

### Exemple d'expression de graphique 1

#### Script de chargement

Chargez les données suivantes sous forme de chargement inline dans l'éditeur de chargement de données pour créer l'exemple d'expression de graphique ci-dessous.

```
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|0|19
] (delimiter is '|');
```

Pour plus d'informations sur l'utilisation de chargements inline, consultez [Utilisation de chargements inline pour charger des données](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

#### Expression de graphique

Créez une visualisation d'indicateur KPI sur une feuille Qlik Sense. Ajoutez l'expression suivante à l'indicateur ICP, sous forme de mesure :

`Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))`

#### Résultat

376.7

#### Explication

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.7.

Pour plus d'informations sur les expressions, voir [Utilisation d'expressions dans les visualisations](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm).

### Exemple d'expression de graphique 2

#### Script de chargement

Chargez les données suivantes sous forme de chargement inline dans l'éditeur de chargement de données pour créer l'exemple d'expression de graphique ci-dessous.

```
ProductData:

LOAD * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|BB|7|12
Betacab|CC|2|22
Betacab|CC|4|20
Betacab|DD|25|25
Canutility|AA|8|15
Canutility|AA|5|11
Canutility|CC|0|19
] (delimiter is '|');
```

Pour plus d'informations sur l'utilisation de chargements inline, consultez [Utilisation de chargements inline pour charger des données](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

#### Expression de graphique

Créez une visualisation de table dans une feuille Qlik Sense dotée des dimensions Customer, Product, UnitPrice et UnitSales. Ajoutez à la table l'expression suivante, sous forme de mesure :

`Aggr(NODISTINCT Max(UnitPrice), Customer, Product)`

#### Résultat

| Customer | Product | UnitPrice | UnitSales | Aggr(NODISTINCT Max(UnitPrice), Customer, Product) |
| --- | --- | --- | --- | --- |
| Astrida | AA | 15 | 10 | 16 |
| Astrida | AA | 16 | 4 | 16 |
| Astrida | BB | 9 | 9 | 15 |
| Astrida | BB | 15 | 10 | 15 |
| Betacab | BB | 10 | 5 | 12 |
| Betacab | BB | 12 | 7 | 12 |
| Betacab | CC | 20 | 4 | 22 |
| Betacab | CC | 22 | 2 | 22 |
| Betacab | DD | 25 | 25 | 25 |
| Canutility | AA | 11 | 5 | 15 |
| Canutility | AA | 15 | 8 | 15 |
| Canutility | CC | 19 | 0 | 19 |

#### Explication

Liste de valeurs : 16, 16, 15, 15, 12, 12, 22, 22, 25, 15, 15 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.

### Exemple d'expression de graphique 3

#### Script de chargement

Chargez les données suivantes sous forme de chargement inline dans l'éditeur de chargement de données pour créer l'exemple d'expression de graphique ci-dessous.

```
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;
```

#### Expressions de graphique

Créez une visualisation de table dans une feuille Qlik Sense dotée des dimensions Year et Month. Ajoutez à la table les expressions suivantes sous forme de mesures :

* `Sum(Sales)`
* `Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))` libellé comme Structured Aggr() dans la table.

#### Résultat

| Year | Month | Sum(Sales) | Structured Aggr() |
| --- | --- | --- | --- |
| 2013 | Jan | 53495 | 53495 |
| 2013 | Feb | 48580 | 102075 |
| 2013 | Mar | 25651 | 127726 |
| 2013 | Apr | 36585 | 164311 |
| 2013 | May | 61211 | 225522 |
| 2013 | Jun | 23689 | 249211 |
| 2013 | Jul | 42311 | 291522 |
| 2013 | Aug | 41913 | 333435 |
| 2013 | Sep | 28886 | 362361 |
| 2013 | Oct | 25977 | 388298 |
| 2013 | Nov | 44455 | 432753 |
| 2013 | Dec | 64144 | 496897 |
| 2014 | Jan | 67775 | 67775 |

#### Explication

Cet exemple affiche les valeurs agrégées sur une période de douze mois pour chaque année dans l'ordre chronologique croissant, d'où la partie (Numeric, Ascending) des paramètres structurés de l'expression Aggr(). Deux dimensions spécifiques sont nécessaires comme paramètres structurés : Year (Année) et Month (Mois), triés par (1) Year (numérique) et (2) Month (numérique). Ces deux dimensions doivent être utilisées dans la visualisation de table ou de graphique. Cela est nécessaire pour que la liste de dimensions de la fonction Aggr() corresponde aux dimensions de l'objet utilisé dans la visualisation.

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))
  	))`

Vous devez voir clairement que seule la dernière expression effectue l'accumulation de valeurs agrégées souhaitée.

## En savoir plus

* [Fonctions d'agrégation de base](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/basic-aggregation-functions.htm)
* [Analyse d'ensembles](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)