Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

DAX: When same values in column, evaluate the max and return 0 or 1 based on the condition

Hello there!

I'm basically trying to calculate a KPI called OTIF (on time in full delivery) and OTIF%

Easiest to explain through a table:

 

Order numberPart numberDifference in delivery date (days)OTIF

1000

ABC-20
1000CDE40
1000EFG-20
1001ABC-11
1001CDE-11
1002ABC01
1002CDE-11

 

So basically, if the order number is the same --> get the max of difference in delivery days --> if max is less than or equal to 0, OTIF = 1 but if it is greater than 0 = 0.

 

Then I want to calculate the percentage for all those lines:

2 orders was OTIF and 1 was not --> 2/3 OTIF. How do I only calculate the OTIF = 1 once per order number?

 

Thanks for any help. This has bothered me for a couple of days.

2 ACCEPTED SOLUTIONS
Mariusz
Community Champion
Community Champion

Hi @Anonymous 

 

Try the below calculation it can be used as a Column or Measure.

 

Column = 
CALCULATE(
    VAR __max = MAX( 'Table'[Difference in delivery date (days)] )
    RETURN INT( __max <= 0 ),
    ALLEXCEPT( 'Table', 'Table'[Order number] )
)

 

Best Regards,
Mariusz

If this post helps, then please consider Accepting it as the solution.

View solution in original post

Hi @Anonymous 

 

Try this 

Measure = 
DIVIDE(
    CALCULATE(
        DISTINCTCOUNT( 'Table'[Order number] ),
        ALL( 'Table' ),
        'Table'[Column] = 1
    ),
    COUNTROWS( ALL( 'Table'[Order number] ) )
)

 

 

Best Regards,
Mariusz

If this post helps, then please consider Accepting it as the solution.

 

View solution in original post

5 REPLIES 5
Mariusz
Community Champion
Community Champion

Hi @Anonymous 

 

Try the below calculation it can be used as a Column or Measure.

 

Column = 
CALCULATE(
    VAR __max = MAX( 'Table'[Difference in delivery date (days)] )
    RETURN INT( __max <= 0 ),
    ALLEXCEPT( 'Table', 'Table'[Order number] )
)

 

Best Regards,
Mariusz

If this post helps, then please consider Accepting it as the solution.
Anonymous
Not applicable

Thanks alot! That was fast!

 

It worked at least as a calculated column to return 0 and 1.

Do you also happen to know how I could calculate the %?

 

I guess that would be a measure in a similar way, using allexcept also?

 

OTIF% = count distinct order number where OTIF = 1 / all orders

Hi @Anonymous 

 

Try this 

Measure = 
DIVIDE(
    CALCULATE(
        DISTINCTCOUNT( 'Table'[Order number] ),
        ALL( 'Table' ),
        'Table'[Column] = 1
    ),
    COUNTROWS( ALL( 'Table'[Order number] ) )
)

 

 

Best Regards,
Mariusz

If this post helps, then please consider Accepting it as the solution.

 

Anonymous
Not applicable

You're a genius! 

 

Thanks alot Mariusz

Hi @Anonymous 


Glad I could help.

 

Best Regards,
Mariusz

 

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors