Forum Discussion

pk1593's avatar
pk1593
Helper I
3 years ago
Solved

DAX Code Help

I have a sample data with Survey waves (from 5 different time periods 1 to 5). 

Need help in creating the below 3 columns highlighted in green. 

1. Latest Wave column: Need to create a new column in Power BI using DAX. This should be based on "Maximum" value from Survey_Wave column. If true 1 or else 0. 

2. Previous Wave column: Need to create a new column in Power BI using DAX. This should be based on "Maximum" value -1 from Survey_Wave column. If true 1 or else 0. 

3. Last 3 waves columns: Need to create a new column in Power BI using DAX. This should be based on "Top 3" value from Survey_Wave column. If true 1 or else 0. 

It is important to note that the code should be dynamic as the Survey_Wave column over time will get more values (6, 7 .... etc going forward in time)

 

Desired Result as below: 

Pbix file link - Download here

 

  • Hi, 

    Here is one way to do this:

    Data:

     

    Dax:

    Latest =
    var _max = MAX('Table (35)'[survey_wave]) return
    IF('Table (35)'[survey_wave] = _max,1,0)

    2. 
    Latest =
    var _max = MAX('Table (35)'[survey_wave])-1 return
    IF('Table (35)'[survey_wave] = _max,1,0)

    top 3 = 
    var _max = MAX('Table (35)'[survey_wave])-2 return
    IF('Table (35)'[survey_wave] >= _max,1,0)


    Test (added data):

     

    End result:

     

    I hope this post helps to solve your issue and if it does consider accepting it as a solution and giving the post a thumbs up!

    My LinkedIn: https://www.linkedin.com/in/n%C3%A4ttiahov-00001/

2 Replies

  • ValtteriN's avatar
    ValtteriN
    Community Champion

    Hi, 

    Here is one way to do this:

    Data:

     

    Dax:

    Latest =
    var _max = MAX('Table (35)'[survey_wave]) return
    IF('Table (35)'[survey_wave] = _max,1,0)

    2. 
    Latest =
    var _max = MAX('Table (35)'[survey_wave])-1 return
    IF('Table (35)'[survey_wave] = _max,1,0)

    top 3 = 
    var _max = MAX('Table (35)'[survey_wave])-2 return
    IF('Table (35)'[survey_wave] >= _max,1,0)


    Test (added data):

     

    End result:

     

    I hope this post helps to solve your issue and if it does consider accepting it as a solution and giving the post a thumbs up!

    My LinkedIn: https://www.linkedin.com/in/n%C3%A4ttiahov-00001/