2016-08-11 5 views
0

J'ai une requête MDX qui me permet d'obtenir la mesure de certains pays, sur une plage de dates. Mais si je définis la plage de dates sur plus de 1 jour, j'obtiens la valeur de chaque pays pour chaque jour (dans la plage). Mais je veux additionner les mesures pour chaque pays à travers la période. Merci d'avance. Didnt trouver un fil excisting;)Somme la requête MDX

La requête (certaines parties sont barrées en raison de données internes), la mention '???':

WITH 
SET [*NATIVE_CJ_SET] AS 
    'FILTER(
     NONEMPTYCROSSJOIN(
     [*BASE_MEMBERS__Site.Site Hierarchy_] 
     ,NONEMPTYCROSSJOIN(
      [*BASE_MEMBERS__Time.GA Date Hierarchy_] 
      ,[*BASE_MEMBERS__Country.Country Hierarchy_] 
     ) 
    ) 
     , NOT ISEMPTY ([Measures].[???]) 
    )' 
SET [*BASE_MEMBERS__Country.Country Hierarchy_] AS 
    '{ 
    [Country.Country Hierarchy].[Austria] 
    ,[Country.Country Hierarchy].[Germany] 
    ,[Country.Country Hierarchy].[India] 
    ,[Country.Country Hierarchy].[Switzerland] 
    ,[Country.Country Hierarchy].[United States] 
    }' 
SET [*NATIVE_MEMBERS__Site.Site Hierarchy_] AS 
    'GENERATE(
    [*NATIVE_CJ_SET] 
    ,{[Site.Site Hierarchy].CURRENTMEMBER} 
    )' 
SET [*SORTED_COL_AXIS] AS 
    'ORDER(
     [*CJ_COL_AXIS] 
    ,[Site.Site Hierarchy].CURRENTMEMBER.ORDERKEY,BASC 
    )' 
SET [*BASE_MEMBERS__Measures_] AS 
    '{[Measures].[???]}' 
SET [*BASE_MEMBERS__Site.Site Hierarchy_] AS 
    '{[Site.Site Hierarchy].[???]}' 
SET [*BASE_MEMBERS__Time.GA Date Hierarchy_] AS 
    '{ 
     [Time.GA Date Hierarchy].[2016].[8].[1] 
    : [Time.GA Date Hierarchy].[2016].[8].[11] 
    }' 
SET [*CJ_ROW_AXIS] AS 
    'GENERATE(
     [*NATIVE_CJ_SET] 
    , {([Time.GA Date Hierarchy].CURRENTMEMBER 
     ,[Country.Country Hierarchy].CURRENTMEMBER)} 
    )' 
SET [*SORTED_ROW_AXIS] AS 
    'ORDER(
     [*CJ_ROW_AXIS] 
    ,ANCESTOR(
     [Time.GA Date Hierarchy].CURRENTMEMBER 
     , [Time.GA Date Hierarchy].[Year]).ORDERKEY 
    ,BASC 
    ,ANCESTOR(
     [Time.GA Date Hierarchy].CURRENTMEMBER 
     , [Time.GA Date Hierarchy].[Month]).ORDERKEY 
    ,BASC 
    ,[Time.GA Date Hierarchy].CURRENTMEMBER.ORDERKEY 
    ,BASC 
    ,[Measures].[*SORTED_MEASURE] 
    ,BASC)' 
SET [*CJ_COL_AXIS] AS 
    'GENERATE(
     [*NATIVE_CJ_SET] 
    , {([Site.Site Hierarchy].CURRENTMEMBER)} 
    )' 
MEMBER [Measures].[*SORTED_MEASURE] AS '([Measures].[???],[Site.Site Hierarchy].[*TOTAL_MEMBER_SEL~SUM])', SOLVE_ORDER=400 
MEMBER [Site.Site Hierarchy].[*TOTAL_MEMBER_SEL~SUM] AS 'SUM([*NATIVE_MEMBERS__Site.Site Hierarchy_])', SOLVE_ORDER=98 
SELECT 
CROSSJOIN([*SORTED_COL_AXIS],[*BASE_MEMBERS__Measures_]) ON COLUMNS 
,[*SORTED_ROW_AXIS] ON ROWS 
FROM [???] 

C'est la sortie: http://image.prntscr.com/image/ab236e90880a4d8b969fdd182a05ccdb.png

Mais je veux comme ça: Allemagne 901 Autriche 67

etc.

+0

J'ai trouvé des threads existants, en ce qui concerne la fonction sum. mais sans l'aspect de la plage de dates. –

+0

Essayez d'ajouter un peu plus de contexte. Montrez du code et une partie de vos données si possible. –

+0

http://image.prntscr.com/image/d31fefb0041642328c9f20ee0c0f9343.png c'est le résultat de la requête. Mais je veux avoir les 5 pays avec le total des nombres. Allemagne: 851 par exemple. –

Répondre

0

J'ai reformaté votre code pour essayer le rendre un peu plus facile à lire - cette partie de votre code ne semble pas correct:

SET [*SORTED_ROW_AXIS] AS 
    'ORDER(
     [*CJ_ROW_AXIS] 
    ,ANCESTOR(
     [Time.GA Date Hierarchy].CURRENTMEMBER 
     , [Time.GA Date Hierarchy].[Year]).ORDERKEY 
    ,BASC 
    ,ANCESTOR(
     [Time.GA Date Hierarchy].CURRENTMEMBER 
     , [Time.GA Date Hierarchy].[Month]).ORDERKEY 
    ,BASC 
    ,[Time.GA Date Hierarchy].CURRENTMEMBER.ORDERKEY 
    ,BASC 
    ,[Measures].[*SORTED_MEASURE] 
    ,BASC)' 

