Power BI is turning 10! Tune in for a special live episode on July 24 with behind-the-scenes stories, product evolution highlights, and a sneak peek at what’s in store for the future.
Save the dateEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
I'm using those two dax formula's below, but I want to exclude some values in the [FACT] Sales Orders table, like
AUART <> ZSAM
ABGRU <> '01' or '10'
and Order Type = "Standard order" or "Consignment Issue"
But when I put those values in a slicer, I see that the outcome of the measure changes. And that is something I dont want. Want am I doing wrong?
Sales Orders In Full =
VAR Orders =
SUMMARIZE(
'[FACT] Sales Orders',
'[FACT] Sales Orders'[Order],
"InFull",
VAR ThisOrder = [Order]
VAR ValidLines =
FILTER(
'[FACT] Sales Orders',
'[FACT] Sales Orders'[Order] = ThisOrder &&
'[FACT] Sales Orders'[AUART] <> "ZSAM" &&
NOT '[FACT] Sales Orders'[ABGRU] IN { "01", "10" } &&
'[FACT] Sales Orders'[Order Type] IN { "Standard order", "Consignment Issue" }
)
VAR TotalCartons = SUMX(ValidLines,'[FACT] Sales Orders'[Cartons])
VAR DeliveredCartons = SUMX(ValidLines, '[FACT] Sales Orders'[Sales Delivered Cartons])
RETURN IF(
TotalCartons > 0 &&
ABS(TotalCartons - DeliveredCartons) < 0.0001,
1,
0
)
)
VAR TotalOrders = COUNTROWS(Orders)
VAR FullOrders = COUNTROWS(FILTER(Orders, [InFull] = 1))
RETURN
CALCULATE(
DIVIDE(FullOrders, TotalOrders, 0),
NOT '[FACT] Sales Orders'[ABGRU] IN { "01", "10" },
NOT '[FACT] Sales Orders'[AUART] IN { "ZSAM" },
'[FACT] Sales Orders'[Order Type] IN { "Standard order", "Consignment Issue" }
)
OTIF =
VAR Orders =
SUMMARIZE(
'[FACT] Sales Orders',
'[FACT] Sales Orders'[Order],
"IsOTIF",
VAR ThisOrder = [Order]
VAR ValidLines =
FILTER(
'[FACT] Sales Orders',
'[FACT] Sales Orders'[Order] = ThisOrder &&
NOT '[FACT] Sales Orders'[AUART] IN {"ZSAM"} &&
NOT '[FACT] Sales Orders'[ABGRU] IN { "01", "10" } &&
'[FACT] Sales Orders'[Order Type] IN { "Standard order", "Consignment Issue" }
)
VAR TotalLines = COUNTROWS(ValidLines)
VAR OnTimeLines = COUNTROWS(FILTER(ValidLines, '[FACT] Sales Orders'[On Time]))
VAR TotalCartons = SUMX(ValidLines, '[FACT] Sales Orders'[Cartons])
VAR DeliveredCartons = SUMX(ValidLines, '[FACT] Sales Orders'[Sales Delivered Cartons])
VAR IsOnTime = IF(TotalLines > 0 && TotalLines = OnTimeLines, 1, 0)
VAR IsInFull = IF(TotalCartons > 0 && ABS(TotalCartons - DeliveredCartons) < 0.0001, 1, 0)
RETURN IF(IsOnTime = 1 && IsInFull = 1, 1, 0)
)
VAR TotalOrders = COUNTROWS(Orders)
VAR OTIFOrders = COUNTROWS(FILTER(Orders, [IsOTIF] = 1))
RETURN
CALCULATE(
DIVIDE(OTIFOrders, TotalOrders, 0),
NOT '[FACT] Sales Orders'[ABGRU] IN { "01", "10" },
NOT '[FACT] Sales Orders'[AUART] IN { "ZSAM" },
'[FACT] Sales Orders'[Order Type] IN { "Standard order", "Consignment Issue" }
)
Solved! Go to Solution.
Topic can be closed
Solution
OTIF =
VAR SalesOrdersFiltered =
CALCULATETABLE(
'[FACT] Sales Orders',
REMOVEFILTERS('[FACT] Sales Orders'[AUART]),
REMOVEFILTERS('[FACT] Sales Orders'[Order Type]),
REMOVEFILTERS('[FACT] Sales Orders'[ABGRU]),
'[FACT] Sales Orders'[AUART] <> "ZSAM",
'[FACT] Sales Orders'[Order Type] IN { "Standard order", "Consignment Issue" },
NOT '[FACT] Sales Orders'[ABGRU] IN { "01", "10" }
)
VAR Orders =
SUMMARIZE(
SalesOrdersFiltered,
'[FACT] Sales Orders'[Order],
"IsOTIF",
VAR ThisOrder = [Order]
VAR ValidLines =
FILTER(
SalesOrdersFiltered,
'[FACT] Sales Orders'[Order] = ThisOrder
)
VAR TotalLines = COUNTROWS(ValidLines)
VAR OnTimeLines = COUNTROWS(
FILTER(ValidLines, '[FACT] Sales Orders'[On Time])
)
VAR TotalCartons = SUMX(ValidLines, '[FACT] Sales Orders'[Cartons])
VAR DeliveredCartons = SUMX(ValidLines, '[FACT] Sales Orders'[Sales Delivered Cartons])
VAR IsOnTime = IF(TotalLines > 0 && TotalLines = OnTimeLines, 1, 0)
VAR IsInFull = IF(TotalCartons > 0 && DeliveredCartons >= TotalCartons, 1, 0)
RETURN IF(IsOnTime = 1 && IsInFull = 1, 1, 0)
)
VAR TotalOrders = COUNTROWS(Orders)
VAR OTIFOrders = COUNTROWS(FILTER(Orders, [IsOTIF] = 1))
RETURN
DIVIDE(OTIFOrders, TotalOrders, 0)
Topic can be closed
Solution
OTIF =
VAR SalesOrdersFiltered =
CALCULATETABLE(
'[FACT] Sales Orders',
REMOVEFILTERS('[FACT] Sales Orders'[AUART]),
REMOVEFILTERS('[FACT] Sales Orders'[Order Type]),
REMOVEFILTERS('[FACT] Sales Orders'[ABGRU]),
'[FACT] Sales Orders'[AUART] <> "ZSAM",
'[FACT] Sales Orders'[Order Type] IN { "Standard order", "Consignment Issue" },
NOT '[FACT] Sales Orders'[ABGRU] IN { "01", "10" }
)
VAR Orders =
SUMMARIZE(
SalesOrdersFiltered,
'[FACT] Sales Orders'[Order],
"IsOTIF",
VAR ThisOrder = [Order]
VAR ValidLines =
FILTER(
SalesOrdersFiltered,
'[FACT] Sales Orders'[Order] = ThisOrder
)
VAR TotalLines = COUNTROWS(ValidLines)
VAR OnTimeLines = COUNTROWS(
FILTER(ValidLines, '[FACT] Sales Orders'[On Time])
)
VAR TotalCartons = SUMX(ValidLines, '[FACT] Sales Orders'[Cartons])
VAR DeliveredCartons = SUMX(ValidLines, '[FACT] Sales Orders'[Sales Delivered Cartons])
VAR IsOnTime = IF(TotalLines > 0 && TotalLines = OnTimeLines, 1, 0)
VAR IsInFull = IF(TotalCartons > 0 && DeliveredCartons >= TotalCartons, 1, 0)
RETURN IF(IsOnTime = 1 && IsInFull = 1, 1, 0)
)
VAR TotalOrders = COUNTROWS(Orders)
VAR OTIFOrders = COUNTROWS(FILTER(Orders, [IsOTIF] = 1))
RETURN
DIVIDE(OTIFOrders, TotalOrders, 0)
But when I put those values in a slicer, I see that the outcome of the measure changes. And that is something I dont want.
Why not? That's the purpose of slicers, to impact the measures. What do your report users expect?
User | Count |
---|---|
22 | |
11 | |
8 | |
6 | |
6 |
User | Count |
---|---|
25 | |
12 | |
11 | |
7 | |
6 |