2017-05-18 24 views
1

私は[Measures] [Per Unique App Users]が月ごとに必要なSSMS 2014でクエリを処理していますので、月間の増分月を動的に計算することができます。私は、先月と前月の比較から始めたいと思うのが望ましいでしょう。そして、これは最終的に毎月レポートとして実行されることになります(それゆえ、動的である必要があります)。MDX月間計算メンバー

DATEメンバーの有無にかかわらず、[CurrentMonthUniqueUsers]と[LastMonthUniqueUsers]の数は同じままです(例では表示されます)。さらに、私のWHEREステートメントがなければ、私は非メンバー行の結果しか得られません。

WITH 
MEMBER [LastMonthUniqueUsers] as SUM({[Date].[Calendar].CurrentMember.Lag(2)},[Measures].[App Unique Users Loggedin]) 
MEMBER [CurrentMonthUniqueUsers] as SUM({[Date].[Calendar].CurrentMember.Lag(1)},[Measures].[App Unique Users Loggedin]) 
// 
MEMBER [Measures].[Percent Unique App Users] AS ([CurrentMonthUniqueUsers])/([LastMonthUniqueUsers]), FORMAT_STRING = "Percent" 
// 
MEMBER [CurrentDate] As Now() 
// 

SELECT 
    non empty[Project].[Client Name].children ON 0, 
    non empty{[Measures].[Percent Unique App Users], 
     [CurrentMonthUniqueUsers], 
     [LastMonthUniqueUsers], 
     [Measures].[App Logins], 
     [Measures].[App Unique Users Loggedin]} ON 1 
FROM 
    [OpsViewWarehouse] 
WHERE 
    [Date].[Year].[2017] 

以下の画像は私が結果として得ているものです。ログイン数とユニークログイン数は、すべての時間であり、どの日付でもフィルタリングされません。

Data Screenshot

私は、MDXに新たなんだ、ので、任意の助けをいただければ幸いです!

EDIT(5/22/2017):ここでは、whytheqによって提供された回答を処理したクエリがあります。私は列に日付(201705)を指定しなければならないという点でまだ動的ではないことに注意してください。クエリあなたCURRENTMEMBERで

WITH 
    MEMBER [2MonthsPriorUniqueUsers] AS Sum({[Date].[Calendar Year Month].CurrentMember.Lag(2)},[Measures].[App Unique Users Loggedin]) 
    MEMBER [1MonthPriorUniqueUsers] AS Sum({[Date].[Calendar Year Month].CurrentMember.Lag(1)},[Measures].[App Unique Users Loggedin]) 
    MEMBER [1MonthPriorTotalAppLogins] AS Sum({[Date].[Calendar Year Month].CurrentMember.Lag(1)},[Measures].[App Logins]) 
    MEMBER [Measures].[PercentUniqueIncreaseMoM] AS ([1MonthPriorUniqueUsers]/[2MonthsPriorUniqueUsers])-1,FORMAT_STRING = "Percent" 
SELECT 
    NON EMPTY 
    {[Date].[Calendar Year Month].[201705]} 
    * [Project].[Client Name].members ON 0, 
    NON EMPTY 
    { 
     [Measures].[PercentUniqueIncreaseMoM] 
    ,[1MonthPriorUniqueUsers] 
    ,[2MonthsPriorUniqueUsers] 
    ,[1MonthPriorTotalAppLogins] 
    } ON 1 
FROM [OpsViewWarehouse] 
+0

[日付]。[年]。[2017] - > [日付]。[カレンダー]。[2017]問題を解決するかもしれない。 –

答えて

1

WHERE句であるものである - 2017年である - これは月に帰国されることはありません - それはおそらくメンバー[Date].[Calendar].[All]を返しています:追加

[Date].[Calendar].CurrentMember 

てみてくださいSELECT句かのどちらかへのヶ月:

:上記

// 
WITH 
    MEMBER [LastMonthUniqueUsers] AS 
    Sum 
    (
     {[Date].[Calendar].CurrentMember.Lag(2)} 
    ,[Measures].[App Unique Users Loggedin] 
    ) 
    MEMBER [CurrentMonthUniqueUsers] AS 
    Sum 
    (
     {[Date].[Calendar].CurrentMember.Lag(1)} 
    ,[Measures].[App Unique Users Loggedin] 
    ) 
    // 
    MEMBER [Measures].[Percent Unique App Users] AS 
    [CurrentMonthUniqueUsers]/[LastMonthUniqueUsers] 
    ,FORMAT_STRING = "Percent" 
    // 
    MEMBER [CurrentDate] AS 
    Now() 
SELECT 
    NON EMPTY 
     [Project].[Client Name].Children ON 0 
,NON EMPTY 
    {[Date].[Calendar].[Month].&[Jan 2017]} //<<<<<<change to a month member in your cube 
    * { 
     [Measures].[Percent Unique App Users] 
    ,[CurrentMonthUniqueUsers] 
    ,[LastMonthUniqueUsers] 
    ,[Measures].[App Logins] 
    ,[Measures].[App Unique Users Loggedin] 
    } ON 1 
FROM [OpsViewWarehouse]; 

も数ヶ月のセットかもしれません

// 
WITH 
    MEMBER [LastMonthUniqueUsers] AS 
    Sum 
    (
     {[Date].[Calendar].CurrentMember.Lag(2)} 
    ,[Measures].[App Unique Users Loggedin] 
    ) 
    MEMBER [CurrentMonthUniqueUsers] AS 
    Sum 
    (
     {[Date].[Calendar].CurrentMember.Lag(1)} 
    ,[Measures].[App Unique Users Loggedin] 
    ) 
    // 
    MEMBER [Measures].[Percent Unique App Users] AS 
    [CurrentMonthUniqueUsers]/[LastMonthUniqueUsers] 
    ,FORMAT_STRING = "Percent" 
    // 
    MEMBER [CurrentDate] AS 
    Now() 
SELECT 
    NON EMPTY 
    { 
     [Measures].[Percent Unique App Users] 
    ,[CurrentMonthUniqueUsers] 
    ,[LastMonthUniqueUsers] 
    ,[Measures].[App Logins] 
    ,[Measures].[App Unique Users Loggedin] 
    } ON 0 
,NON EMPTY 
    {Date].[Calendar].[Month].MEMBERS //<<<<<<change to the month hierarchy in your cube 
    * [Project].[Client Name].Children ON 1 
FROM [OpsViewWarehouse]; 
+0

ヒント:コードをデバッグするには、{[Date]。[Calendar] .CurrentMember.Lag(2)}のメンバーを確認することもできます。それは[日付]。[カレンダー]。[すべて]を返し、それを明らかにした。私はそれが複雑なMDXコードのために自分自身が役に立ちました。 –

+0

助けてくれてありがとう@whytheq。 [Date] [Calendar Year Month]を使用してメンバーを指定する必要があることが判明しました。これは少なくとも私に実行可能なデータを取得しますが、それは私が日付を指定する必要があるという点で依然として動的ではありません。それ以上の提案はありますか? –

+0

@NickZ別の質問を投稿してください。必要なダイナミズムを指定する必要があります。それは今月にする必要があります、それは常に最後の完全な月である必要があります... – whytheq

関連する問題