DAX 计算 table 列错误 - PBI 桌面 ADDCOLUMNS() 到 CALENDARAUTO()
DAX calculated table column error - PBI Desktop ADDCOLUMNS() to CALENDARAUTO()
我正在尝试使用 ADDCOLUMNS()
到 CALENDARAUTO()
table 在 PBI Desktop 中创建计算 table 的 DAX。所有计算的列都很好用,除了随机的少数计算在使用 [Date]
列时出现问题并给出错误:
Column 'Date' cannot be found or may not be used in this expression.
Parameter is not the correction type
本次计算(加上其他十几个)计算成功:
- "SortDesc_Date"
"SortDesc_Date", - DATEDIFF(date(9999, 12, 31), [Date], DAY)
这3次计算失败:
- "Mo_startDate"
"Mo_startDate", STARTOFMONTH([Date])
- "Yr_startDate"
"Yr_startDate", STARTOFYEAR([Date])
- "SortDesc_YrMo"
"SortDesc_YrMo", - DATEDIFF(date(9999, 12, 31), STARTOFMONTH([Date]), MONTH)
有人知道为什么这些列有计算错误吗?
脚本(更新)
在更正列以替代时间智能函数的使用后工作。
Calendar (v3) =
-- var_MoName = FORMAT([Date], "MMM")
-- var_MoStartDate = EOMONTH([Date],-1) + 1
ADDCOLUMNS (
CALENDARAUTO (),
"DateKey", FORMAT([Date], "YYYY") & FORMAT([Date], "MM") & FORMAT([Date], "DD")
, "Year", YEAR([Date])
, "Mo", MONTH([Date])
, "day", DAY([Date])
, "Mo Name", FORMAT([Date], "MMM")
, "Mo-Yr", FORMAT([Date], "MMM") &"-"& FORMAT([Date],"YY")
, "Mo_startDate", EOMONTH([Date],-1) + 1
, "Yr_startDate", DATE(YEAR([Date]),1,1)
, "Qtr", QUARTER([Date])
, "Qtr Name", "Qtr " & FORMAT([Date], "Q")
, "Yr Name", "YR " & FORMAT([Date], "YYYY")
, "Mo_endDate", EOMONTH([Date],0)
, "SortDesc_YrMo", - DATEDIFF(date(9999, 12, 31), EOMONTH([Date],-1)+1, MONTH)
, "SortDesc_Date", - DATEDIFF(date(9999, 12, 31), [Date], DAY)
, "Date (DESC)", [Date]
, "Mo-Yr (DESC)", FORMAT([Date], "MMM") &"-"& FORMAT([Date],"YY")
)
STARTOFMONTH and STARTOFYEAR 是时间智能函数,它期望日期 列 作为第一个参数而不是单个日期值。它们旨在用于处理过滤上下文而不是单个日期值的度量。
您可以改用以下定义:
"Mo_startDate", EOMONTH ( [Date], -1 ) + 1
"Yr_startDate", DATE ( YEAR ( [Date] ), 1, 1 )
我正在尝试使用 ADDCOLUMNS()
到 CALENDARAUTO()
table 在 PBI Desktop 中创建计算 table 的 DAX。所有计算的列都很好用,除了随机的少数计算在使用 [Date]
列时出现问题并给出错误:
Column 'Date' cannot be found or may not be used in this expression.
Parameter is not the correction type
本次计算(加上其他十几个)计算成功:
- "SortDesc_Date"
"SortDesc_Date", - DATEDIFF(date(9999, 12, 31), [Date], DAY)
这3次计算失败:
- "Mo_startDate"
"Mo_startDate", STARTOFMONTH([Date])
- "Yr_startDate"
"Yr_startDate", STARTOFYEAR([Date])
- "SortDesc_YrMo"
"SortDesc_YrMo", - DATEDIFF(date(9999, 12, 31), STARTOFMONTH([Date]), MONTH)
有人知道为什么这些列有计算错误吗?
脚本(更新)
在更正列以替代时间智能函数的使用后工作。
Calendar (v3) =
-- var_MoName = FORMAT([Date], "MMM")
-- var_MoStartDate = EOMONTH([Date],-1) + 1
ADDCOLUMNS (
CALENDARAUTO (),
"DateKey", FORMAT([Date], "YYYY") & FORMAT([Date], "MM") & FORMAT([Date], "DD")
, "Year", YEAR([Date])
, "Mo", MONTH([Date])
, "day", DAY([Date])
, "Mo Name", FORMAT([Date], "MMM")
, "Mo-Yr", FORMAT([Date], "MMM") &"-"& FORMAT([Date],"YY")
, "Mo_startDate", EOMONTH([Date],-1) + 1
, "Yr_startDate", DATE(YEAR([Date]),1,1)
, "Qtr", QUARTER([Date])
, "Qtr Name", "Qtr " & FORMAT([Date], "Q")
, "Yr Name", "YR " & FORMAT([Date], "YYYY")
, "Mo_endDate", EOMONTH([Date],0)
, "SortDesc_YrMo", - DATEDIFF(date(9999, 12, 31), EOMONTH([Date],-1)+1, MONTH)
, "SortDesc_Date", - DATEDIFF(date(9999, 12, 31), [Date], DAY)
, "Date (DESC)", [Date]
, "Mo-Yr (DESC)", FORMAT([Date], "MMM") &"-"& FORMAT([Date],"YY")
)
STARTOFMONTH and STARTOFYEAR 是时间智能函数,它期望日期 列 作为第一个参数而不是单个日期值。它们旨在用于处理过滤上下文而不是单个日期值的度量。
您可以改用以下定义:
"Mo_startDate", EOMONTH ( [Date], -1 ) + 1
"Yr_startDate", DATE ( YEAR ( [Date] ), 1, 1 )