Toute tentative de simplifier l'ensemble de votre script que j'ai les suivants: - Je viendrai retour à ce que cela ne résoudra pas votre problème, mais je veux juste essayer de comprendre ce qui se passe:

WITH 
SET [*NATIVE_CJ_SET] AS 
    NONEMPTY(
     [Site.Site Hierarchy].[???] 
     * [Time.GA Date Hierarchy].[2016].[8].[1] : [Time.GA Date Hierarchy].[2016].[8].[11] 
     * { 
     [Country.Country Hierarchy].[Austria] 
     ,[Country.Country Hierarchy].[Germany] 
     ,[Country.Country Hierarchy].[India] 
     ,[Country.Country Hierarchy].[Switzerland] 
     ,[Country.Country Hierarchy].[United States] 
    } 
     ,[Measures].[???]) 
    ) 
SET [*CJ_COL_AXIS] AS 
    GENERATE(
     [*NATIVE_CJ_SET] 
     ,{([Site.Site Hierarchy].CURRENTMEMBER)} 
    ) 
SET [*NATIVE_MEMBERS__Site.Site Hierarchy_] AS 
    GENERATE(
     [*NATIVE_CJ_SET] 
     ,{[Site.Site Hierarchy].CURRENTMEMBER} 
    ) 
SET [*SORTED_COL_AXIS] AS 
    ORDER(
     [*CJ_COL_AXIS] 
    ,[Site.Site Hierarchy].CURRENTMEMBER.ORDERKEY 
    ,BASC 
    ) 
SET [*CJ_ROW_AXIS] AS 
    GENERATE(
     [*NATIVE_CJ_SET] 
    ,(
     [Time.GA Date Hierarchy].CURRENTMEMBER 
     ,[Country.Country Hierarchy].CURRENTMEMBER 
    ) 
    ) 
MEMBER [Site.Site Hierarchy].[*TOTAL_MEMBER_SEL~SUM] AS 
    SUM(
     [*NATIVE_MEMBERS__Site.Site Hierarchy_] 
    ) 
    , SOLVE_ORDER=98 
MEMBER [Measures].[*SORTED_MEASURE] AS 
    (
     [Measures].[???] 
    ,[Site.Site Hierarchy].[*TOTAL_MEMBER_SEL~SUM] 
    ) 
    , SOLVE_ORDER=400 
SET [*SORTED_ROW_AXIS] AS 
    ORDER(
     [*CJ_ROW_AXIS] 
    ,ANCESTOR(
     [Time.GA Date Hierarchy].CURRENTMEMBER 
     , [Time.GA Date Hierarchy].[Year]).ORDERKEY 
    ,BASC 
    ,ANCESTOR(
     [Time.GA Date Hierarchy].CURRENTMEMBER 
     , [Time.GA Date Hierarchy].[Month]).ORDERKEY 
    ,BASC 
    ,[Time.GA Date Hierarchy].CURRENTMEMBER.ORDERKEY 
    ,BASC 
    ,[Measures].[*SORTED_MEASURE] 
    ,BASC) 
SELECT 
    [*SORTED_COL_AXIS] * [Measures].[???] ON 0 
    ,[*SORTED_ROW_AXIS] ON 1 
FROM [???]; 
+0

Ok, d'habitude, je ne trier par aucune date. J'ai mes cinq pays que je veux avoir la somme pour chaque pays au cours de la gamme de date. Si je sélectionne 2016-01-01> 2016-08-14 par exemple. Je reçois huit barres dans tous les pays. Huit barres causent à huit mois? Comment puis-je me débarrasser de ça? Je veux juste la somme pour chaque pays. –

+0

@TomH. la chose est que je ne comprends pas ce qui se passe dans cet extrait ci-dessus - je suis surpris qu'il ne jette pas une exception - il ne me semble pas valable mdx - l'ai-je copié correctement? – whytheq

+0

http://www2.pic-upload.de/img/31464575/Screenshot_2.jpg, voici à quoi ressemble mon mdx dans l'analyseur de rapport pentaho. Oui, le MDX devrait être correct. J'ai deux jours comme vous pouvez le voir. J'ai juste besoin de savoir où et comment j'ai besoin d'ajouter la somme? fonction pour obtenir les valeurs uniques pour chaque pays. L'Allemagne aurait 90 sur cette photo par exemple.Je suis assez nouveau à MDX donc je ne peux pas lire la syntaxe aussi bien. –

0

Ok, je compris. A écrit mon propre MDX qui est beaucoup mieux:

SELECT CrossJoin([Site.Site Hierarchy].[???], {[Measures].[???]}) ON COLUMNS, 
Order({[Country.Country Hierarchy].[Austria],[Country.Country Hierarchy].[Germany],[Country.Country Hierarchy].[India],[Country.Country Hierarchy].[Switzerland],[Country.Country Hierarchy].[United States]}, Measures.[sessions], BASC) ON ROWS 
FROM [???] 
WHERE {[Time.GA Date Hierarchy].[2016].[8].[1] : [Time.GA Date Hierarchy].[2016].[8].[17]} 

Mais l'ordre ne fonctionne pas correctement. Quel est le problème? Résultat: http://www2.pic-upload.de/img/31482391/Screenshot_1.png

+0

Veuillez utiliser le lien modifier de votre question pour ajouter des informations supplémentaires. Le bouton Post-réponse ne doit être utilisé que pour les réponses complètes à la question. - [À revoir] (/ review/low-quality-posts/13368923) – SurvivalMachine

+0

Une aide?! Le tri ne fonctionne pas correctement. –