目标是用以前的值填充空白。
感谢@Alexis Olson
,我能够在发展年中实现这一目标。
帖子可以在这里找到:
How to fill out blanks in Running Total matrix Power BI
但是现在development month
需要相同的东西,这就是我坚持的地方。
我所做的:
-创建计算表'Dev Months'
,该表检索所有开发月份。
-试图通过操纵Dem Month修改表达式
Accident Month Losses1 =
VAR CurrDevMonth = MAX('Dev Months'[DevMonth])
VAR MaxMonth = CALCULATE(MAX(fact_Losses[AccidentMonth]), ALLSELECTED(fact_Losses))
VAR CurentMonth = MAX(fact_Losses[AccidentMonth])
VAR CurentYear = MAX(fact_Losses[AccidentYear])
RETURN
IF(
MONTH(
EOMONTH(
DATE(CurentYear - 1,12,31),
CurrDevMonth)
) > MaxMonth,
BLANK(),
CALCULATE(
SUM(fact_Losses[PaymentAmount]),
FILTER(ALL(fact_Losses[DevMonth]), fact_Losses[DevMonth] <= CurrDevMonth)
)
)
-尝试使用AccidentDate
并按Year
和Month
细分
-试图将Year-Month
转换为DATE
仍然没有成功
数据如下:
当我使用矩阵显示数据时,我有空格。
列:年月,
行:开发月份。随着时间的发展,可以超过12个。
值:总计
如果有空白(无损失),则应根据开发月份用以前的数字填充。
运行Total Dax表达式:
Accident Month Losses =
CALCULATE(
[Total Loss],
FILTER(ALL(fact_Losses[DevMonth]),fact_Losses[DevMonth] <= MAX(fact_Losses[DevMonth])
))
需要这样:
.pbix可以在这里找到: https://www.dropbox.com/s/zujp6p9lbyqfez7/Test_LossTriangle.pbix?dl=0
请帮助
答案 0 :(得分:1)
所以这里的问题是MAX(fact_Losses[DevMonth])
对于那些丢失的单元格为空,因为没有相应的事务。
您可以修复由dim_Date
施加的删除过滤器上下文。
Accident Month Losses =
VAR CurrDevMonth =
CALCULATE ( MAX ( fact_Losses[DevMonth] ), ALL ( dim_Date ) )
VAR RunningLoss =
CALCULATE (
[Total Loss],
FILTER ( ALL ( fact_Losses[DevMonth] ), fact_Losses[DevMonth] <= CurrDevMonth )
)
RETURN
RunningLoss
到目前为止,我所做的全部工作就是将MAX
放在CALCULATE
内,这样我就可以删除dim_Date
过滤器上下文,并将其放入变量中,以便更轻松地了解内容继续。
现在的问题是整个表已满,而不是上三角。为了解决这个问题,如果当前月份前滚DevMonth
个月数大于最大月份,我们可以告诉它返回空白。
Accident Month Losses =
VAR CurrDevMonth =
CALCULATE ( MAX ( fact_Losses[DevMonth] ), ALL ( dim_Date ) )
VAR RunningLoss =
CALCULATE (
[Total Loss],
FILTER ( ALL ( fact_Losses[DevMonth] ), fact_Losses[DevMonth] <= CurrDevMonth )
)
VAR MaxYearMonth =
CALCULATE (
EOMONTH ( MAX ( fact_Losses[AccidentDate] ), 0 ),
ALLSELECTED ( fact_Losses )
)
VAR CurrYearMonth = MAX ( dim_Date[Date] )
RETURN
IF (
EOMONTH ( CurrYearMonth, CurrDevMonth - 1 ) > MaxYearMonth,
BLANK (),
RunningLoss
)
这也会删除一些小计,但是如果您在IF
条件中添加了两个条件,则可以将其归还。
IF (
EOMONTH ( CurrYearMonth, CurrDevMonth - 1 ) > MaxYearMonth
&& ISFILTERED( dim_Date[Year Month] )
&& ISFILTERED( fact_Losses[DevMonth] ),
BLANK (),
RunningLoss
)
答案 1 :(得分:0)
另一种方法是使用DevMonth列的所有可能值创建一个断开连接的表,您可以利用GENERATESERIES。 创建后,将该字段用作矩阵标题,更新后的度量将为:
CALCULATE ( [Total Loss],
FILTER ( ALL ( fact_Losses[DevMonth] ),
fact_Losses[DevMonth] <= MAX ( NewTable[DevMonth] ) )