Forum Discussion

srineo's avatar
srineo
Regular Visitor
8 years ago
Solved

Logic in M query

Hi all,

 

I'm looking for help in coming with a logic in M query or DAX for below problem. Based on Assignment and Pallet ID - I would need to fill Break Indicator. With in a assignment at the end of every second pallet ID i would need to fill 'X' in break Ind column.

If no second pallet but assignment end line reached then mark X (last line in assignment '1' ). 

 

 

AssignmentPallet IDBreak Ind
11 
11 
11 
12X
13 
13X
24 
24 
25 
25X
26 
26 
27X

 

Thanks,

Sri

  • srineo,

     

    You may follow the steps below.

    1) add an index column in Query Editor

    2) add a calculated column in DAX

    Column =
    VAR m =
        MAXX (
            FILTER ( Table1, Table1[Assignment] = EARLIER ( Table1[Assignment] ) ),
            Table1[Index]
        )
    VAR f =
        LOOKUPVALUE (
            Table1[Pallet ID],
            Table1[Assignment], Table1[Assignment],
            Table1[Index], Table1[Index] + 1
        )
            = Table1[Pallet ID]
    VAR r =
        RANKX (
            FILTER ( Table1, Table1[Assignment] = EARLIER ( Table1[Assignment] ) ),
            Table1[Pallet ID],
            ,
            ASC,
            DENSE
        )
    RETURN
        IF ( Table1[Index] = m || ( f = FALSE () && MOD ( r, 2 ) = 0 ), "X" )
    

2 Replies

  • v-chuncz-msft's avatar
    v-chuncz-msft
    Community Support

    srineo,

     

    You may follow the steps below.

    1) add an index column in Query Editor

    2) add a calculated column in DAX

    Column =
    VAR m =
        MAXX (
            FILTER ( Table1, Table1[Assignment] = EARLIER ( Table1[Assignment] ) ),
            Table1[Index]
        )
    VAR f =
        LOOKUPVALUE (
            Table1[Pallet ID],
            Table1[Assignment], Table1[Assignment],
            Table1[Index], Table1[Index] + 1
        )
            = Table1[Pallet ID]
    VAR r =
        RANKX (
            FILTER ( Table1, Table1[Assignment] = EARLIER ( Table1[Assignment] ) ),
            Table1[Pallet ID],
            ,
            ASC,
            DENSE
        )
    RETURN
        IF ( Table1[Index] = m || ( f = FALSE () && MOD ( r, 2 ) = 0 ), "X" )