Accéder au contenu principal Passer au contenu complémentaire

Expressions d'ensemble internes et externes

Les expressions d'ensemble peuvent être utilisées à l'intérieur et à l'extérieur des fonctions d'agrégation et sont encadrées par des accolades.

Lorsque vous utilisez une expression d'ensemble à l'intérieur d'une fonction d'agrégation, cela peut prendre la forme suivante :

Expression d'ensemble interne

Sum( {$<Year={2021}>} Sales )

Utilisez une expression d'ensemble à l'extérieur de la fonction d'agrégation si vous avez des expressions avec plusieurs agrégations et si vous souhaitez éviter d'écrire la même expression d'ensemble dans chaque fonction d'agrégation.

Si vous utilisez une expression d'ensemble externe, elle doit être placée au début de l'étendue.

Expression d'ensemble externe

{<Year={2021}>} Sum(Sales) / Count(distinct Customer)

Si vous utilisez une expression d'ensemble à l'extérieur de la fonction d'agrégation, vous pouvez également l'appliquer aux mesures principales existantes.

Expression d'ensemble externe appliquée à une mesure principale

{<Year={2021}>} [Master Measure]

Une expression d'ensemble utilisée à l'extérieur des fonctions d'agrégation affecte l'expression toute entière, sauf si elle est placée entre parenthèses lorsque les parenthèses définissent l'étendue. Dans l'exemple de définition de l'étendue lexicale ci-dessous, l'expression d'ensemble est uniquement appliquée à l'agrégation à l'intérieur des parenthèses.

Définition de l'étendue lexicale

( {<Year={2021}>} Sum(Amount) / Count(distinct Customer) ) – Avg(CustomerSales)

Règles

Étendue lexicale

L'expression d'ensemble affecte l'expression toute entière, sauf si elle est placée entre parenthèses. Dans ce cas, les parenthèses définissent l'étendue lexicale.

Position

L'expression d'ensemble doit être placée au début de l'étendue lexicale.

Contexte

Le contexte est la sélection pertinente pour l'expression. En règle générale, le contexte est toujours l'état par défaut de la sélection active. En revanche, si un objet est défini sur un état alternatif, le contexte est l'état alternatif de la sélection active.

Vous pouvez également définir un contexte sous la forme d'une expression d'ensemble externe.

Héritage

Les expressions d'ensemble internes sont prioritaires sur les expressions d'ensemble externes. Si l'expression d'ensemble interne contient un identificateur d'ensemble, elle remplace le contexte. Sinon, le contexte et l'expression d'ensemble sont fusionnés.

  • {$<SetExpression>} - remplace l'expression d'ensemble externe

  • {<SetExpression>} - est fusionné avec l'expression d'ensemble externe

Affectation d'ensembles d'éléments

L'affectation d'ensembles d'éléments détermine le mode de fusion des deux sélections. Si un signe égal normal est utilisé, la sélection de l'expression d'ensemble interne est prioritaire. Sinon, l'opérateur d'ensemble implicite est utilisé.

  • {<Field={value}>} - cette sélection interne remplace toute sélection externe dans “Field”.

  • {<Field+={value}>} - cette sélection interne est fusionnée avec la sélection externe dans “Field”, via l'opérateur d'union.

  • {<Field*={value}>} - cette sélection interne est fusionnée avec la sélection externe dans “Field”, via l'opérateur d'intersection.

Héritage en plusieurs étapes

L'héritage peut avoir lieu en plusieurs étapes. Exemples :

  • Sélection active → Sum(Amount)

    La fonction d'agrégation utilisera le contexte, qui, ici, est la sélection active.

  • Sélection active → {<Set1>} Sum(Amount)

    Set1 héritera de la sélection active et le résultat sera le contexte pour la fonction d'agrégation.

  • Sélection active → {<Set1>} ({<Set2>} Sum(Amount))

    Set2 héritera de Set1, qui, à son tour, héritera de la sélection active, et le résultat sera le contexte pour la fonction d'agrégation.

Fonction Aggr()

La fonction Aggr() crée une agrégation imbriquée qui comporte deux agrégations indépendantes. Dans l'exemple ci-dessous, une fonction Count() est calculée pour chaque valeur de Dim, et le tableau obtenu est agrégé via la fonction Sum().

 

Sum(Aggr(Count(X),Dim))

Count() est l'agrégation interne et Sum() l'agrégation externe.

  • L'agrégation interne n'hérite d'aucun contexte de l'agrégation externe.

  • L'agrégation interne hérite du contexte de la fonction Aggr(), qui contient une expression d'ensemble.

  • La fonction Aggr() et la fonction d'agrégation externe héritent toutes les deux du contexte d'une expression d'ensemble externe.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !