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

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
Vijay08V
Helper III
Helper III

Need DAX Help for calculated column

Hi,

 

I have a similar table as below and I'm trying to introduce a calculated column which evaluates at row level and gives me the FTE count. The logic that I'm trying to put is when I have Revised FTE, Locked FTE and Planned FTE values available (not zero), the logic should populate revised FTE value. Likewise if Revised FTE is zero then it should populate Locked FTE or else Planned FTE count. I tried using IF function and Switch function, still I'm not getting the expected output. Any help on this would be highly appreciated. Thanks!

 

Example 1 :

Tab Name Table NameMetricsDateValueVendorReport DateIDExpected output
AABPlanned  FTE12-31-20231553ABC26-05-24 0:00  
AABHours12-31-202337291ABC26-05-24 0:00  
AABLocked FTE 12-31-2023892ABC26-05-24 0:00  
AABRevised FTE 12-31-2023965ABC26-05-24 0:00 965
AABGraduates12-31-202339ABC26-05-24 0:00  
AABWeek Four12-31-20230ABC26-05-24 0:00  
AABWeek Three12-31-20230ABC26-05-24 0:00  
AABWeek Two12-31-20230ABC26-05-24 0:00  
AABWeek One12-31-20230ABC26-05-24 0:00  
AABWeek One12-31-20230ABC26-05-24 0:00  
AAB Week Two12-31-20230ABC26-05-24 0:00  

 

Example 2 :

Tab Name Table NameMetricsDateValueVendorReport DateIDExpected output
AABPlanned  FTE12-31-20231553ABC26-05-24 0:00  
AABHours12-31-202337291ABC26-05-24 0:00  
AABLocked FTE 12-31-2023892ABC26-05-24 0:00 892
AABRevised FTE 12-31-20230ABC26-05-24 0:00  
AABGraduates12-31-202339ABC26-05-24 0:00  
AABWeek Four12-31-20230ABC26-05-24 0:00  
AABWeek Three12-31-20230ABC26-05-24 0:00  
AABWeek Two12-31-20230ABC26-05-24 0:00  
AABWeek One12-31-20230ABC26-05-24 0:00  
AABWeek One12-31-20230ABC26-05-24 0:00  
AAB Week Two12-31-20230ABC26-05-24 0:00  

 

Example 3 :

 

Tab Name Table NameMetricsDateValueVendorReport DateIDExpected output
AABPlanned  FTE12-31-20231553ABC26-05-24 0:00 1553
AABHours12-31-202337291ABC26-05-24 0:00  
AABLocked FTE 12-31-20230ABC26-05-24 0:00  
AABRevised FTE 12-31-20230ABC26-05-24 0:00  
AABGraduates12-31-202339ABC26-05-24 0:00  
AABWeek Four12-31-20230ABC26-05-24 0:00  
AABWeek Three12-31-20230ABC26-05-24 0:00  
AABWeek Two12-31-20230ABC26-05-24 0:00  
AABWeek One12-31-20230ABC26-05-24 0:00  
AABWeek One12-31-20230ABC26-05-24 0:00  
AAB Week Two12-31-20230ABC26-05-24 0:00  

 

DAX Measure Used :

 

           FTE = VAR Locked_FTE = CALCULATE(SUM(Table[Value]),Table[Metrics]="Locked FTE",Table[ID]=EARLIER(Table[ID]))

                 VAR Revised_FTE = CALCULATE(SUM(Table[Value]),Table[Metrics]="Revised FTE",Table[ID]=EARLIER(Table[ID]))

                 VAR Planned_FTE = CALCULATE(SUM(Table[Value]),Table[Metrics]="Planned FTE",Table[ID]=EARLIER(Table[ID]))

                 RETURN(

                        SWITCH(TRUE(),Revised_FTE<>0,Revised_FTE,Revised_FTE=0,Locked_FTE,Locked_FTE=0,Planned_FTE))

Here ID is nothing but the Concatenation of Tab,Table name, Vendor and Date fields so that in the output I don't get a aggregated value for all dates

1 ACCEPTED SOLUTION
Anonymous
Not applicable

Hi  @Vijay08V ,

You can try the following dax.

Expected output123 =
var _column=
SELECTCOLUMNS(FILTER(ALL('Table'),'Table'[Tab Name ]=EARLIER('Table'[Tab Name ])&&'Table'[Table Name]=EARLIER('Table'[Table Name])&&'Table'[Date]=EARLIER('Table'[Date])&&'Table'[Value]=0),"test",[Metrics])
RETURN
SWITCH(
    TRUE(),
      NOT("Revised FTE") in _column && NOT("Locked FTE") in _column && NOT("Planned FTE")  in _column&&'Table'[Metrics]="Revised FTE",[Value],
      "Revised FTE" in _column && NOT("Locked FTE") in _column && NOT("Planned FTE")  in _column&&'Table'[Metrics]="Locked FTE",[Value],
      "Revised FTE" in _column && "Locked FTE" in _column && NOT("Planned FTE")  in _column&&'Table'[Metrics]="Planned FTE",[Value],
      NOT("Revised FTE") in _column && "Locked FTE" in _column && NOT("Planned FTE")  in _column&&'Table'[Metrics]="Revised FTE",[Value])

