如何从Dim Date Dimension中的Todays Date开始100天前的日期

时间:2014-12-18 08:46:25

标签: ssas ssas-2008

我对ssas cube数据源视图级别有疑问。 我想在Dimdate时间中添加一个新列(last100days),该列显示最近100天的信息。 我在sql server级别尝试过如下查询 在dimdate维度中添加新列(last100days) 1)更新dimdate设置last100days =&#39; 01-01-1900&#39; 2)update dimdate set last100days=[StandardDate] WHERE [StandardDate] >= DATEADD(day,-100, getdate()) and [StandardDate] <= getdate()

那个时候我会在dimdate维度得到准确的结果。 同样的方式我尝试在dasdatedimension级别的datasoure视图级别右键单击并选择新的namedcalculation我给列名称last100days并输入表达式 [StandardDate]&gt; = DATEADD(day,-100,getdate()) 和[StandardDate]&lt; = getdate() 那个时候它显示如下的错误

TITLE:Microsoft Visual Studio

延期准备无法完成。 声明无法准备。 关键字&#39; AS&#39;附近的语法不正确。 关键字&#39; update&#39;附近的语法不正确。


按钮:

好的..我

      -

enter code here

添加新列,该列从今天开始到过去100天。请帮我解决如何在ssas cube side中解决此问题

2 个答案:

答案 0 :(得分:0)

您需要输入一个返回值的表达式。你所有人都是测试条件。

请改为尝试:

CASE 
  WHEN  [StandardDate] >= DATEADD(day,-100, getdate()) AND [StandardDate] <= getdate()
       THEN [StandardDate]
  ELSE NULL
END

答案 1 :(得分:0)

您真的不需要为此创建一个度量。您需要在日期维度中添加新列,以指示日期是否超过100天。假设该列名为RollingLast100days。您需要对@ tab-alleman的代码进行微调。

CASE 
  WHEN  DATEDIFF(dd, [StandardDate], GETDATE()) <=100
       THEN 1
  ELSE 0
END

现在该列已准备好,如果您只想查看最近100天的数据,则只需要一个小的附加条件。

WHERE [Dim Date].[Date].RollingLast100days = 1

e.g。仅获取过去100天的销售额:

SELECT [Measures].[Sales Amount] ON 0
FROM    [YourCube]
WHERE [Dim Date].[Date].RollingLast100days = 1

获取过去100天内销售的产品清单:

SELECT [Measures].[Sales Amount] ON 0,
Product.Products.MEMBERS ON 1
FROM    [YourCube]
WHERE [Dim Date].[Date].RollingLast100days = 1

希望这有帮助。

相关问题