2016-06-21 2 views
1

J'ai une table (Data_all) qui calcule daycount_ytd dans une table.Comment faire référence à une seule valeur dans une colonne calculée dans une mesure (DAX)

[Date] is in Date Format. 
[Fiscal Year] is just year. eg: 2016 

Calculated Column 
daycount_ytd=DATEDIFF("01/01/"&[Fiscal Year],Data_all[Date],day)+1 

Im essayant de créer une mesure qui fait référence à cette colonne calculée

Measure: 
Amt_X Yield %:=[Amt X]/([Amt Y]/365* (Data_all[DayCount_YTD])) 

Je reçois l'erreur Data_all [DayCount_YTD] fait référence à une liste de valeurs. Comment puis-je filtrer l'expression pour obtenir une seule valeur sans utiliser une fonction d'agrégation, par exemple: (somme, médiane)?

Ou peut-être, existe-t-il un autre moyen de réaliser le même calcul?

Répondre

0

Vous êtes arrivé à un concept fondamental dans DAX et une fois que vous avez trouvé comment y faire face, la solution se généralise à de nombreux scénarios. Fondamentalement, vous ne pouvez pas simplement passer des colonnes dans une mesure DAX sans les encapsuler dans quelque chose d'autre - généralement une sorte d'opération mathématique ou vous pouvez utiliser VALUES() selon exactement ce que vous essayez de faire.

Cette mesure fonctionnera bien si vous l'utilisez dans un PIVOT la date comme une étiquette de ligne:

= 
    SUM (data_all[Amt X]) 
/(
     SUM (data_all[Amt Y])/365 
     * MAX (data_all[daycount_ytd]) 
    ) 

Cependant, vous le verrez, vous donne un total incorrect car il est dans le dernier pour l'ensemble de chose. Ce dont vous avez besoin est une version qui itère sur les lignes, puis effectue un calcul sur SUM ou AVERAGE chaque élément. Il y a toute une classe de fonctions DAX dédiées à cela comme SUMX, AVERAGEX etc. Vous pouvez en lire plus à leur sujet here

Il n'est pas totalement clair pour moi quelles devraient être les maths derrière votre 'total' mais la mesure suivante calcule la valeur pour chaque jour et les résume ainsi:

= 
    SUMX(
     VALUES(data_all[date]), 
     SUM(data_all[Amt X])/
     (SUM(data_all[Amt Y])/365 * MAX(data_all[daycount_ytd])) 
     ) 
+0

Merci pour la réponse, mais la formule est en fait un calcul de pourcentage, donc je ne pense pas que je peux résumer la valeur pour chaque jour. –

+0

J'ai utilisé values ​​() combiné avec une autre table (une seule ligne) pour arriver à mon calcul à la fin. –