如何在Pivot area chart中添加月度里程限制线?
解决Power BI数据透视图中添加月度里程限制线的问题
嘿,我来帮你搞定这个在数据透视面积图里加里程额度限制线的难题!先理下我的场景:
我租了一辆汽车,平时既自己开也对外出租,每月有固定的行驶额度——3月因为是中旬提车,额度只有1000km,其他月份都是2000km。我已经做了一个Pivot Area Chart来跟踪自用和出租的累计里程,基础数据表格如下:
| Date | Rented mileage | Own mileage |
|---|---|---|
| 23/03-18 | 315 | 117 |
| 07-04-18 | 255 | 888 |
| 07/04-18 | 349 | 0 |
| 13/04-18 | 114 | 0 |
| 21/04-18 | 246 | 113 |
| 28/04-18 | 1253 | 0 |
| 01/05-18 | 1253 | 0 |
我本来想新增一张允许里程表,把它作为图表线条加进去,表格内容是这样的:
| Date | Allowed mileage |
|---|---|
| 01/03-18 | 1000 |
| 01-04-18 | 2000 |
| 01/05-18 | 2000 |
| 01/06-18 | 2000 |
| 01/07-18 | 2000 |
| 01/08-18 | 2000 |
| 01/09-18 | 2000 |
| 01/10-18 | 2000 |
| 01-11-18 | 2000 |
| 01/12-18 | 2000 |
| 01/01-19 | 2000 |
| 01/02-19 | 2000 |
| 01/03-19 | 1000 |
但问题来了,Pivot Chart没办法关联这两张表格。我考虑用插值度量值来解决,但不知道具体怎么实现,想请大家给个方案。另外,我之前还在Stack Overflow上问过关于DAX中累计求和的问题。
具体解决方案(用DAX度量值实现)
要解决这个问题,核心是通过DAX度量值直接计算出对应日期的累计允许里程,不需要单独的表格关联,步骤如下:
建立日期表
首先确保你的模型里有一张完整的日期表(可以用CALENDAR()函数生成),并且和你的里程数据表格的Date字段建立关系。如果还没有日期表,用下面的DAX创建:Date Table = CALENDAR(DATE(2018,3,1), DATE(2019,3,31))计算累计行驶里程的度量值
先确认你已经有累计里程的度量(如果之前的累计求和有问题,可以用这个):Cumulative Total Mileage = CALCULATE( SUM('Mileage Data'[Rented mileage]) + SUM('Mileage Data'[Own mileage]), FILTER( ALL('Date Table'[Date]), 'Date Table'[Date] <= MAX('Date Table'[Date]) ) )创建允许里程的插值度量值
这个度量会根据当前日期所在的月份,计算到该日期为止的累计允许里程,自动处理3月的特殊情况:Cumulative Allowed Mileage = VAR CurrentDate = MAX('Date Table'[Date]) VAR CurrentMonth = MONTH(CurrentDate) VAR CurrentYear = YEAR(CurrentDate) VAR MonthlyAllowed = IF( (CurrentYear = 2018 && CurrentMonth = 3) || (CurrentYear = 2019 && CurrentMonth = 3), 1000, 2000 ) VAR DaysInMonth = DAY(EOMONTH(CurrentDate, 0)) VAR DaysPassed = DAY(CurrentDate) VAR MonthlyProRata = MonthlyAllowed * (DaysPassed / DaysInMonth) VAR PreviousMonthsAllowed = CALCULATE( SUMX( DISTINCT(DATEADD('Date Table'[Date], -1, MONTH)), IF( (YEAR([Date]) = 2018 && MONTH([Date]) = 3) || (YEAR([Date]) = 2019 && MONTH([Date]) = 3), 1000, 2000 ) ), FILTER( ALL('Date Table'[Date]), 'Date Table'[Date] < DATE(CurrentYear, CurrentMonth, 1) ) ) RETURN IF(ISBLANK(PreviousMonthsAllowed), MonthlyProRata, PreviousMonthsAllowed + MonthlyProRata)添加到图表
把这个Cumulative Allowed Mileage度量值添加到你的Pivot Area Chart中,设置为折线类型,就能作为里程限制线展示,实时显示到当前日期为止的累计允许额度,完美匹配你的累计行驶里程啦!
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

