2017-04-04 13 views
0

私は大きな助けが必要です。MDX - 毎月の平均での日報

私はPentaho - CDE/CToolsでグラフィックスを生成するためにMDXを使っています。そして、ユーザーが設定する一連のフィルターを実行する必要があります。チャートは毎日の進捗状況で、月の平均ラインを追加したいと思います。しかし、それはうまくいっていません。

私は間違っていますか?私はMDXにあまり知識がありません。それは値を表示し、月全体の平均を繰り返す必要がありますが、同じ値を繰り返しています。フィルタ付き

WITH 
MEMBER [Measures].[AVG] AS 
AVG ([MONTH].[MONTH].CurrentMember, [Measures].[QTD]) 
SELECT NON EMPTY {[Measures].[QTD], [Measures].[AVG]} ON COLUMNS, 
     {[DATE].[DATE].Members} ON ROWS 
FROM [DW20_DAY] 
WHERE Crossjoin(Crossjoin(Crossjoin({[MONTH].[All MONTHs]}, {[CAUSE].[All CAUSEs]}), {[TYPE].[All TYPEs]}), {[MODEL].[All MODELs]}) 

:データの

WITH 
MEMBER [Measures].[AVG] AS 
AVG ([MONTH].[MONTH].CurrentMember, [Measures].[QTD]) 
SELECT NON EMPTY {[Measures].[QTD], [Measures].[AVG]} ON COLUMNS, 
     {[DATE].[DATE].Members} ON ROWS 
FROM [DW20_DAY] 
WHERE Crossjoin(Crossjoin(Crossjoin({[MONTH].[2017-03-01]}, {[CAUSE].[All CAUSEs]}), {[TYPE].[All TYPEs]}), {[MODEL].[All MODELs]}) 

サンプル - この場合、平均は次のようになります7.567.743

DATE  QTD   AVERAGE   It has to be 
01/11/2016 7.731.442 7.731.442  7.567.743 
02/11/2016 7.973.846 7.973.846  7.567.743 
03/11/2016 7.430.333 7.430.333  7.567.743 
04/11/2016 7.517.061 7.517.061  7.567.743 
05/11/2016 6.738.677 6.738.677  7.567.743 
06/11/2016 6.796.424 6.796.424  7.567.743 
07/11/2016 7.631.584 7.631.584  7.567.743 
08/11/2016 7.907.649 7.907.649  7.567.743 
09/11/2016 8.995.933 8.995.933  7.567.743 
10/11/2016 7.444.471 7.444.471  7.567.743 
11/11/2016 8.039.431 8.039.431  7.567.743 
12/11/2016 7.240.583 7.240.583  7.567.743 
13/11/2016 6.779.103 6.779.103  7.567.743 
14/11/2016 7.648.149 7.648.149  7.567.743 
15/11/2016 7.641.452 7.641.452  7.567.743 

---- EDIT:

時間ディメンションの作成をリクエストしました。 これは同じ階層にあります。

しかし、まだ解決できません。 この場合、どのように見えますか?

WITH MEMBER [Measures].[AVG] AS 
Avg(Descendants([TIME].[MONTH].CURRENTMEMBER, [TIME].[DATE]) 
, [Measures].[QTDE] 
) 
SELECT {[Measures].[QTD], [Measures].[AVG]} ON COLUMNS, 
     NON EMPTY{[TIME].[DATE].MEMBERS} ON ROWS 
FROM [DW20_DAY] 

ありがとう。

答えて

0

次のコードは、同様に動作する必要があります:あなたは階層の日がある場合は

Member [Measures].[AVG] as 
AVG([DATE].[DATE].[DATE].Members, [Measures].[QTD]) 

を - >月をし、親によってAVGを取得したい、試してみてください。

AVG([DATE].[DATE].CurrentMember.Siblings, [Measures].[QTD]) 
+0

総人口は、フィルタを適用したときに動作します。 –

+0

フィルタには1か月を使いますか? AVG([DATE]。[MONTH] .CurrentMember * [DATE]。[DATE]。[DATE]。メンバー、[Measures]。[QTD]) –

+0

私は、親子論理。 –

1

あなたは日付ディメンション内のマルチレベルのユーザー階層を持っている場合、クエリのこの種は簡単に行われていますが、次の2つの属性階層を使用している:

[MONTH].[MONTH] 
[DATE].[DATE] 

はその後、日付に対してCURRENTMEMBERを使用して試してみて、空でない対応する月のホールドを取得する:

NonEmpty([MONTH].[MONTH].MEMBERS,[DATE].CURRENTMEMBER) 

は、その後、あなたは上で平均を行うには、その月に関連する日付を見つける必要があります10

次に平均を適用してみてください。

WITH 
MEMBER [Measures].[AVG] AS 
AVG (
    NonEmpty(
    [DATE].[DATE].MEMBERS, 
    NonEmpty(
     [MONTH].[MONTH].MEMBERS,[DATE].CURRENTMEMBER).ITEM(0) 
    ) 
    , [Measures].[QTD] 
) 
... 
... 

私はAdvWrksに対して上記をテストする必要があります!

+0

今、私は時間の階層を持っています。この場合、どうすればいいですか?私はポストに追加しました。私がやったやり方はまだ値を繰り返す。 –

関連する問題