我最近开始学习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.
但它与EDATE合作
EDATE(FIRSTNONBLANK(DATATABLE("TodaysDate",DATETIME,{{"9/24/2016"}}),TRUE()),4)
并且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.
提前致谢 .
1 回答
DATEADD
函数采用包含日期作为第一个参数的 column ,您传递 table 以便导致错误 . 即使您传递单列表,它也不同于列 .注意
FIRSTNONBLANK
和FIRSTDATE
函数分别返回包含单个列和单行的 table ,其中包含计算的第一个值或日期,因此您将传递一个表 .即使您将一行中的一行传递给
DATEADD
函数,它也不会抛出错误但不返回任何内容,因为DATEADD
返回计算日期(如果它存在于列中),因此如果您有一个值,则不再返回日期 . 如果您不清楚,请考虑此示例以了解DATEADD
如何工作:你有这个名为
MyDates
的表如果使用
DATEADD
创建名为4MonthsAfter
的计算列:它返回:
正如您所看到的,
24/08/2016
日期的列4MonthsAfter
为空,因为该列不包含24/12/2016
值,24/01/2017
也会发生相同的情况,因为没有24/05/2017
值 . 但是24/09/2016
计算后4个月,因为列中存在24/01/2017
.DATEADD
的工作方式与EDATE
方式有很大不同 .EDATE
以日期时间或文本格式获取 date (不是日期的表格列),并计算日期之前或之后的给定月数 .本质上,
DATEADD
期望一个日期的表列作为第一个参数Time Intelligence functions的大多数,它们被设计用于Date/Calendar表(日期维度) .如果你来自编程背景,你可能会对
DATEADD
在DAX中的工作方式感到困惑 . 通常DATEADD
只需要一个日期,间隔数和特定间隔(MONTH,DAY,YEAR,QUARTER)来计算日期,在DAX中它需要一个明确的日期列作为第一个参数 .如果这有帮助,请告诉我 .
REFERENCES:
DATEADD
FIRSTNONBLANK
FIRSTDATE
EDATE