时间维度指标函数——本期至今
年度至今
订单 指标 YTD =
CALCULATE ( [订单 业务指标], DATESYTD ( '日期'[Date] ) )
特殊财年,如结束于6月30号,则增加第三个参数
订单 指标 YTD =
CALCULATE ( [订单 业务指标], DATESYTD ( '日期'[Date] ,'06-30') )
或
订单 指标 YTD = TOTALYTD([订单 业务指标], '日期'[Date] ,'06-30')
季度至今
订单 指标 QTD =
CALCULATE ( [订单 业务指标], DATESQTD ( '日期'[Date] ) )
月度至今
订单 指标 MTD =
CALCULATE ( [订单 业务指标], DATESMTD ( '日期'[Date] ) )
本周至今
订单 指标 WTD =
CALCULATE (
[订单 业务指标],
FILTER (
ALL ( '日期' ),
'日期'[YearWeek] = SELECTEDVALUE ( '日期'[YearWeek] )
&& '日期'[Date] <= SELECTEDVALUE ( '日期'[Date] )
时间维度指标函数——上期同期
订单 指标 PY =
// 上年同期
CALCULATE ( [订单 业务指标],
DATEADD ( '日期'[Date], -1, YEAR ) )
订单 指标 PQ =
// 上季同期
CALCULATE ( [订单 业务指标],
DATEADD ( '日期'[Date], -1, QUARTER ) )
订单 指标 PM =
// 上月同期
CALCULATE ( [订单 业务指标],
DATEADD ( '日期'[Date], -1, MONTH ) )
订单 指标 PW =
// 上周同期(上周同日,7日前)
CALCULATE ( [订单 业务指标],
DATEADD ( '日期'[Date], -7, DAY ) )
时间维度指标函数——上期全部
订单 指标 PYT =
//上年全部
CALCULATE ( [订单 业务指标],
PARALLELPERIOD ( '日期'[Date], -1, YEAR ) )
订单 指标 PQT =
// 上季全部
CALCULATE ( [订单 业务指标],
PARALLELPERIOD ( '日期'[Date], -1, QUARTER ) )
订单 指标 PMT =
// 上月全部
CALCULATE ( [订单 业务指标],
PARALLELPERIOD ( '日期'[Date], -1, MONTH ) )
订单 指标 PWT =
// 上周全部
IF (
SELECTEDVALUE ('日期'[WeekOfYear] ) = 1 ||
CALCULATE (COUNTROWS ( '日期' ),
FILTER ( ALL ( '日期' ),
'日期'[YearWeek] = SELECTEDVALUE ( '日期'[YearWeek] ) - 1 )
)< 7,
BLANK (),
CALCULATE ([订单 业务指标],
FILTER ( ALL ( '日期' ),
'日期'[YearWeek] = SELECTEDVALUE ( '日期'[YearWeek] ) - 1 )
)
时间维度指标函数——时间对比
订单 指标 YOY =
// 与去年同期差异
[订单 指标] - [订单 指标 PY]
订单 指标 YOY % =
// 与去年同期差异增长率
DIVIDE ( [订单 指标] - [订单 指标 PY],
[订单 指标 PY] )
订单 指标 PYTD =
// 去年年度至今
CALCULATE ( [订单 指标 YTD],
SAMEPERIODLASTYEAR ( '日期'[Date] ) )
订单 指标 YTD YOY =
// 年度至今同比差异
[订单 指标 YTD] - [订单 指标 PYTD]
订单 指标 YTD YOY % =
// 年度至今同比差异增长率
DIVIDE ( [订单 指标 YTD YOY], [订单 指标 PYTD] )
上年同期金额(万) =
calculate(sum([项目金额(万)]),
SAMEPERIODLASTYEAR('日期'[日期]))
上月金额(万) =
calculate(sum([项目金额(万)]),
DATEADD('日期'[日期],-1,MONTH))
金额环比增长率 =
if(
ISBLANK([上月金额(万)]),
BLANK(),
(sum([项目金额(万)])-[上月金额(万)])/[上月金额(万)])
金额 排名 =
rankx(all([来源明细]),
CALCULATE(sum([项目金额(万)])),,desc)
金额同比增长率 =
if(
ISBLANK([上年同期金额(万)]),
blank(),
(sum([项目金额(万)])-[上年同期金额(万)])/[上年同期金额(万)])
累积金额(万) =
TOTALYTD(sum([项目金额(万)]),'日期'[日期])
以下几个时间函数在PBI和EXCEL通用
EDATE,N个月之后的某天
EDATE("2019/9/9",3)= "2019/12/9"
EOMONTH,N个月之后的月末那天
EOMONTH("2019/9/9",3)= "2019/12/31"
YEARFRAC,两个日期之间天数占年份总天数之比
YEARFRAC("2019/1/1","2019/3/1",1)=0.16
特殊时间智能函数,仅PBI
月/季/年第一天的计值OPENINGBALANCEMONTH,-QUARTER,-YEAR,
OPENINGBALANCEMONTH(<expression>,<dates>[,<filter>])
月/季/年最后一天的计值CLOSINGBALANCEMONTH,-QUARTER,-YEAR,
CLOSINGBALANCEMONTH(<expression>,<dates>[,<filter>])
时间表函数-calendarauto()
该函数不输入参数时,默认会读取所有表,根据最早日期和最晚日期(不含计算列的日期)所在年份的1月1日至12月31日,构建表。 比如表1有日期列,最早是2004年3月2日,表2有日期列,最晚是2007年5月。则生成2004年1月1日-2007年12月31日。
如果填入参数(数字),则会改变年份的期初期末日期。如不填,为1月1日至12月31日。如填6,则为7月1日至6月30日。
Date=calendarauto(6)
日期表
Date =
VAR MinYear = YEAR ( MIN ( Sales[Order Date] ) )
VAR MaxYear = YEAR ( MAX ( Sales[Order Date] ) )
RETURN
ADDCOLUMNS (
FILTER (
CALENDARAUTO ( ),
YEAR ( [Date] ) >= MinYear &&
YEAR ( [Date] ) <= MaxYear
),
'Year', YEAR ( [Date] ),
'Quarter Number', INT ( FORMAT ( [Date], 'q' ) ),
'Quarter', 'Q' & INT ( FORMAT ( [Date], 'q' ) ),
'Month Number', MONTH ( [Date] ),
'Month', FORMAT ( [Date], 'mmmm' ),
'Week Day Number', WEEKDAY ( [Date] ),
'Week Day', FORMAT ( [Date], 'dddd' ),
'Year Month Number', YEAR ( [Date] ) * 100 + MONTH ( [Date] ),
'Year Month', FORMAT ( [Date], 'mmmm' ) & ' ' & YEAR ( [Date] ),
'Year Quarter Number', YEAR ( [Date] ) * 100 + INT ( FORMAT ( [Date], 'q' ) ),
'Year Quarter', 'Q' & FORMAT ( [Date], 'q' ) & '-' & YEAR ( [Date] )
)
移动年度合计 Moving Annual Total (MAT)
MAT Sales:=
calculate(
[Sales],
datesinperiod(
'date'[date],max('date'[date]),-1,year)
)
或
MAT Sales:=
calculate(
[Sales],
datesbetween(
'date'[date],
nextday(samepeiodlastyear(lastdate('date'[date]))),
lastdate('date'[date])
)
)
谢谢