Gok*_*kul 0 tabular dax ssas-tabular powerbi
我最近开始学习DAX.我无法正确理解DATEADD功能.Blow表达式给出了错误.
DATEADD(FIRSTNONBLANK(DATATABLE("TodaysDate",DATETIME,{{"9/24/2016"}}),TRUE()),4,MONTH)
A table expression containing more than one column was specified in the call to function 'DATEADD'. This is not supported.
Run Code Online (Sandbox Code Playgroud)
但它与EDATE合作
EDATE(FIRSTNONBLANK(DATATABLE("TodaysDate",DATETIME,{{"9/24/2016"}}),TRUE()),4)
Run Code Online (Sandbox Code Playgroud)
并且FIRSTDATE不像FIRSTNONBLANK那样工作,DATATABLE使用有问题吗?请让我知道我错过了什么.
FIRSTDATE(DATATABLE("Today1",DATETIME,{{"9/24/2016"}}))
A table expression containing more than one column was specified in the call to function 'FIRSTDATE'. This is not supported.
Run Code Online (Sandbox Code Playgroud)
提前致谢.
ale*_*eta 12
该DATEADD函数采用包含日期作为第一个参数的列,您正在传递一个表,从而导致错误.即使您传递单列表,它也不同于列.
注释FIRSTNONBLANK和FIRSTDATE函数返回一个表,其中包含单个列和单行,分别具有计算的第一个值或日期,因此您将传递一个表.
即使你将一行中的一行传递给DATEADD函数,它也不会抛出错误,但DATEADD如果它存在于列中则返回计算日期,则返回任何内容,因此如果你有一个值,则不再返回日期.如果您不清楚,请考虑此示例以了解其DATEADD工作原理:
你有这个表叫 MyDates
如果您用于DATEADD创建名为的计算列4MonthsAfter:
4MonthsAfter = DATEADD(MyDates[Date],4,MONTH)
Run Code Online (Sandbox Code Playgroud)
它返回:
正如您所看到的那样4MonthsAfter,日期24/08/2016值的列是空白的,因为该列不包含24/12/2016值,24/01/2017因为没有24/05/2017值,所以也会发生相同的情况.但24/09/2016计算后4个月,因为24/01/2017列中存在.
该方法DATEADD的工作原理是非常不同EDATE的方式.EDATE以日期时间或文本格式获取日期(不是日期的表格列),并计算日期之前或之后的给定月数.
本质上,DATEADD期望一个日期表列作为第一个参数,作为大多数时间智能函数,它们被设计用于日期/日历表(日期维度).
如果你来自编程背景,你可能会对DATEADDDAX的工作方式感到困惑.通常DATEADD只需要一个日期,间隔数和特定间隔(MONTH,DAY,YEAR,QUARTER)来计算日期,在DAX中它需要一个明确的日期列作为第一个参数.
如果这有帮助,请告诉我.
参考文献:
DATEADD
FIRSTNONBLANK
FIRSTDATE
EDATE
| 归档时间: |
|
| 查看次数: |
11897 次 |
| 最近记录: |