Power BI is turning 10, and we’re marking the occasion with a special community challenge. Use your creativity to tell a story, uncover trends, or highlight something unexpected.
Get startedJoin us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.
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?
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
Check out the June 2025 Power BI update to learn about new features.
User | Count |
---|---|
10 | |
9 | |
8 | |
7 | |
6 |
User | Count |
---|---|
14 | |
13 | |
11 | |
9 | |
8 |