Forum Discussion
Average per month group by
- 3 years ago
Hi, reporter9
Hi,
Thank you for your quick response, I check your dax and find that the reason that causes this issue is that “format” funmction.
Because the “format” function return the “Text” type data , we can not compare the “Text” type data to the “Date” type data. And the other error is that “ _date < _quarter_end”. We can not use the _date as the condition, we need use the ‘Table’[month_date] because we are filtering the ‘Table’.
So in the end , you can try to user this dax:
Average2 = var _phase = SELECTEDVALUE('Table'[Phase]) var _date =VALUES('Table'[Month_Date]) var _quarter_end = DATE( YEAR( TODAY() ), QUARTER( TODAY() ) * 3 + 1, 1 ) - 1 var _duration =SUMX(FILTER( ALLSELECTED('Table'), 'Table'[month_date] in _date && 'Table'[Phase]=_phase) , [Duration]) var _count =COUNTROWS(DISTINCT(SELECTCOLUMNS( FILTER(ALLSELECTED('Table'), 'Table'[month_date] in _date && 'Table'[Month_Date]< _quarter_end ) ,"ID",[ID],"Month_date",[Month_Date]))) return DIVIDE(_duration,_count)Thank you for your time and sharing, and thank you for your support and understanding of PowerBI!
Best Regards,
Aniya Zhang
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly
Hi v-yueyunzh-msft ,
Thank you for your reply. I have added the file with the example. Here you can see my problem.
Sorry, it is not possible for me to add the example. Here ist the screenshot and the table.
ID Phase Duration Month_Date
| 55 | brown | 41 | 2022-01-31 |
| 11 | green | 20 | 2022-02-28 |
| 22 | green | 20 | 2022-02-28 |
| 33 | green | 20 | 2022-02-28 |
| 44 | green | 20 | 2022-02-28 |
| 55 | green | 4 | 2022-02-28 |
| 55 | brown | 45 | 2022-02-28 |
| 55 | yellow | 7 | 2022-02-28 |
| 11 | green | 43 | 2022-03-31 |
| 22 | green | 43 | 2022-03-31 |
| 33 | green | 43 | 2022-03-31 |
| 44 | green | 43 | 2022-03-31 |
| 11 | green | 54 | 2022-04-30 |
| 11 | yellow | 11 | 2022-04-30 |
| 22 | green | 54 | 2022-04-30 |
| 22 | yellow | 11 | 2022-04-30 |
| 33 | green | 64 | 2022-04-30 |
| 44 | green | 45 | 2022-04-30 |
| 44 | brown | 19 | 2022-04-30 |
| 5 | brown | 19 | 2022-05-31 |
| 11 | yellow | 33 | 2022-05-31 |
| 22 | yellow | 14 | 2022-05-31 |
| 22 | yellow | 3 | 2022-05-31 |
| 22 | brown | 16 | 2022-05-31 |
| 33 | green | 67 | 2022-05-31 |
| 33 | brown | 16 | 2022-05-31 |
| 33 | yellow | 3 | 2022-05-31 |
| 44 | brown | 22 | 2022-05-31 |
| 44 | yellow | 19 | 2022-05-31 |
| 5 | brown | 41 | 2022-06-30 |
| 11 | yellow | 55 | 2022-06-30 |
| 22 | yellow | 25 | 2022-06-30 |
| 33 | yellow | 25 | 2022-06-30 |
| 44 | yellow | 41 | 2022-06-30 |
| 1 | green | 21 | 2022-07-31 |
| 2 | green | 21 | 2022-07-31 |
| 3 | green | 21 | 2022-07-31 |
| 4 | green | 21 | 2022-07-31 |
| 5 | green | 2 | 2022-07-31 |
| 5 | brown | 43 | 2022-07-31 |
| 5 | yellow | 9 | 2022-07-31 |
| 22 | yellow | 36 | 2022-07-31 |
| 33 | yellow | 36 | 2022-07-31 |
| 44 | yellow | 52 | 2022-07-31 |
| 1 | green | 44 | 2022-08-31 |
| 2 | green | 44 | 2022-08-31 |
| 3 | green | 44 | 2022-08-31 |
| 4 | green | 44 | 2022-08-31 |
| 1 | green | 55 | 2022-09-30 |
| 1 | yellow | 12 | 2022-09-30 |
| 2 | green | 55 | 2022-09-30 |
| 2 | yellow | 12 | 2022-09-30 |
| 3 | green | 66 | 2022-09-30 |
| 4 | green | 46 | 2022-09-30 |
| 4 | brown | 20 | 2022-09-30 |
| 1 | yellow | 33 | 2022-10-31 |
| 2 | yellow | 14 | 2022-10-31 |
| 2 | yellow | 3 | 2022-10-31 |
| 2 | brown | 16 | 2022-10-31 |
| 3 | green | 68 | 2022-10-31 |
| 3 | brown | 16 | 2022-10-31 |
| 3 | yellow | 3 | 2022-10-31 |
| 4 | brown | 22 | 2022-10-31 |
| 4 | yellow | 19 | 2022-10-31 |
| 1 | yellow | 55 | 2022-11-30 |
| 2 | yellow | 25 | 2022-11-30 |
| 3 | yellow | 25 | 2022-11-30 |
| 4 | yellow | 41 | 2022-11-30 |
| 55 | brown | 20 | 2021-12-31 |
Best Regards,
reporter9
Hi , reporter9
For your need , we just need to update the measure to this and we will meet your need:
Average = var _phase = SELECTEDVALUE('Table'[Phase])
var _date =VALUES('Table'[Month_Date])
var _duration =SUMX(FILTER( ALLSELECTED('Table'), 'Table'[month_date] in _date && 'Table'[Phase]=_phase) , [Duration])
var _count =COUNTROWS(DISTINCT(SELECTCOLUMNS( FILTER(ALLSELECTED('Table'),'Table'[month_date] in _date) ,"ID",[ID])))
return
DIVIDE(_duration,_count)
The result is as follows:
Thank you for your time and sharing, and thank you for your support and understanding of PowerBI!
Best Regards,
Aniya Zhang
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly
- reporter93 years agoFrequent Visitor
Hi v-yueyunzh-msft ,
Thank you. If I drill to the quarter I see the sum for the phases, not the average.- v-yueyunzh-msft3 years ago
Community Support
Hi , reporter9
Thank you for your quick feedback. Based on the screenshot you provided , i can understand that the issue happens when you try to dill to the quater and show the "sum" not the "average" . The root cause is in my "distinctcount" is wrong .
You can just also update the dax to this:
Average = var _phase = SELECTEDVALUE('Table'[Phase]) var _date =VALUES('Table'[Month_Date]) var _duration =SUMX(FILTER( ALLSELECTED('Table'), 'Table'[month_date] in _date && 'Table'[Phase]=_phase) , [Duration]) var _count =COUNTROWS(DISTINCT(SELECTCOLUMNS( FILTER(ALLSELECTED('Table'),'Table'[month_date] in _date) ,"ID",[ID],"Month_date",[Month_Date]))) return DIVIDE(_duration,_count)Then we can meet your need in the end:
Thank you for your time and sharing, and thank you for your support and understanding of PowerBI!
Best Regards,
Aniya Zhang
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly
- reporter93 years agoFrequent Visitor