如何在矩阵 Power BI 中计算总计 运行
How to calculate running total in matrix Power BI
矩阵中的行 MM-YY
来自 dim_Calendar
table。
列 LossMMYY
来自 fact_Data
table.
如何获得 LossMMYY
列的累计总数并可能填写空白?
关系:
应该是这样的:
我试过了:
RunningTotal= CALCULATE(
PolicyNumberCount,
FILTER(
ALL(fact_Data[LossDate]),fact_Data[LossDate]<= MAX(dim_Date[Date].[Date])
但不幸的是不起作用。
出于某种原因,它仍然无法正常工作:
.pbix 文件:
https://www.dropbox.com/s/267m1r3rf98g86e/PRC%20Actuarial%20Report%20-%20Test.pbix?dl=0
)
您可以使用两个新表和这个公式来完成此操作:
Count of x =
VAR eDate = SELECTEDVALUE(EffectiveCalendar[MM-YY])
VAR lDate = MAX('LossCalendar'[Date])
RETURN
CALCULATE(COUNT(fact_Data[PolicyNumberCount])
, FILTER(fact_Data, fact_Data[EffectiveMMYY] = eDate && 'fact_Data'[LossDate].[Date] <= lDate))
新建Table1:
EffectiveCalendar =
ADDCOLUMNS (
CALENDAR (MIN(fact_Data[EffectiveDate]),MAX(fact_Data[EffectiveDate])),
"DateAsInteger", FORMAT ( [Date], "YYYYMMDD" ),
"MonthAsInteger", FORMAT ( [Date], "YYYYMM" ),
"Year", YEAR ( [Date] ),
"Month Number", month([Date]),
"Year/Month", FORMAT ( [Date], "YYYY/MM" ),
"YearMonthShort", FORMAT ( [Date], "YYYY/mmm" ),
"MM-YY", FORMAT ( [Date], "MMM-YY" ),
"Month", FORMAT ( [Date], "mmm" ),
"MonthNameLong", FORMAT ( [Date], "mmmm" ),
"DayOfWeekNumber", WEEKDAY ( [Date] ),
"DayOfWeek", FORMAT ( [Date], "dddd" ),
"DayOfWeekShort", FORMAT ( [Date], "dddd" ),
"Quarter", "Q" & FORMAT ( [Date], "Q" ),
"YearQuarter", FORMAT ( [Date], "YYYY" ) & "/Q" & FORMAT ( [Date], "Q" )
)
新日历 2:
LossCalendar =
ADDCOLUMNS (
CALENDAR (MIN(fact_Data[LossDate]),MAX(fact_Data[LossDate])),
"DateAsInteger", FORMAT ( [Date], "YYYYMMDD" ),
"MonthAsInteger", FORMAT ( [Date], "YYYYMM" ),
"Year", YEAR ( [Date] ),
"Month Number", month([Date]),
"Year/Month", FORMAT ( [Date], "YYYY/MM" ),
"YearMonthShort", FORMAT ( [Date], "YYYY/mmm" ),
"MM-YY", FORMAT ( [Date], "MMM-YY" ),
"Month", FORMAT ( [Date], "mmm" ),
"MonthNameLong", FORMAT ( [Date], "mmmm" ),
"DayOfWeekNumber", WEEKDAY ( [Date] ),
"DayOfWeek", FORMAT ( [Date], "dddd" ),
"DayOfWeekShort", FORMAT ( [Date], "dddd" ),
"Quarter", "Q" & FORMAT ( [Date], "Q" ),
"YearQuarter", FORMAT ( [Date], "YYYY" ) & "/Q" & FORMAT ( [Date], "Q" )
)
首先使用以下 DAX 创建另一个 table:
MMYY =
SUMMARIZECOLUMNS (
fact_Data[LossMMYY],
"Index Column",
VAR YearNumber =
RIGHT ( VALUES ( fact_Data[LossMMYY] ), 2 ) + 2000
VAR CurrentMonthName =
LEFT ( VALUES ( fact_Data[LossMMYY] ), 3 )
RETURN
YearNumber
& SWITCH (
CurrentMonthName,
"JAN", "01",
"FEB", "02",
"MAR", "03",
"APR", "04",
"MAY", "05",
"JUN", "06",
"JUL", "07",
"AUG", "08",
"SEP", "09",
"OCT", "10",
"NOV", "11",
"DEC", "12"
)
)
按[索引列]对[LossMMYY]排序
然后使用相同的逻辑向您的事实添加另一列 table:
Index Column =
VAR YearNumber =
RIGHT ( 'fact_Data'[LossMMYY], 2 ) + 2000
VAR CurrentMonthName =
LEFT ( 'fact_Data'[LossMMYY], 3 )
RETURN YearNumber &
SWITCH (
CurrentMonthName,
"JAN", "01",
"FEB", "02",
"MAR", "03",
"APR", "04",
"MAY", "05",
"JUN", "06",
"JUL", "07",
"AUG", "08",
"SEP", "09",
"OCT", "10",
"NOV", "11",
"DEC", "12"
)
现在您有了一个有效的索引来比较日期。您现在可以使用以下 DAX 创建度量:
Running Total =
VAR CurrentDate =
MAX ( MMYY [Index Column] )
RETURN
CALCULATE (
SUM ( fact_Data[PolicyNumberCount] ),
FILTER (
ALL (fact_Data[Index Column] ),
fact_Data[Index Column] <= CurrentDate
)
)
在矩阵的值参数中使用新度量,在列参数中使用新字段 'MMYY'[LossMMYY] 将产生以下结果:
oleg,这是我在你的 .pbix 中实现我的逻辑时得到的结果
矩阵中的行 MM-YY
来自 dim_Calendar
table。
列 LossMMYY
来自 fact_Data
table.
如何获得 LossMMYY
列的累计总数并可能填写空白?
关系:
应该是这样的:
我试过了:
RunningTotal= CALCULATE(
PolicyNumberCount,
FILTER(
ALL(fact_Data[LossDate]),fact_Data[LossDate]<= MAX(dim_Date[Date].[Date])
但不幸的是不起作用。
出于某种原因,它仍然无法正常工作: .pbix 文件:
https://www.dropbox.com/s/267m1r3rf98g86e/PRC%20Actuarial%20Report%20-%20Test.pbix?dl=0
)
您可以使用两个新表和这个公式来完成此操作:
Count of x =
VAR eDate = SELECTEDVALUE(EffectiveCalendar[MM-YY])
VAR lDate = MAX('LossCalendar'[Date])
RETURN
CALCULATE(COUNT(fact_Data[PolicyNumberCount])
, FILTER(fact_Data, fact_Data[EffectiveMMYY] = eDate && 'fact_Data'[LossDate].[Date] <= lDate))
新建Table1:
EffectiveCalendar =
ADDCOLUMNS (
CALENDAR (MIN(fact_Data[EffectiveDate]),MAX(fact_Data[EffectiveDate])),
"DateAsInteger", FORMAT ( [Date], "YYYYMMDD" ),
"MonthAsInteger", FORMAT ( [Date], "YYYYMM" ),
"Year", YEAR ( [Date] ),
"Month Number", month([Date]),
"Year/Month", FORMAT ( [Date], "YYYY/MM" ),
"YearMonthShort", FORMAT ( [Date], "YYYY/mmm" ),
"MM-YY", FORMAT ( [Date], "MMM-YY" ),
"Month", FORMAT ( [Date], "mmm" ),
"MonthNameLong", FORMAT ( [Date], "mmmm" ),
"DayOfWeekNumber", WEEKDAY ( [Date] ),
"DayOfWeek", FORMAT ( [Date], "dddd" ),
"DayOfWeekShort", FORMAT ( [Date], "dddd" ),
"Quarter", "Q" & FORMAT ( [Date], "Q" ),
"YearQuarter", FORMAT ( [Date], "YYYY" ) & "/Q" & FORMAT ( [Date], "Q" )
)
新日历 2:
LossCalendar =
ADDCOLUMNS (
CALENDAR (MIN(fact_Data[LossDate]),MAX(fact_Data[LossDate])),
"DateAsInteger", FORMAT ( [Date], "YYYYMMDD" ),
"MonthAsInteger", FORMAT ( [Date], "YYYYMM" ),
"Year", YEAR ( [Date] ),
"Month Number", month([Date]),
"Year/Month", FORMAT ( [Date], "YYYY/MM" ),
"YearMonthShort", FORMAT ( [Date], "YYYY/mmm" ),
"MM-YY", FORMAT ( [Date], "MMM-YY" ),
"Month", FORMAT ( [Date], "mmm" ),
"MonthNameLong", FORMAT ( [Date], "mmmm" ),
"DayOfWeekNumber", WEEKDAY ( [Date] ),
"DayOfWeek", FORMAT ( [Date], "dddd" ),
"DayOfWeekShort", FORMAT ( [Date], "dddd" ),
"Quarter", "Q" & FORMAT ( [Date], "Q" ),
"YearQuarter", FORMAT ( [Date], "YYYY" ) & "/Q" & FORMAT ( [Date], "Q" )
)
首先使用以下 DAX 创建另一个 table:
MMYY =
SUMMARIZECOLUMNS (
fact_Data[LossMMYY],
"Index Column",
VAR YearNumber =
RIGHT ( VALUES ( fact_Data[LossMMYY] ), 2 ) + 2000
VAR CurrentMonthName =
LEFT ( VALUES ( fact_Data[LossMMYY] ), 3 )
RETURN
YearNumber
& SWITCH (
CurrentMonthName,
"JAN", "01",
"FEB", "02",
"MAR", "03",
"APR", "04",
"MAY", "05",
"JUN", "06",
"JUL", "07",
"AUG", "08",
"SEP", "09",
"OCT", "10",
"NOV", "11",
"DEC", "12"
)
)
按[索引列]对[LossMMYY]排序
然后使用相同的逻辑向您的事实添加另一列 table:
Index Column =
VAR YearNumber =
RIGHT ( 'fact_Data'[LossMMYY], 2 ) + 2000
VAR CurrentMonthName =
LEFT ( 'fact_Data'[LossMMYY], 3 )
RETURN YearNumber &
SWITCH (
CurrentMonthName,
"JAN", "01",
"FEB", "02",
"MAR", "03",
"APR", "04",
"MAY", "05",
"JUN", "06",
"JUL", "07",
"AUG", "08",
"SEP", "09",
"OCT", "10",
"NOV", "11",
"DEC", "12"
)
现在您有了一个有效的索引来比较日期。您现在可以使用以下 DAX 创建度量:
Running Total =
VAR CurrentDate =
MAX ( MMYY [Index Column] )
RETURN
CALCULATE (
SUM ( fact_Data[PolicyNumberCount] ),
FILTER (
ALL (fact_Data[Index Column] ),
fact_Data[Index Column] <= CurrentDate
)
)
在矩阵的值参数中使用新度量,在列参数中使用新字段 'MMYY'[LossMMYY] 将产生以下结果:
oleg,这是我在你的 .pbix 中实现我的逻辑时得到的结果