我对ssas cube数据源视图级别有疑问。
我想在Dimdate时间中添加一个新列(last100days),该列显示最近100天的信息。
我在sql server级别尝试过如下查询
在dimdate维度中添加新列(last100days)
1)更新dimdate设置last100days =' 01-01-1900'
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() 那个时候它显示如下的错误
延期准备无法完成。 声明无法准备。 关键字&#39; AS&#39;附近的语法不正确。 关键字&#39; update&#39;附近的语法不正确。
按钮:
好的..我
enter code here
添加新列,该列从今天开始到过去100天。请帮我解决如何在ssas cube side中解决此问题
答案 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
希望这有帮助。