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
erhan_79
Post Prodigy
Post Prodigy

Calculating violation

Hi there ;

 

i need your kind support for below issue pls : 

 

i have table as below , the yellow marked last colum that i want to create in my table.I need dax formula for column , not measure.

 

So pls let me explain what is this table and in which rules i need yellow column.

 

in this table there are materials that indexed as group for each them , there are request quantities and request dates  , delivery quantities and  delivery dates ,

" open quantity" column shows : request quantity -delivery quantity

"statu"  column shows that  if all the materials delivered or not , if all material delivered closed , if not open.

 

i  would like to find if there is violation while delivering quantities.So rules like that : 

 

  • IF the status is "open" system will check next all row's delivery quantity for each material , every checking will be for the material that we are on .  if there is even 1 pcs delivery quantity in next rows  system will write last column " violation" , if there is o ay delivered quantity in all next lines then here will be blank
  • If the status is "closed" , system will check request delivery date ad will compare delivery date of the next line's.If in the one next lines there will be a delivery date earlier than its own  request date again system will write "violation" , if not will be blank
  • For each material for the lastest row system will write blank that yellow column

 

Capture.JPG

 

to make your calculation easier i am sharig with you excels ource as below :

 

https://drive.google.com/file/d/1252yy235azu94tCWCUDAbjI3f1FPEqvy/view?usp=sharing

 

i hope it is clear thanks in advance for your kind help

1 ACCEPTED SOLUTION
TomMartens
Super User
Super User

Hey @erhan_79 ,

I assume this DAX statement allows to create a calculated column that returns what you are looking for:

violation = 
var __Material = 'Table'[Material]
var __Index = 'Table'[Index]
var __Status =  'Table'[Status]
var __DeliveryDate = 'Table'[Delivery Date]
var doSucceedingDeliveriesExist =
    IF( __Status = "Open"
        , IF(
            CALCULATE( 
                MAX( 'Table'[Delivery Quantity] )
                , FILTER(
                    ALL( 'Table')
                    , 'Table'[Material] = __Material && 'Table'[Index] > __Index
                )
            ) > 0
            , "Violation"
            , BLANK()
        )
    )
var doOpenPreceedingDeliveriesExist =
    IF( __Status = "Closed"
        , IF(
            CALCULATE( 
                MIN( 'Table'[Delivery Date] )
                , FILTER(
                    ALL( 'Table')
                    , 'Table'[Material] = __Material && 'Table'[Index] > __Index
                )
            ) <= __DeliveryDate
            , "Violation"
            , BLANK()
        )
    )
return
IF( doSucceedingDeliveriesExist = "Violation" || doOpenPreceedingDeliveriesExist = "Violation"
    , "Violation"
    , BLANK()
)

Here is a screenshot of the result, be aware that I call the column violation:

image.png

Hopefully, this provides what you are looking for.

 

Regards,

Tom

 



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany

View solution in original post

2 REPLIES 2
TomMartens
Super User
Super User

Hey @erhan_79 ,

I assume this DAX statement allows to create a calculated column that returns what you are looking for:

violation = 
var __Material = 'Table'[Material]
var __Index = 'Table'[Index]
var __Status =  'Table'[Status]
var __DeliveryDate = 'Table'[Delivery Date]
var doSucceedingDeliveriesExist =
    IF( __Status = "Open"
        , IF(
            CALCULATE( 
                MAX( 'Table'[Delivery Quantity] )
                , FILTER(
                    ALL( 'Table')
                    , 'Table'[Material] = __Material && 'Table'[Index] > __Index
                )
            ) > 0
            , "Violation"
            , BLANK()
        )
    )
var doOpenPreceedingDeliveriesExist =
    IF( __Status = "Closed"
        , IF(
            CALCULATE( 
                MIN( 'Table'[Delivery Date] )
                , FILTER(
                    ALL( 'Table')
                    , 'Table'[Material] = __Material && 'Table'[Index] > __Index
                )
            ) <= __DeliveryDate
            , "Violation"
            , BLANK()
        )
    )
return
IF( doSucceedingDeliveriesExist = "Violation" || doOpenPreceedingDeliveriesExist = "Violation"
    , "Violation"
    , BLANK()
)

Here is a screenshot of the result, be aware that I call the column violation:

image.png

Hopefully, this provides what you are looking for.

 

Regards,

Tom

 



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany

This is exactly what i look for , thank you very much @TomMartens !

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.