2017-01-19 1 views
0

Ich versuche, die All() Funktion zu verwenden, um ein Feld mit Namen CycleName zu filtern und dann die Funktion FILTER() zu verwenden, um mit meinem Momentfeld zu filtern. Aus irgendeinem Grund gibt jedoch die Kombination der beiden Funktionen einen Fehler in PowerBI zurück.Unfilter ein Feld und Filter durch andere funktioniert nicht

Dies ist meine DAX-Funktion:

CurrentForecastVar = CALCULATE(SUM([Amount]), FILTER(ALL(PowerBIHeadcount[CycleName]), [Moment] = "Current Forecast")) 

Und der Fehler ist: „Spalte‚Moment‘kann nicht gefunden werden oder nicht in diesem Ausdruck verwendet werden“

Was ich seltsam finde ist, dass, wenn ich Filterung versuchen nur PowerBI richtig meine Moment Spalte erkennt:

CurrentForecastVar = CALCULATE(SUM([Amount]), FILTER(PowerBIHeadcount, [Moment] = "Current Forecast")) 

Warum kann ich nicht keine Filterung CycleName und filtern dann durch Moment?

Antwort

0

Der Grund, warum Sie die Spalte [Moment] nicht verwenden können, liegt daran, dass das erste Argument des FILTER eine Tabelle oder eine Funktion ist, die eine Tabelle zurückgibt. Mit

ALL(PowerBIHeadcount[CycleName]) 

zurückkehren Sie eine Spalte Tabelle, die CycleName nur enthält und da Sie nicht angegeben haben versucht, eine Tabelle Verweis in der Filterbedingungen die Funktionen die Spalte aus der bereitgestellten Tabelle zu verwenden. Und es gibt keine Spalte [Moment] init. Versuchen Sie explizit anzugeben

PowerBIHeadCount[Moment] = "Current forecast" 

Das ist eine Best Practice, um immer vollständige qualifizierende Namen anzugeben. So würde der letzte sein:

CurrentForecastVar = CALCULATE(SUM([Amount]), FILTER(ALL(PowerBIHeadcount[CycleName]), PowerBIHeadcount[Moment] = "Current Forecast")) 

Eine andere Möglichkeit wäre, dass Sie die Filter aus der CycleName Spalte als ein weiteres Argument in Ihrer CALCULATE-Funktion und lassen Sie den Filter entfernen. Zum Beispiel:

CurrentForecastVar = 
CALCULATE(
SUM([Amount]), 
ALL(PowerBIHeadcount[CycleName]), 
FILTER(PowerBIHeadcount, [Moment] = "Current Forecast") 
) 
0

Versuchen Sie, ALL(PowerBIHeadcount) zu verwenden.

CurrentForecastVar = 
CALCULATE (SUM ([Amount]), FILTER (ALL ('PowerBIHeadcount'), [Moment] = "Current Forecast")) 

die ALL Funktion auf der gesamten Tabelle verwenden würde jeden explit Filter auf jede Spalte in der Tabelle angewandt deaktivieren, wenn Sie mit der ok sind, können Sie diese Lösung verwenden, sonst könnten Sie wollen ALLEXCEPT() verwenden.

Lassen Sie mich wissen, ob dies hilft.

Verwandte Themen