Power BI:DAX度量值计算各年度上年值仅显示总和的问题
解决Power BI中DAX上年购买力指数仅合计行显示的问题
问题根源
你当前的度量值使用SAMEPERIODLASTYEAR(Fact_Index[Date]),但视觉对象中是基于事实表的“年份”列分组筛选。由于没有使用独立的日期维度表,时间智能函数无法正确识别年度级别的上下文——单个年份筛选下,事实表的Date列仅包含当前年的日期,SAMEPERIODLASTYEAR会尝试筛选上一年的日期,但事实表中当前年分组的上下文里没有上一年的日期数据,导致年度行返回空值;而合计行没有日期筛选,函数能正确计算所有上一年数据的总和。
解决方案
方案1:使用独立日期表(推荐,符合Power BI最佳实践)
首先创建一张独立的日期维度表,这是时间智能函数正常工作的基础:
Calendar = ADDCOLUMNS( CALENDAR(MIN(Fact_Index[Date]), MAX(Fact_Index[Date])), "年份", YEAR([Date]), "年度开始", DATE(YEAR([Date]), 1, 1), "年度结束", DATE(YEAR([Date]), 12, 31) )
创建完成后,在模型视图中将Fact_Index[Date]与Calendar[Date]建立一对多关系。
然后修改度量值,基于日期表的日期列计算:
Previous Year Purchasing Power = CALCULATE( SUM(Fact_Index[Purchasing Power Index]), DATEADD('Calendar'[Date], -1, YEAR) )
之后视觉对象中使用Calendar[年份]进行分组,即可得到正确的年度上年值。
方案2:直接基于年份列计算(无需日期表)
如果暂时不想创建日期表,可以直接通过年份筛选来计算:
Previous Year Purchasing Power = VAR CurrentYear = SELECTEDVALUE(Fact_Index[年份]) RETURN CALCULATE( SUM(Fact_Index[Purchasing Power Index]), Fact_Index[年份] = CurrentYear - 1 )
这个方法通过获取当前行的年份,直接筛选上一年的购买力指数总和,无需依赖时间智能函数的日期上下文。
内容的提问来源于stack exchange,提问作者Firhed
相关产品推荐
相关产品推荐

