2017-05-24 84 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

相關問題