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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Anonymous
Not applicable

How to calculate SUM IF in this particular case?

My data has 2 dates. I have to count how many times they are same BUT not per row but per date1.

 

For example, I can create a column with simple if statement, or countrows and check "if same". Problem is aggregation. Now on aggregation by date 1 - for 1-jul, 2-jul it will give me 2 and 3. Instead, I am now looking for a calculation measure/column that treats 2 and 3 as 1 count only and then I have to take percentage of total.

What approach should I take? 

Basically, I have to count percentage of times the dates are same, ignoring the fact if their are more rows per value of date1. (because in actual data I have more columns and there would be more repetition).

Thanks a lot.

 

Date 1Date 2If same
1-Jul1-Jul1
1-Jul30-Jun0
1-Jul1-Jul1
2-Jul2-Jul1
2-Jul1-Jul0
2-Jul2-Jul1
2-Jul2-Jul1
1 ACCEPTED SOLUTION

@Anonymous ,
Currently it summarizes values by column "Date 1".
First variable "FilterSameDays" has that part : Summarize(filter([table], value, [column1],[column2],[column3]).

At the moment, column 1 is "Date 1", under column2 and column 3 you can set other columns by which you would like also to group data.

View solution in original post

8 REPLIES 8
nandic
Super User
Super User

Hi @Anonymous ,

Try this formula:

Total Same Days =
var filterSameDays = FILTER('Table','Table'[Same Date]>0)
var CountSameDays = COUNTROWS(filterSameDays)
RETURN
IF(CountSameDays>0,1,0)

 
diff dates in matrix.PNG

Cheers,
Nemanja
Anonymous
Not applicable

Hi,

 

Thanks for your support.

 

The problem is Total = 1.  I want to count how many times it is 1.  That is the whole point of having these 1s.

Hi @Anonymous ,

Try this option:

Total Same Days 2 =
var filterSameDays =
ADDCOLUMNS(
  SUMMARIZE(FILTER('Table','Table'[Same Date]>0),'Table'[Date 1]),
    "If Same Day",IF(COUNTROWS('Table')>0,1,0)
)
var CountSameDays = COUNTROWS(filterSameDays)
var Counter = IF(CountSameDays>0,1,0)

RETURN
IF(HASONEVALUE('Table'[Date 1]),Counter,SUMX(filterSameDays,[If Same Day]))

diff dates in matrix 2.PNG

Cheers,
Nemanja
Anonymous
Not applicable

Hi Nemanja,

 

Thanks, it seems to be working now. 

Please check my Message 4 above. I want this information to be broken up by WORKCENTER (per employee)

 

What changes do I have to make in the code? 

@Anonymous ,
Currently it summarizes values by column "Date 1".
First variable "FilterSameDays" has that part : Summarize(filter([table], value, [column1],[column2],[column3]).

At the moment, column 1 is "Date 1", under column2 and column 3 you can set other columns by which you would like also to group data.

Anonymous
Not applicable

Thanks for explaining. I will explore more on SUMMARIZE DAX. Seems very useful.

harshnathani
Community Champion
Community Champion

Hi @Anonymous ,

 

Not very clear as to what is the expected output.

 

Share more data and the expected output to help you on this.

 

Regards,

HN

Anonymous
Not applicable

Hi Harsh, 

 

This I get on aggregation of above table

Date 1If same
1-Jul2
2-Jul3

 

I want this

Date 1New measureperc
1-Jul1100%
2-Jul1100%
Total2100%

 

For ex: I tried using New measure = If([If same]>0,1,0), but then I can not SUM - because the total also says 1. And then I don't know how to calculate % of rows in this new table that it is 1 or 0. It would give me 100% or 0% in each row and then aggreated percentage in total.

 

Full story:

Date 1 - Normal calendar date

Date 2 - Employee logging in the time sheet data

KPI: We want to check on how many times, employee is logging on the same day.

Now, the 8 hours per day are also not logged at once. They can be divided and logged against type of work and even over days. So, maybe on 2nd July someone books 2 hours for travel and 6 hours for work for the work that was done on 1st of July. In this case, the hours are not booked on same day so synchronization against Date 1 for 1st July should be 0%. 

 

So I tried with countrows+filter and if statement  - in the last 2 rows. The problem is it is giving me total of number of rows because the hours booked are broken up against different areas (travel, work etc). So, basically, these 5,5, 4, 10 all means 1 to me and 0 means 0. How to achieve this? Thanks

 

Capture222.PNG

Helpful resources

Announcements
September Hackathon Carousel

Microsoft Fabric & AI Learning Hackathon

Learn from experts, get hands-on experience, and win awesome prizes.