Power Pivot Power Pivot DAX - Aide compréhension formule

Etudiant37000

XLDnaute Nouveau
Bonjour,

Je suis actuellement une formation sur les DAX et malheureusement le formateur n'est pas très généreux d'explication sur les formules qu'il invoque.

Je bloque actuellement sur une formule utillisé pour calculer le jour où le plus grand nombre de ventes a été réalisé.
Le formateur utilise cette formule qui fonctionne très bien

Meilleur date:=Filter(VALUES('Date'[Datekey]);[Sales_Quantity]=CALCULATE([TopSaleDayQt];VALUES('Date'[Datekey])))

Mais je ne comprends pas pourquoi il est nécessaire d'invoquer la fonction CALCULATE pour faire référence à la plus grosse somme de nombre de ventes sur une journée puisque nous l'avons déjà obtenu avec la mesure suivante : TopDaySaleQt:=MAXX(VALUES('Date'[Datekey]);[Sales_Quantity])

Meilleur date:=Filter(VALUES('Date'[Datekey]);[Sales_Quantity]=[TopDaySaleQt])



Autre problème de compréhension du même ordre, je ne comprends pas pourquoi la formule : TopDaySaleQt:=MAXX(VALUES('Date'[Datekey]);[Sales_Quantity])
fonctionne
et pas celle-ci : TopDaySaleQ:=MAXX(VALUES('Date'[Datekey]);SUM([SalesQuantity])) renvoyant la somme globale tel que le ferait SUM([SalesQuantity])

Cela signifierait que invoquer dans une formule une mesure par son nom plutôt que par sa propre formule donne interaction toute différente...

Est ce que quelqu'un saurait m'expliquer pourquoi???


Merci,
 

Pièces jointes

  • Excel Download - Dax compréhension, mesures - 2020 1013.jpg
    Excel Download - Dax compréhension, mesures - 2020 1013.jpg
    379.5 KB · Affichages: 29

Amilo

XLDnaute Accro
Bonjour,

Je ne maitrise malheureusement pas encore toutes les subtilités du langage DAX,
J'avais un temps commencé à m'y intéresser et à lire notamment les livres de Marco Russo (la référence dans ce domaine) mais j'ai quelque peu mis de côté par manque de temps.
Les livres ci-dessous notamment le 1er est l'un des plus complets sur ce que vous pourriez trouver sur le langage DAX :
- The Definitive guide to DAX 2nde Edition
- Analyzing Data with Power BI and Power Pivot for Excel-2017

Les formules et les mesures DAX dépendent beaucoup de la construction du modèle de données.
S'il est bien conçu, les mesures DAX seront plus simples à élaborer.

Je suis très impatient de reprendre un jour la lecture et la pratique de ce langage très puissant.

Sinon, j'avais sous le coude ce lien en Anglais qui évoque dans quel cas utiliser Calculate et pourquoi, c'est déjà un début…..

Cordialement
 

Etudiant37000

XLDnaute Nouveau
Bonsoir Amilo

Merci pour votre retour.
Malheureusement en anglais ça va être compliqué dans l'immédiat..;
Enfin je vais tout de même pour calculate, je l'avais fait pour maxx

Cependant, il là surtout d'un soucis de compréhension de ma part sur la nécessité de mettre calculate dans cette fonction...


Merci quand même

Bonne soirée
 

Amilo

XLDnaute Accro
Re,
C'est justement la subtilité qui m'échappe avec les contextes de lignes, contextes de filtre et surtout de comprendre quand utiliser Calculate pour une transition de l'un à l'autre.

J'aurais besoin de reprendre l'apprentissage de DAX car ce n'était pas très clair dans mon esprit également sachant que c'est la clé pour bien comprendre le fonctionnement du langage.

Peut-être qu'un autre membre saura plus nous éclairer…..

Cordialement
 

chris

XLDnaute Barbatruc
Bonjour

De façon générale un mesure associée à un TCD qui n'utilise pas seulement d'autres mesures mais des fonctions doit utiliser Calculate.

Il me semble que c'est la même logique si on l'inscrit dans l'éditeur PowerPivot dans la mesure où elle ne sera évaluée que dans le contexte de TCD contrairement aux formules des colonnes additionnelles des tables
 

Amilo

XLDnaute Accro
Bonjour Chris,

Merci pour votre réponse et ces précisions. Calculate est la fonction la plus utilisée dans DAX et effectivement elle est nécessaire pour constituer une expression dans laquelle se trouve d'autres fonctions de type Itératives (SUMX) ou simples (SUM) . On peut la retrouver au début d'une mesure ou à l'intérieur d'autres fonctions nécessitant une expression pour l'un des arguments.
Comme par exemple la fonction Filter qui nécessite sauf erreur de ma part, une expression dans le 2ème argument.
C'est effectivement une des raisons....

Cordialement
 

chris

XLDnaute Barbatruc
RE

J'avais acheté le livre Dax Formulas de Rob Collie en 2013

Et ce que j'avais bien noté dans les premiers chapitres, ce sont ses recommandations de créer des mesures simple réutilisées par d'autres mesures plus élaborées et ainsi de suite ce qui permet justement dans nombres de cas de ne pas ou peu utiliser Calculate et d'avoir une syntaxe plus simple à lire.
 

Amilo

XLDnaute Accro
Re,

Rob Collie est aussi une bonne référence,
Le gros frein c'est la compréhension de la langue. J'avais entamé les 1ers chapitres des 2 livres à Marco Russo cités dans mon message #2.
Mais compte tenu de mon niveau en Anglais, c'était compliqué pour moi de traduire et à tout retenir.
Sinon, je consulte parfois son site sqlibi.com qui est pas mal.

Cordialement
 

Etudiant37000

XLDnaute Nouveau
Bonsoir Amilo, Eric,

Merci pour vos réponses.

J'ai avancé un peu sur la question en échangeant avec un ami et par rapport à mes questions il me faisait remarquer :

-Concernant la mesure TopDaySaleQt:=MAXX(VALUES('Date'[Datekey]);[Sales_Quantity])
la nuance serait que de cette manière je créé une sous-table avec values, pour ensuite créer des sommes pour chaque ligne de cette table et ensuite MAXX renvoie la somme de ces lignes de la table qui est la plus importante.
La mesure [Sales_Quantity] basée sur la formule SUM, changerait selon le contexte de filtre imposé par fonction itérative MAXX au sein de la sous-table créée par VALUES.

-Concernant la mesure Meilleur date:=Filter(VALUES('Date'[Datekey]);[Sales_Quantity]=CALCULATE([TopSaleDayQt];VALUES('Date'[Datekey])))
Il s'agirait en fait de donner une valeur unique à l'expression de FILTER car apparemment celle-ci doit-être booléenne https://docs.microsoft.com/fr-fr/dax/filter-function-dax
et lorsque l'on cite une mesure il faudrait considéré cela comme un tableau.
La fonction CALCULATE à l'aide VALUES permet de renvoyer une valeur unique si je comprends bien.

C'est encore frais donc j'oscille entre compréhension et zones d'ombres ^^
 

Statistiques des forums

Discussions
311 725
Messages
2 081 949
Membres
101 851
dernier inscrit
vaiata