web-dev-qa-db-fra.com

Mesure dans DAX pour calculer l'année en cours pour le mois choisi uniquement pour Power BI

Comment construire une mesure DAX pour calculer la somme de la valeur de YTD pour un mois spécifique? 

Ici nous avons FactTable groupé par mois. FactTable est rempli à la fois de données réelles et de données prévisionnelles. Le seul moyen de savoir quand la fin réelle est l'information dans le tableau [date du jour] dans la colonne [Fin de l'année]. Dans le tableau [Date limite] dans la colonne [Fin de l'année] - il s'agit d'une table à valeur unique - nous avons le mois intéressant choisi pour lequel nous voulons voir le calcul de l'année en cours. Dans notre cas, c'est mars. FactTable est mis à jour de manière irrégulière tous les mois avec un délai généralement d'un mois. Il n'y a aucun moyen de le relier à des fonctions horaires telles que TODAY en raison d'une mise à jour irrégulière.

 enter image description here  enter image description here .__ Nous aimerions avoir une valeur correcte de YTD affichée en jaune Card Visual pour le mois [Fin de YTD]. Lorsque nous cliquons sur le slicer sur "2018-03", nous obtenons presque ce que nous voulons - la valeur correcte de 66 dans la carte jaune. Cependant cette solution n'est pas automatique. Je veux voir la valeur correcte automatiquement lorsque le mois [Fin d'année en cours] change, dans notre cas en avril ou en mai. Je ne veux pas que ce soit fait par l'utilisateur. 

Mon effort désespéré peut être téléchargé à partir du fichier: DAX YTD.pbix

J'ai poursuivi le cerf de différentes manières:

  1. En utilisant la fonction FILTER dans les mesures DAX. Mais il semble que la fonction FILTER est trop dure. Il s’applique d’abord à la table de faits, puis à la sélection d’un mois seulement, puis au calcul erroné de la valeur de YTD. Donc, si Il y avait une option pour forcer l'ordre de calcul et filtrer, il y auraitbe espoir. 
  2. J'ai essayé la fonction SWITCH pour afficher le résultat correct Pour un mois spécifique et 0 ou nul pour les autres mois. Bien que j'aie réussi, je n'ai pas pu en profiter. Quand il a commencé à filtrer, j'étais aussi désespéré qu'auparavant. En passant, je serais capable de le faire si SWITCH produisait des totaux à la fin du tableau, mais ce n'est pas le cas. Étonnamment.
  3. Je mets quelques espoirs dans la fonction RELATIVE pour afficher des résultats corrects dans le tableau [Date limite]. Je n'ai pas encore quitté le brouillard. 

J'apprécierais votre aide. 

Mise à jour avant la prime. Aller au niveau supérieur. J'ai introduit une colonne Catégorie dans FactTable. Veuillez télécharger DAX YTD par category.pbix . Donc, le filtrage devient plus complexe maintenant. J'aimerais avoir les chiffres exacts pour la catégorie des pommes depuis le début de l'année. 

6
Przemyslaw Remin

Je résoudrais cela en ajoutant une colonne calculée à votre tableau Calendrier pour classer chaque ligne en "YTD" ou "Autre", par exemple.

Is YTD =
IF (
    [Date] >= DATE ( YEAR ( DISTINCT ( 'Cut off date'[End of YTD] ) ), 1, 1 )
        && [Date] <= DISTINCT ( 'Cut off date'[End of YTD] ),
    "YTD",
    "Other"
)

J'ajouterais ensuite le nouveau champ Is YTD aux filtres de niveau visuel de votre visuel Carte, puis choisissezYTDdans la liste de filtrage de base. La mesure indiquée peut être votre simple Total measure: SUM (FactTable [Value]).

Il s’agit d’une solution bien plus souple et plus résistante que n’importe quelle gymnastique de mesure spécifique. Vous n'aurez pas besoin d'une explosion de mesures pour appliquer la logique requise en plus de chaque mesure de base - elles fonctionneront toutes naturellement. Vous pouvez appliquer le filtre à n’importe quel niveau: visuel, page, rapport ou le placer dans un segment afin qu’il soit contrôlé par l’utilisateur final.

Je préfère renvoyer les résultats textuels, par exemple. "YTD"/"Other" (plutôt que 1/0, True/False ou Yes/No), car cela permet une extension facile à d'autres exigences, par exemple. "Prior YTD" (1er janvier 2017 au 1er mars 2017). Il est également plus clair lorsqu'il est utilisé dans les éléments visuels.

En fait, je ne devrais pas réclamer le crédit pour cette conception - cela suit à peu près comment la fonctionnalité Heure relative de Cognos Transformer fonctionnait dans les années 90. 

1
Mike Honey