返回给定区间中的所有日期组成的单列形式的表。
语法
DATESINPERIOD ( <日期列>, <起始日期>, <偏移量>, <间隔单位> )
参数 | 属性 | 描述 |
日期列 | 包含日期的列 | |
起始日期 | 日期表达式或 Blank() | |
偏移量 | 一个整数,从日期列中添加或减去的时间间隔数;正数向未来推移,反之向过去推移 | |
间隔单位 | 日期偏移的间隔,可以是以下值之一:year 、quarter 、month |
返回值
表
包含单列日期值的表。
备注
DATESINPERIOD 函数应用偏移量到参数所在的日期列,返回<间隔数>所指定区间中包含的所有日期。
<日期列>参数可以是以下任一项 :
- 对日期/时间列的引用
- 返回单列日期/时间值的表表达式
结果表只包含日期列中存在的日期。
起始日期使用 Blank()等价于使用日期列的最小值作为起始日期,即 MIN(日期列)
DATESINPERIOD未针对 DirectQuery 进行优化,在计算列和行级别安全性公式中完全不受支持。 但可以在度量值和查询公式中使用,只不过无法保证性能。
示例
下面的表达式计算从筛选上下文中该期间的最后一天开始的最近 12 个月的销售额:
Sales Moving Annual Total = CALCULATE ( [Sales Amount], DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -1, YEAR ) )
扩展阅读:
- MSDN 文档:DATESINPERIOD
- DAX Guide:DATESINPERIOD
老师,这个函数第一个参数日期列的引用还有必要 被替换为CALCULATETABLE ( DISTINCT ( ) )嘛?
应该和DATESBETWEEN一样,没必要对第一个参数的日期列的引用进行上下文转换了吧?
就像文中例子:
DATESINPERIOD (
‘Date'[Date],
MAX ( ‘Date'[Date] ),
-1,
YEAR
)
如果返回的是日期列中当前可见内容,那上面的例子无法获取过去一年的日期。
老师,这个函数第一个参数日期列的引用还有必要 被替换为CALCULATETABLE ( DISTINCT ( ) )嘛?
应该和DATESBETWEEN一样,没必要对第一个参数的日期列的引用进行上下文转换了吧?