2017-05-24 51 views
0

我正在创建一个多维数据集,其股票值应该只能得出每个月的余额和值的最后一天。排除SSAS多维数据集中的数据的问题(使用EOMONTH()的SSMS和SSAS中的不同输出)

因此,我创建了一个SSMS以下查询:

Create table #theStockTable(
Stock int, 
StockValue INT, 
DateKey int 
) 

INSERT INTO #theStockTable 
VALUES(3,5, 20170211), 
(3,5,20170228), 
(1,4,20170331), 
(1,4,20170330) 

SELECT  CAST(CONVERT(varchar, DateKey, 112) AS numeric(8, 0)) AS DateKey, SUM(Stock) AS [CL Stock], SUM(StockValue) AS [CL Stock Value] 
FROM   #theStockTable 
WHERE  CONVERT(date, CONVERT(varchar(10), DateKey)) = eomonth(CONVERT(date, CONVERT(varchar(10), DateKey))) 
GROUP BY DateKey 

在SSMS这将返回正确的值:

DateKey CL Stock CL Stock Value 
20170228 3 5 
20170331 1 4 

然而,当我创建一个使用SSAS OLAP多维数据集,并使用上面的查询作为Named Query为我的事实表#theStockTable和相同的查询作为我同一事实表的唯一分区,并部署和执行多维数据集,我有一种情况,我每个月的每一天获得不同的值,但我只想拥有每个月的价值最后一天

我在SSAS中使用了New Project.. -> Import from Server (multidimensional model or data mining model)重要的是用户必须能够按照他们目前的方式浏览多维数据集。

已复制元数据的多维数据集包含股票表上的每一天的值。除了我在Edit named Query..Data Source View中完成的查询修改以及用我的新查询替换分区中的旧查询以外,是否还需要更改一些元数据?

希望有人能够对此有所了解。

编辑

为了澄清我的要求,立方体的一些用户解释说,这是相当慢的浏览例如Excel中,主要是因为我的Stock措施是比它需要更大是。现在,它会返回每个产品和每一天的每个StockValueStock。我只想包括月份最后一天的StockValueStock的总余额。所有其他股票价值是多余的。

例如,浏览我DimDate维度表与测量StockStockValue应该有这样的回报集:

DateKey  Stock StockValue 
20170131 0  0 

,而不是整个返回集现在返回:

DateKey  Stock StockValue 
20170101 3  5 
20170102 4  6 
20170103 1  1 
20170131 0  0 

回答

1

我认为您的多维数据集中已经有日期维度,如果是,请按照下列步骤操作:

  1. 在日期维度中添加值为0/1的附加属性[IsLastDay],以指示当前日期记录是否为该月的最后一天。

2.增加一个计算度量[卡尔斯托克]与此表现公式:

([处理方法] [StockValue],[日期] [IsLastDay] & [1]。。。)

3 。启用此查询以返回预期结果:

select {[CalStock]} on 0, 
non empty{[Date].[Date].[Date]} on 1 
from [YourCube] 
+0

对不起,以便延迟回复。不幸的是,我还没有机会像迄今为止一样致力于完成这些任务。根据我的理解,使用此解决方案可以通过使用特定查询浏览多维数据集来获得预期结果。我正在寻找一种方法来浏览具有特定度量属性的多维数据集。我将尝试将您的查询作为计算成员实施并测试。不过,我现在有一些问题需要部署多维数据集。 – Cenderze

相关问题