Sql server 带有日期维度的SSAS 2012 DAX SamePeriodLastYear()
我有一个日期维度和一个事实表。我有两项措施:Sql server 带有日期维度的SSAS 2012 DAX SamePeriodLastYear(),sql-server,ssas,dax,Sql Server,Ssas,Dax,我有一个日期维度和一个事实表。我有两项措施: WorkOrdersCount:= count( FactWorkOrderLifeCycle[Clientsid] ) 及 WorkOrdersCount很简单,工作正常。我原以为去年的工单计数也很简单,但现在我意识到我不理解去年的相同周期 My date维度有一个DateSID列,其中包含日期的整数表示形式YYYYMMDD。对于未知日期和待定日期,它有两个SID为-1和-2的记录保留行。在这个解决方案中,我只使用-1行。数据存储
WorkOrdersCount:=
count(
FactWorkOrderLifeCycle[Clientsid]
)
及
WorkOrdersCount很简单,工作正常。我原以为去年的工单计数也很简单,但现在我意识到我不理解去年的相同周期
My date维度有一个DateSID列,其中包含日期的整数表示形式YYYYMMDD。对于未知日期和待定日期,它有两个SID为-1和-2的记录保留行。在这个解决方案中,我只使用-1行。数据存储在SQL Server表中,FullDate列是日期类型。实际值为1900-01-01
我的事实FactWorkOrderLifecycle有一个名为InvoicedDateSID的字段,该字段可以有一个空值,我将其替换为-1
Visual Studio中或处理olap时不会引发错误,但在引用数据透视表中的列时,我会遇到以下错误:
错误-计算中止:度量值中的计算错误
“FactWorkOrderLifeCycle”[WorkOrdersLastYearCount]:无效数字
遇到日期值的表示形式
我尝试过的事情并不都有意义:
将SID值更改为正整数
当我看到DAX日期可能从1900-03-01开始时,将dimdate中的日期值更改为9999-12-31,而不是1900-01-01
首先将其他尺寸添加到轴,以查看公式计算是否正确。
我是个无赖,我不知道如何解决这个问题。感谢您的帮助 确保您的日历表确实使用了日期数据类型。 删除日期中的任何时间部分。 确保日历表中没有空白和重复项。
确保您使用的是数据透视上日历表中的字段,而不是数据表中与日期相关的字段。听起来您的FullDate列中还有一些其他值,如1、2、待定或未知。SAMEPERIODLASTYEAR正在尝试解析与日期类型匹配的值。听起来您的DimDate表中有一个值的格式不是它可以解析的格式。因此,我将日期改为2050-12-31,而不是9999-12-31或1900-01-01,当我使用“在Excel中分析”选项时,一切都开始工作。这是在我们的开发服务器上运行的,同样,它工作正常。但当我部署到dev时,仍然会遇到相同的错误。我想现在出于不同的原因,所以我可能会提出另一个问题。是的,我认为9999-12-31和1900-01-01超出了范围
WorkOrdersLastYearCount:=
CALCULATE(
count(FactWorkOrderLifeCycle[Clientsid]),
SAMEPERIODLASTYEAR(DimDate[FullDate])
)