计算日期之间的值

时间:2014-06-11 14:54:33

标签: dax sql-server-2012-datatools

一些参考文献:

  1. Microsoft's documentation on DATESBETWEEN
  2. Somewhat similar question, though the answer and derivatives of the formula don't return the correct results
  3. Microsoft's documentation on TODAY
  4. 根据上述Microsoft文档,我试图根据今天SSAS表格模型中的当前日期计算过去三个月的计算结果。首先,我不知道如何使用SSAS,我的公司也没有提供任何学习资料,所以我一直在阅读MSDN文档,这可能不是开始的地方,所以如果这是错误的,我很高兴被告知。例如,使用C#Ruby,我可以在控制台中测试代码,看看我是否得到了我想要的结果,而且我也不知道如何在SSAS数据中做到这一点工具' DAX语言 - 这是一个GUI,它为用户提供了很少的功能(我花了四个小时来弄清楚如何访问维度的属性)。 我绝对是代码猴。

    我尝试使用下面的公式(以及它的衍生物),因为这就像微软在他们的例子中所做的那样:

    3MonthValue:=CALCULATE(SUM([MeasureOne])/SUM([MeasureTwo]),DATESBETWEEN(DateDimension[Date],DATEADD(DateDimension[Date],-3,MONTH),TODAY()))
    

    结果,什么都没有。当然,如果我运行类似的SQL逻辑,我会得到正确的结果。我也使用了提供的SO示例,但我怀疑这并不是我想要实现的,并且只获得空白作为答案。鉴于我需要计算某个时间范围之间的公式,在SQL中它将是WHERE子句,我该如何将其转换为DAX?换句话说,什么是DAX的WHERE,如果CALCULATE不正确,那么正确的方法是什么?

1 个答案:

答案 0 :(得分:1)

当你说它不起作用时,你的意思是什么?您使用的公式是将日期维度的键作为DATESBETWEEN函数的开始日期 - 这意味着如果您希望度量值填充值,则需要在数据透视表中使用特定日期来建立上下文。

如果您尝试在设计时查看该度量,则在编辑器中没有上下文,因此该度量不会填充。

此外,如果在一个数据透视图中,您正在查看包含多个日期的时间上下文,那么这也是行不通的。所以说你看一个月或四分之一。这两个都包含多个DateDimension [Date]的数量 - 所以再次无法建立上下文。

所以回顾一下 - 当将枢轴数据过滤到a时,使用设置为尺寸时间键的开始时间上下文查看DATESBETWEEN等日期范围的度量将仅显示在轴中单日。

您可以使用相同的功能对此进行测试,但通过将DateDimension [Date]替换为静态日期(或可能是TODAY())来硬设置开始日期。该度量应显示在设计时间内,因为该公式具有完成计算所需的所有信息。