Forum Discussion

Mer333's avatar
Mer333
Regular Visitor
9 years ago
Solved

How to calculate a sequence?

Hello everyone!

 

Just recently I tried to use Power BI again after a year of delay and I stuck with a rare issue.

 

I need to calculate a sequence of hired people.

 

There are 3 columns

Week  Position ID  Name

 

Position ID is stable, but names can vary from week to week for the same Position ID in case of Vacancy or other reasons.

 

I need to mark each name change as a new number in sequence for the particular Position ID. At the same time, names can be repeated (if there was a vacancy (1) for a few weeks, then a person (2) and a vacancy again (3)).

 

At this moment it doesn't matter where to solve the problem, in DAX or M.

 

I've uploaded an example here:

https://dl.dropboxusercontent.com/u/4601806/Calculating%20sequence.xlsx

 

Thank you very much in advance!

  • Hi Mer333,

     

    To achieve your goal, only need to add some calculated columns to source table (in my test, it's named as Table1), please refer to below DAX formulas:

    Previous Name for same ID =
    LOOKUPVALUE (
        Table1[Name],
        Table1[Position ID], Table1[Position ID],
        Table1[Week], Table1[Week] - 1
    )
    
    flag =
    IF ( Table1[Previous Name for same ID] = Table1[Name], 0, 1 )
    
    Number in sequence =
    CALCULATE (
        SUM ( Table1[flag] ),
        ALLEXCEPT ( Table1, Table1[Position ID] ),
        Table1[Week] <= EARLIER ( Table1[Week] )
    )

    Result output.

     

    Best regards,
    Yuliana Gu

5 Replies

  • v-yulgu-msft's avatar
    v-yulgu-msft
    Microsoft Employee

    Hi Mer333,

     

    To achieve your goal, only need to add some calculated columns to source table (in my test, it's named as Table1), please refer to below DAX formulas:

    Previous Name for same ID =
    LOOKUPVALUE (
        Table1[Name],
        Table1[Position ID], Table1[Position ID],
        Table1[Week], Table1[Week] - 1
    )
    
    flag =
    IF ( Table1[Previous Name for same ID] = Table1[Name], 0, 1 )
    
    Number in sequence =
    CALCULATE (
        SUM ( Table1[flag] ),
        ALLEXCEPT ( Table1, Table1[Position ID] ),
        Table1[Week] <= EARLIER ( Table1[Week] )
    )

    Result output.

     

    Best regards,
    Yuliana Gu

    • Mer333's avatar
      Mer333
      Regular Visitor

      Hi Yuliana!

       

      Thank you so much! But it seems that problem expands a bit. I found two different names for the same id in some periods. Do you know how to exclude them from the calculation? Otherwise lookupvalue doesn't work. Thank you!

      • v-yulgu-msft's avatar
        v-yulgu-msft
        Microsoft Employee

        Hi Mer333,

         

        In that case, how to display the sequence number? Could you please share some data?

         

        Regards,
        Yuliana Gu

  • Anonymous's avatar
    Anonymous
    Not applicable

    I also wont to make a sequence column each ID No.. What I want to make is more simle than his case.

    The ID Column is on tha table named "table1". For example, if ID"32437990" is at this column 3rd, I want to give first "32437990" the "1" sequence NO., 2nd this the "2" and 3rd this the "3".

     

     It also doesn't matter where to solve the problem, in DAX or M.

     

    Please your advice .