vyangliumsft_0-1721033460368.png

 

Best Regards,

Liu Yang

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

6 REPLIES 6
Anonymous
Not applicable

Hi  @Vijay08V ,

You can try the following dax.

Expected output123 =
var _column=
SELECTCOLUMNS(FILTER(ALL('Table'),'Table'[Tab Name ]=EARLIER('Table'[Tab Name ])&&'Table'[Table Name]=EARLIER('Table'[Table Name])&&'Table'[Date]=EARLIER('Table'[Date])&&'Table'[Value]=0),"test",[Metrics])
RETURN
SWITCH(
    TRUE(),
      NOT("Revised FTE") in _column && NOT("Locked FTE") in _column && NOT("Planned FTE")  in _column&&'Table'[Metrics]="Revised FTE",[Value],
      "Revised FTE" in _column && NOT("Locked FTE") in _column && NOT("Planned FTE")  in _column&&'Table'[Metrics]="Locked FTE",[Value],
      "Revised FTE" in _column && "Locked FTE" in _column && NOT("Planned FTE")  in _column&&'Table'[Metrics]="Planned FTE",[Value],
      NOT("Revised FTE") in _column && "Locked FTE" in _column && NOT("Planned FTE")  in _column&&'Table'[Metrics]="Revised FTE",[Value])

vyangliumsft_0-1721033460368.png

 

Best Regards,

Liu Yang

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Anonymous
Not applicable

Hi  @Vijay08V ,

 

Here are the steps you can follow:

1. Create calculated column.

Expected output =
var _count=
COUNTX(
    FILTER(ALL('Table'),
    'Table'[Metrics] in {"Revised FTE","Locked FTE","Planned FTE"} && 'Table'[Value]<>0),[Value])
return
SWITCH(
    TRUE(),
    _count=3&&'Table'[Metrics] = "Revised FTE",
    SUMX(FILTER('Table','Table'[Metrics] = "Revised FTE"),[Value]),
    _count=2&&'Table'[Metrics] = "Locked FTE",
    SUMX(FILTER('Table','Table'[Metrics] = "Locked FTE"),[Value]),
    _count=1&&'Table'[Metrics] = "Planned FTE",
    SUMX(FILTER('Table','Table'[Metrics] = "Planned FTE"),[Value]))

2. Result:

vyangliumsft_0-1720578148394.png

 

Best Regards,

Liu Yang

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly

Hi @Anonymous  

I made few changes to the DAX measure by introducing ID column in the table and its working but there is one challenge though. If value of  _count variable is two or one, it directly fetches the value of Locked FTE or Planned FTE. However the logic should flow in the hireachy of Revised FTE >> Locked FTE>>Planned FTE. Say for example value of _count variable is two and we have Revised FTE and Planned FTE metrics as nonzero then the logic should pick Revised FTE value and not the locked FTE.  Any Idea how to resolve this problem? Thanks!

Expected Output = 

var _count=

COUNTX(

    FILTER(ALL('Table'), 'Table'[ID]= EARLIER('Table'[ID]) &&

    'Table'[Metrics] in {"Revised FTE","Locked FTE","Planned FTE"} && 'Table'[Value]<>0),[Value])

RETURN

SWITCH(

    TRUE(),

    _count=3&&'Table'[Metrics] = "Revised FTE ,

    SUMX(FILTER('Table','Table'[Metrics] = "Revised FTE" && 'Table'[ID]=EARLIER('Table'[ID])),[Value]),

    _count=2&&'Table'[Metrics] = "Locked FTE",

    SUMX(FILTER('Table','Table'[Metrics] = "Locked FTE"&& 'Table'[ID]=EARLIER('Table'[ID])),[Value]),

    _count=1&&'Table'[Metrics] = "Planned FTE",

    SUMX(FILTER('Table','Table'[Metrics] = "Planned FTE" && 'Table'[ID]=EARLIER('Table'[ID])),[Value]))

Hi @Anonymous  - Thanks for sharing the PBIX file. It looks like the logic doesn't work if I add new data to the existing table. In real scenario, it will have more records .Same metrics will be repeated for different tab and table names and for different Date,vendor and report date.

Case Condition 1 :
Revised FTE <> 0, Locked FTE <>0 and planned FTE <> 0 
Expected Output : Revised FTE number

Case Condition 2 :
Revised FTE = 0, Locked FTE <>0 and planned FTE <> 0 
Expected Output : Locked FTE number

Case Condition 3 :
Revised FTE = 0, Locked FTE = 0 and planned FTE <> 0 
Expected Output : Planned FTE number

 

