我正在創建一個數據集,我最終希望比較特定年份(2014年)和相同的特定兩週日期範圍(即直到指定日期範圍的最後日期的兩週)。MDX:查找特定年份和上一年的兩週指定日期範圍的銷售價值
我迄今所做的是創建查詢以查找指定的兩個週日期範圍,因爲這的相關數據:
SELECT NON EMPTY {
[Measures].[Quantity], [Measures].[Total Price]
,[Measures].[Contribution Margin], [Measures].[Profit Margin]
} ON COLUMNS,
NON EMPTY {
([Dim Date].[Calender].[Date].[2014-11-20]:[Dim Date].[Calender].[Date].[2014-11-30]
,[Dim Store2].[Store Key].&[1024])
} on rows
from [DSV_FactStoreSales 1]
我不明白,我怎麼會得到相同的期末上年。我看過ParallelPeriod
,但我見過的例子包括currentmember
,但在本例中我有一個指定的範圍,跨越兩週。
有沒有人有任何想法如何實現這一點?爲了能夠將結果集作爲SSRS中的數據集使用,我需要將它放在同一個查詢中。
編輯
我跑的查詢:
SELECT NON EMPTY {
[Measures].[Quantity]
,[Measures].[Total Price]
,[Measures].[Contribution Margin]
,[Measures].[Profit Margin]
} ON COLUMNS,
NON EMPTY
{
(
parallelperiod([Dim Date].[Calender].[Year],1,[Dim Date].[Calender].[Date].[2014-11-17])
:
parallelperiod([Dim Date].[Calender].[Year],1,[Dim Date].[Calender].[Date].[2014-11-30]),[Dim Store2].[Store Key].&[1024]
)
} on rows
from [DSV_FactStoreSales 1]
,但它給我的結果集:
Quantity Total Price Contribution Margin Profit Margin
2014-11-07 1024 1 119.2 47.04 39.46%
2014-11-10 1024 1 31.6 21.1 66.77%
2014-11-25 1024 1 55.2 25.45 46.11%
2014-11-26 1024 2 110.8 65.78 59.37%
2014-11-28 1024 166 20903.62 9101.82 43.54%
2014-11-29 1024 117 11870.75 5535 46.63%
2014-11-30 1024 50 9148.8 4008.13 43.81%
2014-12-01 1024 91 11574.39 4933.01 42.62%
2014-12-02 1024 21 2776.8 1254.12 45.16%
,其中特別的日期似乎離相比受到追捧的效果。
EDIT 2
我試着查詢
Select Non empty {[Measures].[Total Price]} on 0,
([Dim Date].[Calender].[Date].members) on 1
FROM (Select
{
(parallelperiod([Dim Date].[Calender].[Month],4,[Dim Date].[Calender].[Date].[2014-11-22])
:parallelperiod([Dim Date].[Calender].[mONTH],4,[Dim Date].[Calender].[Date].[2014-14-28]), [Dim Store2].[Store Key].&[1041])
} on columns
from [DSV_FactStoreSales 1])
但導致顯示來自2014-07-26
通過2018-05-02
銷售。可能會有一些潛在的層次結構錯誤,或者我誤解了ParallelPeriod()
? Please note
,我在Month
這個最後一個示例Query中做了一些測試。
編輯3 「採用與會員辦法」
我也嘗試了建議的解決方案來調用WITH Member AS
這樣的:
With
Member [Measures].[QuantityParallelPeriod] as
(
ParallelPeriod([Dim Date].[Calender].[Year],1,[Dim Date].[Calender].CurrentMember),
[Measures].[Quantity]
)
Select Non empty {[Measures].[QuantityParallelPeriod],[Measures].[Total Price]} on 0,
non empty{([Dim Date].[Calender].[Date].members)} on 1
FROM (Select
{
(parallelperiod([Dim Date].[Calender].[MOnth],4,[Dim Date].[Calender].[Date].[2014-11-22])
:parallelperiod([Dim Date].[Calender].[MOnth],4,[Dim Date].[Calender].[Date].[2014-11-28]), [Dim Store2].[Store Key].&[1024])
} on columns
from [DSV_FactStoreSales 1])
但導致
Quantity
Parallel
Period Total Price
2014-11-07 (null) 119.2
2014-11-10 (null) 31.6
2014-11-25 (null) 55.2
2014-11-26 (null) 110.8
2014-11-28 (null) 20903.62
2014-11-29 (null) 11870.75
2014-11-30 (null) 9148.8
2014-12-01 (null) 11574.39
2014-12-02 (null) 2776.8
2015-11-13 1 (null)
2015-11-16 1 (null)
2015-12-01 91 (null)
2015-12-02 21 (null)
我不明白只有日期Outside
指定的parallelperiod range
返回一個值?
編輯的預期輸出
什麼,我期望爲輸出將是:
Quantity TotalPrice Contribution margin ProfitMargin
2013-11-17 4 5 13 23 %
2013-11-18 4 5 15 25 %
. . . . .
. . . . .
. . . . .
2013-11-30 1 100 80 80 %
2014-11-17 1 100 80 80 %
2014-11-18 1 100 80 80 %
. . . . .
. . . . .
. . . . .
2014-11-30 1 100 80 80 %
(其中數值是虛擬值,可能不累加「邏輯」)
謝謝回答!我已經將其添加到查詢中,但是在編輯中獲得了輸出。使用ParallellPeriod,是否有可能在同一結果集中具有指定日期範圍的銷售額*和*前一年的指定日期範圍的銷售額?根據我的理解,它僅返回前一年的銷售額? – Cenderze
我已經更新了我的答案,嘗試添加額外的措施。 –
我也試過這個。我已經在'EDIT 3'下更新了OP的結果。 – Cenderze