一些知识
1.power bi中使用时间智能函数一定要有一个日期连续的日历辅助表calendarauto()
2.YTD year To Date指年初到当天,PY Previous Year 指上一年。
3.使用datesytd函数可以自定义自己公司的财年范围,不指定年结束日的情况,默认是从1月到12月
4.时间智能函数在directquery中不能使用。
实例
度量值 本年累计
YTD Sales = calculate([销售额],datesytd('date'[date]))
-- datesytd默认从1月作为年的开始,可以传参指定年的结束日期
-- calculate([销售额],datesytd('日历表'[Date],"5/31"))
// 指定从6月1日开始累计,即财年在5/31结束
月初到指定日期的累计 datesmtd
季度初到指定日期的累计 datesqtd
时间累计函数的用法都类似
自定义财年 fiscal year = year(dateadd('date'[date],-5,month))
//使用dateadd函数取到当前上下文的日期并按月倒推回5个月
//取出倒推后时间的年份,作为当前年
度量值 订单最大日期 = maxx(all('订单表'),'订单表'[订单日期])
度量值 过去3个月滚动聚合=
if(
min('date'[date])<=[订单最大日期],
//由于自动创建的日历表时间范围是按照整年生成的,所以这里使用日历表时可以添加一个判断
calculate([销售额],
datesinperiod('date'[date],lastdate('date'[date]),-3,month),
blank()
) //计算过去三个月到当前对应的销售额
DATESINPERIOD(<dates>, <start_date>, <number_of_intervals>, <interval>)
该函数返回一个表,此表包含一列日期,日期以指定的开始日期开始,并按照指定的日期间隔一直持续到指定的数字。
此函数适合作为筛选器传递给 CALCULATE 函数。 使用该函数可以按标准日期间隔(如日、月、季度或年)筛选表达式。
dates,日期列。
start_date, 日期表达式。(指定日期)
number_of_intervals,一个整数,指定要添加到 dates 或从 dates 中减去的时间间隔数。
interval,日期偏移的间隔。 interval 的值可以是以下值之一:DAY、MONTH、QUARTER 和 YEAR
度量值 订单编号的计数 = countrows('订单表'[订单编号])
度量值 每月销售额的平均值 = [销售额]/[订单编号的计数]
度量值 三个月移动平均销售额 =
if(
min(('date'[date])<=[]),
calculate(
if(
countrows(filter(values('date'[month_no]),[销售额]>0))=3,
//最开始的两个月不计算,有三个月才开始计算三个月的平均
average('订单表'[销售额])
//因为销售额的最小单位是订单销售额,所以实际上计算的平均订单销售额
),
datesinperiod('date'[date],lastdate('date'[date]),-3,month)//数据计算范围
)
)