Snapshot from PBIX after adding new data

Vijay08V_0-1720599579465.png

Could you please help how the existing DAX logic can be revised?

Sample Data

Tab Name Table NameMetricsDateValueVendorReport DateIDExpected output
AABPlanned FTE2023-12-311553ABC26-05-24 0:00  
AABHours2023-12-3137291ABC26-05-24 0:00  
AABLocked FTE2023-12-31892ABC26-05-24 0:00 892
AABRevised FTE2023-12-310ABC26-05-24 0:00  
AABGraduates2023-12-3139ABC26-05-24 0:00  
AABWeek Four2023-12-310ABC26-05-24 0:00  
AABWeek Three2023-12-310ABC26-05-24 0:00  
AABWeek Two2023-12-310ABC26-05-24 0:00  
AABWeek One2023-12-310ABC26-05-24 0:00  
AABWeek One2023-12-310ABC26-05-24 0:00  
AABWeek Two2023-12-310ABC26-05-24 0:00  
AABPlanned FTE2024-01-071553ABC27-05-24 0:00  
AABHours2024-01-0737291ABC27-05-24 0:00  
AABLocked FTE2024-01-070ABC27-05-24 0:00  
AABRevised FTE2024-01-07500ABC27-05-24 0:00 500
AABGraduates2024-01-0739ABC27-05-24 0:00  
AABWeek Four2024-01-070ABC27-05-24 0:00  
AABWeek Three2024-01-070ABC27-05-24 0:00  
AABWeek Two2024-01-070ABC27-05-24 0:00  
AABWeek One2024-01-070ABC27-05-24 0:00  
AABWeek One2024-01-070ABC27-05-24 0:00  
AABWeek Two2024-01-070ABC27-05-24 0:00  
AABPlanned FTE2024-01-141553ABC28-05-24 0:00 1553
AABHours2024-01-1437291ABC28-05-24 0:00  
AABLocked FTE2024-01-140ABC28-05-24 0:00  
AABRevised FTE2024-01-140ABC28-05-24 0:00  
AABGraduates2024-01-1439ABC28-05-24 0:00  
AABWeek Four2024-01-140ABC28-05-24 0:00  
AABWeek Three2024-01-140ABC28-05-24 0:00  
AABWeek Two2024-01-140ABC28-05-24 0:00  
AABWeek One2024-01-140ABC28-05-24 0:00  
AABWeek One2024-01-140ABC28-05-24 0:00  
AABWeek Two2024-01-140ABC28-05-24 0:00  
AACPlanned FTE2023-12-31158ADB26-05-24 0:00  
AACHours2023-12-3137291ADB26-05-24 0:00  
AACLocked FTE2023-12-31892ADB26-05-24 0:00  
AACRevised FTE2023-12-3110ADB26-05-24 0:00 10
AACGraduates2023-12-3139ADB26-05-24 0:00  
AACWeek Four2023-12-310ADB26-05-24 0:00  
AACWeek Three2023-12-310ADB26-05-24 0:00  
AACWeek Two2023-12-310ADB26-05-24 0:00  
AACWeek One2023-12-310ADB26-05-24 0:00  
AACWeek One2023-12-310ADB26-05-24 0:00  
AACWeek Two2023-12-310ADB26-05-24 0:00  
AACPlanned FTE2024-01-071553ADB27-05-24 0:00  
AACHours2024-01-0737291ADB27-05-24 0:00  
AACLocked FTE2024-01-07200ADB27-05-24 0:00 200
AACRevised FTE2024-01-070ADB27-05-24 0:00  
AACGraduates2024-01-0739ADB27-05-24 0:00  
AACWeek Four2024-01-070ADB27-05-24 0:00  
AACWeek Three2024-01-070ADB27-05-24 0:00  
AACWeek Two2024-01-070ADB27-05-24 0:00  
AACWeek One2024-01-070ADB27-05-24 0:00  
AACWeek One2024-01-070ADB27-05-24 0:00  
AACWeek Two2024-01-070ADB27-05-24 0:00  
AACPlanned FTE2024-01-141553ADB28-05-24 0:00 1553
AACHours2024-01-1437291ADB28-05-24 0:00  
AACLocked FTE2024-01-140ADB28-05-24 0:00  
AACRevised FTE2024-01-140ADB28-05-24 0:00  
AACGraduates2024-01-1439ADB28-05-24 0:00  
AACWeek Four2024-01-140ADB28-05-24 0:00  
AACWeek Three2024-01-140ADB28-05-24 0:00  
AACWeek Two2024-01-140ADB28-05-24 0:00  
AACWeek One2024-01-140ADB28-05-24 0:00  
AACWeek One2024-01-140ADB28-05-24 0:00  
AACWeek Two2024-01-140ADB28-05-24 0:00  
Vijay08V
Helper III
Helper III

any help on this?

Helpful resources

Announcements
June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

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