Share via


Fonction EARLIER (DAX)

Retourne la valeur actuelle de la colonne spécifiée dans un test d'évaluation externe de la colonne indiquée.

EARLIER est utile pour les calculs imbriqués où vous souhaitez utiliser une certaine valeur comme entrée et produire des calculs selon cette entrée. Dans Microsoft Excel, vous ne pouvez effectuer de tels calculs que dans le contexte de la ligne actuelle ; toutefois, dans PowerPivot, vous pouvez stocker la valeur de l'entrée, puis faire le calcul à l'aide des données de la table entière.

EARLIER est utilisé principalement dans le contexte de colonnes calculées.

Syntaxe

EARLIER(<column>, <number>)

Paramètres

Terme

Définition

column

Colonne ou expression qui est résolue en une colonne.

num

(Facultatif) Nombre positif pour le test d'évaluation externe.

Le niveau d'évaluation extérieur suivant est représenté par 1 ; un décalage de deux niveaux vers l'extérieur est représenté par 2, et ainsi de suite.

En cas d'omission, la valeur par défaut est 1.

Valeur de propriété/valeur de retour

Valeur actuelle de ligne, de column, au niveau de number des tests d'évaluation externes.

Exceptions

Description des erreurs

Notes

EARLIER réussit s'il existe un contexte de ligne avant le début de l'analyse de table. Sinon, une erreur est retournée.

Les performances d' EARLIER peuvent être lentes car, théoriquement, elle peut avoir à effectuer plusieurs opérations qui sont proches du nombre total de lignes (dans la colonne) multiplié par le même nombre (selon la syntaxe de l'expression). Par exemple, si vous avez 10 lignes dans la colonne, approximativement 100 opérations peuvent être requises ; si vous avez 100 lignes, près de 10 000 opérations peuvent être effectuées.

Notes

Dans la pratique, le moteur VertiPaq effectue des optimisations pour réduire le nombre réel de calculs, mais vous devez être prudent lors de la création de formules qui impliquent la récursivité.

Exemple

Pour illustrer l'utilisation d'EARLIER, il est nécessaire de générer un scénario qui calcule une valeur de classement, puis utilise cette valeur de classement dans d'autres calculs.

L'exemple suivant est basé sur cette table simple, ProductSubcategory, qui affiche les ventes totales pour chaque ProductSubcategory.

La dernière table, avec la colonne de classement, est indiquée ici.

ProductSubcategoryKey

EnglishProductSubcategoryName

TotalSubcategorySales

SubcategoryRanking

18

Bib-Shorts

$156,167.88

18

26

Bike Racks

$220,720.70

14

27

Bike Stands

$35,628.69

30

28

Bottles and Cages

$59,342.43

24

5

Bottom Brackets

$48,643.47

27

6

Brakes

$62,113.16

23

19

Caps

$47,934.54

28

7

Chains

$8,847.08

35

29

Cleaners

$16,882.62

32

8

Cranksets

$191,522.09

15

9

Derailleurs

$64,965.33

22

30

Fenders

$41,974.10

29

10

Forks

$74,727.66

21

20

Gloves

$228,353.58

12

4

Handlebars

$163,257.06

17

11

Headsets

$57,659.99

25

31

Helmets

$451,192.31

9

32

Hydration Packs

$96,893.78

20

21

Jerseys

$699,429.78

7

33

Lights

 

36

34

Locks

$15,059.47

33

1

Mountain Bikes

$34,305,864.29

2

12

Mountain Frames

$4,511,170.68

4

35

Panniers

 

36

13

Pedals

$140,422.20

19

36

Pumps

$12,695.18

34

2

Road Bikes

$40,551,696.34

1

14

Road Frames

$3,636,398.71

5

15

Saddles

$52,526.47

26

22

Shorts

$385,707.80

10

23

Socks

$28,337.85

31

24

Tights

$189,179.37

16

37

Tires and Tubes

$224,832.81

13

3

Touring Bikes

$13,334,864.18

3

16

Touring Frames

$1,545,344.02

6

25

Vests

$240,990.04

11

17

Wheels

$648,240.04

8

Création d'une valeur de classement

Une façon d'obtenir une valeur de classement pour une valeur donnée dans une ligne est de compter le nombre de lignes, dans la même table, qui ont une valeur supérieure (ou inférieure) à celle qui fait l'objet de la comparaison. Cette technique retourne un espace ou la valeur zéro pour la valeur la plus élevée dans la table, alors que les valeurs égales auront la même valeur de classement et la valeur suivante (après les valeurs égales) aura une valeur de classement non consécutive. Consultez l'exemple ci-dessous.

Une nouvelle colonne calculée, SubCategorySalesRanking, est créée à l'aide de la formule suivante.

= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1

Les étapes suivantes décrivent la méthode de calcul plus en détail.

  1. La fonction EARLIER obtient la valeur de TotalSubcategorySales pour la ligne actuelle dans la table. Dans ce cas, étant donné que le processus démarre, il s'agit de la première ligne dans la table

  2. EARLIER([TotalSubcategorySales]) a pour valeur $156,167.88, la ligne actuelle dans la boucle externe.

  3. La fonction FILTER retourne maintenant une table où toutes les lignes ont une valeur de TotalSubcategorySales supérieure à $156,167.88 (valeur actuelle de EARLIER).

  4. La fonction COUNTROWS compte les lignes de la table filtrée et attribue cette valeur à la nouvelle colonne calculée dans la ligne actuelle plus 1. L'ajout de 1 est nécessaire pour empêcher la valeur de niveau supérieur de se transformer en espace.

  5. La formule de colonne calculée passe à la ligne suivante et répète les étapes 1 à 4. Ces étapes sont répétées jusqu'à la fin de la table.

La fonction EARLIER obtiendra toujours la valeur de la colonne avant l'opération de table actuelle. Si vous devez obtenir une valeur de la boucle avant cela, affectez la valeur 2 au deuxième argument.

Voir aussi

Référence

Autres ressources