需求
按照指定期间进行报表分析,如下图
实现
度量值 开始日期 = min('日期表'[date]) --firstdate('日期表'[date]) //获取到当前上下文的最小日期
度量值 结束日期 = max('日期表'[date]) --lastdate('日期表'[date]) //获取到当前上下文的最大日期
//max,min返回的是一个值,时间智能函数返回的是一个表
度量值 间隔天数 = datediff('日期表'[开始日期],'日期表'[结束日期],day)
度量值 一年前开始日期 =
VAR SAMEDAYLY = min(DATEADD(firstdate('日期表'[date]), -1, year))
//把选中期间的最小日期以表的形式传入dateadd,返回一年前的开始日期
'日期表'[开始日期 ]-
countrows(filter(
all('日期表'),
'日期表'[date]<min('日期表'[date]) &&'日期表'[date]>=SAMEDAYLY
)
)
度量值 一年前结束日期 ='日期表' [一年前开始日期] +'日期表'[间隔天数]
去年同期销售额 = calculate(sum(''订单表[销售额]),
datesbetween('日期表'[date],
'日期表'[一年前开始日期],
'日期表'[一年前结束日期])
)
datesbetween
DATESBETWEEN(<Dates>, <StartDate>, <EndDate>)
Returns a table that contains a column of dates that begins with a specified start date and continues until a specified end date.
This function is suited to pass as a filter to the CALCULATE function. Use it to filter an expression by a custom date range.
datedif
DATEDIFF(<Date1>, <Date2>, <Interval>)
Returns the number of interval boundaries between two dates.