2017-01-19 9 views
0

All()関数を使用してCycleNameというフィールドをフィルタ処理し、FILTER()関数を使用してモーメントフィールドをフィルタリングしようとしています。何らかの理由で2つの機能を組み合わせると、PowerBIでエラーが返されます。1つのフィールドをフィルタリングして別のフィールドをフィルタリングしないでください。

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

とエラーは、次のとおりです:

これは私のDAX関数です「列 『瞬間』を見つけることができないか、この式で使用することはできません」私は奇妙見つける何

は私がしようとした場合にのみPowerBIをフィルタリングしていることであるが、正しく私の瞬間列を検出します。

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

私はCycleNameをunfilterして、瞬間でフィルタをかけることができないのはなぜ?

答えて

0

[Moment]列を使用できないのは、FILTERの最初の引数がテーブルまたはテーブルを返す関数だからです。

ALL(PowerBIHeadcount[CycleName]) 

であなただけのCycleNameが含まれている1つの列のテーブルを返し、あなたのフィルタリング条件にテーブルの参照を指定していないため、機能が提供さテーブルから列を使用しようとします。そして、[モーメント]列のinitはありません。明示的に指定してみてください

PowerBIHeadCount[Moment] = "Current forecast" 

これは常に完全修飾名を指定することをお勧めします。 だから、最終的には次のようになります。

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

別のオプションは、あなたの計算機能に別の引数としてCycleName列からフィルタを削除し、FILTERを残すことになります。例:

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

ALL(PowerBIHeadcount)をお試しください。

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

全体テーブルの上にALL機能を使用すると、テーブル内の任意の列に適用される任意のexplitフィルタを無効にするだろう、あなたはそれでOKであれば、あなたはこのソリューションを使用することができ、そうでなければ、ALLEXCEPT()を使用する場合があります。

これが役立つかどうか教えてください。

関連する問題