以YTD方式计算分类字段-PowerBI DAX
我遇到了一个问题,我想根据所选切片器,根据截止日期以YTD方式计算分类字段-PowerBI DAX,powerbi,dax,Powerbi,Dax,我遇到了一个问题,我想根据所选切片器,根据截止日期date列显示分类字段的计数: 输入: 考虑两个表: 第一个:名为表的表 ID Rule Start Date End Date Year Month Uniq 1 A 01-01-2020 01-01-2020 FY20 1 FY20_1 2 B 01-01-2020 01-02-2020 FY20 1 FY20_1 2 C 01-01-20
date
列显示分类字段的计数:
输入:
考虑两个表:
第一个:名为表的表
ID Rule Start Date End Date Year Month Uniq
1 A 01-01-2020 01-01-2020 FY20 1 FY20_1
2 B 01-01-2020 01-02-2020 FY20 1 FY20_1
2 C 01-01-2020 01-03-2020 FY20 1 FY20_1
1 A 01-01-2020 01-02-2020 FY20 1 FY20_1
2 B 01-02-2020 01-02-2020 FY20 2 FY20_2
3 C 01-02-2020 01-04-2020 FY20 2 FY20_2
4 D 01-02-2020 01-03-2020 FY20 2 FY20_2
5 E 01-02-2020 01-03-2020 FY20 2 FY20_2
2 B 01-03-2020 01-03-2020 FY20 3 FY20_3
3 C 01-03-2020 01-03-2020 FY20 3 FY20_3
4 D 01-03-2020 01-04-2020 FY20 3 FY20_3
5 E 01-03-2020 01-04-2020 FY20 3 FY20_3
6 E 01-03-2020 NaN FY20 3 FY20_3
7 E 01-03-2020 NaN FY20 3 FY20_3
Second:名为Calendar\u Table的表(Uniq
列是公共键)
问题陈述:
我有两个切片器Year
和Month
来自Calendar\u表
。根据所选的月份和年份组合,我想显示表
表中ID
列的计数明细。但是,不应过滤该特定月份的计数,而应过滤到该月份(如年初至今)。还有一个条件,我需要考虑一下。
对于所选的特定月份,根据开始日期
列获取该月份之前的所有行,并过滤结束日期
仅下个月以后的行(过滤掉该月份之前的所有行),这将给出2月份的4行
示例:如果选择了第2个月的切片器,我将从开始日期(1月和2月)中选择前8行,然后从结束日期
中筛选2月之后的任何日期(匹配、4月等),然后我将根据ID
列的计数显示规则
的分布
当前尝试:
根据所选月份获取开始日期的度量:
StartDt = VAR test_var = MAX('Table'[Uniq])
return CALCULATE(FIRSTNONBLANK('Table'[Start Date],1),FILTER(Calendar_Table,Calendar_Table[Uniq]=test_var))
然后应用上述条件:
YTD_RULE_Breakup = var stdt = [StartDt]
return CALCULATE(COUNT('Table'[ID]),FILTER(ALL('Table'),'Table'[Start Date]<=stdt && 'Table'[End Date]>stdt))
YTD\u规则\u分解=var stdt=[StartDt]
返回计算(计数('Table'[ID])、过滤器(全部('Table')、'Table'[Start Date]stdt))
电流输出:
当我在一张卡中提取该值时,我得到了正确的值(4),但是我无法得到基于此度量的规则分布:
预期产出:
我的预期产出是:
如果有人能帮我做这件事,我将不胜感激。关于YTD_RULE_分解度量,请尝试用以下内容替换过滤器(全部(‘表’):
如果我们只对总计感兴趣,则过滤器(全部)可以成功运行。我们可以将ALLEXCEPT与[Rule]-列一起使用,以确保度量值也会计算每个规则列的度量值。Nice.。它工作正常,无法按正确方向思考和过滤。谢谢:)将测试一些样本并在一段时间内接受,如果你能为将来的读者添加一些解释,那就太好了。我很高兴这对你有所帮助!当度量开始增大时,很容易与过滤器混淆。我试着给我的答案加上一点解释。
YTD_RULE_Breakup = var stdt = [StartDt]
return CALCULATE(COUNT('Table'[ID]),FILTER(ALL('Table'),'Table'[Start Date]<=stdt && 'Table'[End Date]>stdt))
FILTER(ALLEXCEPT('Table','Table'[Rule])