DAXは初めてです。
私は現在PowerBIを使用しており、いくつかの異なるSKU(またはID)を使用して売上の合計を作成しようとしています。
これを使用して、1 sku( "A1")までフィルタリングできます。
Measure = CALCULATE([Sum of Sales]、Table4 [SKU] = "A1")
ただし、5つの異なるSKUに絞り込みたいと思います。
データ例:
2 1,050.54
3 43,925.20
4 8,596.00
5 1,630.00
8 3,330.00
A1 45.24
A2 499.87
A3 53,567.05
A4 337.92
A5 4,265.00
AB 12,651.94
ACC 7,634.95
ADV -1,769.95
ANT 1.60
AUTO 9,655.40
BOOT 268.00
これは可能ですか?
[〜#〜] calculate [〜#〜] はCALCULATE(<expression>,<filter1>,<filter2>…)
として定義されます。これは、一度に複数のフィルターを使用できることを意味します。ただし、複数のフィルターが同時に機能します。つまり、データは両方の条件を満たす必要があります。
したがって、BadSumOfSales:=CALCULATE([Sum of Sales],Table3[SKU]="A1",Table4[SKU]="AB")
を実行しても、必要なものは得られません。 SKUはA1およびABと等しくなければならないため、blankを返します。
フィルタリングに含めたい項目が5つあるので、 [〜#〜] switch [〜#〜] 関数を利用する必要があります。これにより、 [〜#〜] true [〜#〜] を返す複数の条件に対応し、 [〜#〜] falseを返すことができます。 [〜#〜] その他の場合
TotalsSumOfSales:=CALCULATE([Sum Of Sales],
SWITCH(Table4[SKU],
"A1",TRUE(),
"A2",TRUE(),
"A3",TRUE(),
"4" ,TRUE(),
"5" ,TRUE(),
"8" ,TRUE(),
FALSE()
))
これを回避する別の方法は、 [〜#〜]または[〜#〜] 関数を使用することです。これは優れたオプションですが、一度に2つのフィルターがある場合にのみ実際にうまく機能します。 2つ以上ある場合は、複雑になる可能性のあるネストを行う必要があります。したがって、あなたの場合は、 [〜#〜] switch [〜#〜] を使用しますが、次のようになります。
OrTotalSumOfSales:=CALCULATE([Sum of Sales],
OR(
Table4[SKU]="A1",
Table4[SKU]="A2"
))
この場合の最良のアイデアは、DAXでIN
演算子を使用することです。パフォーマンスはパイプ演算子やOR
よりもはるかに優れており、コードが読みやすくなります。
これは、DAXの最新バージョンでのみサポートされています。
GroupingSales:=CALCULATE([Sum of Sales],Table[SKU] IN {"A1","A2","A3","AB"})
CONTAINSROW
を使用することもできます。
Orバージョンの3番目の方法です。ダブルパイプを使用できます '||'これは、フィルターでOrステートメントとして機能します。
Measure = CALCULATE([Sum of Sales],Table4[SKU]="A1" || Table4[SKU]="A2" ||
Table4[SKU]="A3" ||Table4[SKU]="A4" || Table4[SKU]="A5")
問題を解決するために実際にDAXを使用するべきではない5つの異なるSKUにフィルターをかけるというあなたの要求に基づいていると思います。
Excelにピボットテーブルを挿入するだけで、SKUを行に追加し、売上を値に追加できます。必要に応じて、集計を調整して(ただし、デフォルトではSUMになっていると思います)、適切なデータがすでにあるはずです。残っているのは、必要なSKUだけにフィルターすることだけです。テーブルを作成するだけで、PowerViewでも同じことができます。次に、SKUをフィルターペインに追加して、必要な5つのSKUを選択できます。
Power BI、-Lukaszの使用に感謝します