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

Shape the future of the Fabric Community! Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions. Take survey.

Reply
Anonymous
Not applicable

Optimize Dax

I have a measure which counts the number of days which are applicable toward goals my team has.  it exlcudes holidays and weekends and changes the start date of the slicer to the training date if that date is larger than the start date.  It also provides a zero day count if the training date is larger than the slicers end date.  It works when I have the data extremely filtered to one month of training dates, but runs slow and fails when i have the training date filter off.  Please advise how I could improve the measure's performance. 

 

NBR Days = --this excludes holidays and weekend--
var Startdate = MAX(MIN('Safety Contact Training'[Date Attended]), MIN(DimDate[Cal_Date_DT]))
var enddate = MAX(DimDate[Cal_Date_DT])
var Trainingdate = IF( MIN('Safety Contact Training'[Date Attended])< enddate, 1,0)
RETURN

IF(Trainingdate = 1,
    CALCULATE(
        COUNTROWS(DimDate),
        FILTER(DimDate,DimDate[SA_Workday] = TRUE()),
   
        DATESBETWEEN(DimDate[Cal_Date_DT],Startdate,enddate)
        ),
 "0"    
   
 
)
2 ACCEPTED SOLUTIONS
Mikelytics
Resident Rockstar
Resident Rockstar

Hi @Anonymous 

 

Did you check the following function?

NETWORKDAYS function (DAX) - DAX | Microsoft Learn

 

Best regards

Michael

-----------------------------------------------------

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

@ me in replies or I'll lose your thread.

-----------------------------------------------------

LinkedIn

------------------------------------------------------------------
Visit my blog datenhungrig which I recently started with content about business intelligence and Power BI in German and English or follow me on LinkedIn!

View solution in original post

Hi @Anonymous 

 

Is there a reason why you use the CalculateTable statement in the measure? Because this means in eahc measure calculation you calculate the same thing which increases the amount of preformance required. If it sis so slow can you not pre-calculate the table in Power Query or Dax so that you have a separate physical table you only refer to?

 

I also see that you have many other values in your visual. Is mabe one of the other measures the performance killer?

 

Best regards

Michael

-----------------------------------------------------

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

@ me in replies or I'll lose your thread.

-----------------------------------------------------

LinkedIn

------------------------------------------------------------------
Visit my blog datenhungrig which I recently started with content about business intelligence and Power BI in German and English or follow me on LinkedIn!

View solution in original post

5 REPLIES 5
Mikelytics
Resident Rockstar
Resident Rockstar

Hi @Anonymous 

 

Did you check the following function?

NETWORKDAYS function (DAX) - DAX | Microsoft Learn

 

Best regards

Michael

-----------------------------------------------------

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

@ me in replies or I'll lose your thread.

-----------------------------------------------------

LinkedIn

------------------------------------------------------------------
Visit my blog datenhungrig which I recently started with content about business intelligence and Power BI in German and English or follow me on LinkedIn!
Anonymous
Not applicable

@Mikelytics , 

 I updated the formula to use Networkdays but it is not resolving the issue, this is still running super slow when I remove the filter of only those trained in October.  it works well when I remove the If statement but

it runs fine but it gives me negative days for those trained in November. 

new formula

NBR Days = --this excludes holidays and weekend--
var Startdate = max(MIN('Training'[Date Attended]), min(DimDate[Cal_Date_DT]))
var enddate = MAX(DimDate[Cal_Date_DT])
var Trainingdate = IF( MIN(' Training'[Date Attended])< enddate, 1,0)
RETURN
   
        NETWORKDAYS(Startdate, enddate, 1,
             CALCULATETABLE(
                 SELECTCOLUMNS(DimDate,"Holidays", DimDate[Cal_Date_DT]),
                 FILTER(DimDate,DimDate[Holiday_FLG] = 1)
            )
        )          
   
Results date slicer October 1, 2022 - October 31, 2022
ConwayA_0-1669912335363.png

 

 

Hi @Anonymous 

 

Is there a reason why you use the CalculateTable statement in the measure? Because this means in eahc measure calculation you calculate the same thing which increases the amount of preformance required. If it sis so slow can you not pre-calculate the table in Power Query or Dax so that you have a separate physical table you only refer to?

 

I also see that you have many other values in your visual. Is mabe one of the other measures the performance killer?

 

Best regards

Michael

-----------------------------------------------------

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

@ me in replies or I'll lose your thread.

-----------------------------------------------------

LinkedIn

------------------------------------------------------------------
Visit my blog datenhungrig which I recently started with content about business intelligence and Power BI in German and English or follow me on LinkedIn!
Anonymous
Not applicable

@Mikelytics , 

I changed holiday table back to a table to point to.  no change in the failure rate. 

I do not think it is a problem with the other items as it has run fine for a while and runs quick enough until i add this if statement. to get the zero day count when the training date is greater than the enddate. 

Anonymous
Not applicable

@Mikelytics,

You were right  i had to change another measure I had using this measure.  Thanks for your help. 

Helpful resources

Announcements
November Carousel

Fabric Community Update - November 2024

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

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

Live Sessions with Fabric DB

Be one of the first to start using Fabric Databases

Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.