2017-08-19 2 views
0

Besoin de votre aide pour résoudre un problème dans le rapport du client.Requête MDX: Comment puis-je montrer un jeu de définition dans le résultat de la requête s'il n'est pas lié à une autre dimension?

Veuillez vérifier le résultat des requêtes de 2 mdx ci-dessous.

Note: J'ai utilisé l'opérateur Union pour que je puisse fusionner le résultat de 2 membres avec 1 (France et Allemagne combinées). Utiliser la fonction Exist dans Union car il faut vérifier le premier ensemble dans la fonction s'il s'agit d'un membre de dimension du second ensemble. J'ai utilisé Union avec Exist pour mettre en œuvre la condition OU.

Dans la première requête MDX vous pouvez trouver ensemble factice (France & Allemagne) en jeu de résultats, mais en deuxième MDX vous ne pouvez pas trouver factice (France & Allemagne) paramétrées parce que la hiérarchie de catégorie de produits est lié au pays et Existant contrôle de fonction cet ensemble fictif n'est pas un membre réel de la hiérarchie du pays, donc il supprime l'ensemble factice du jeu de résultats.

Existe-t-il un moyen ou une approche alternative de sorte que je puisse forcer la fonction existe pour montrer le faux dans le résultat final (mDX 2)?

Existe-t-il un moyen ou une approche alternative de sorte que je puisse forcer la fonction existe pour montrer le faux dans le résultat final (mDX 2)?

MDX 1)

WITH 
    SET [Combined] AS { 
     [Customer].[Customer Geography].[Country].&[France], 
     [Customer].[Customer Geography].[Country].&[Germany] 
    } 
    MEMBER [Customer].[Customer Geography].[France & Germany] AS Aggregate([Combined]) 
SELECT 
    [Measures].[Internet Sales Amount] ON 0, 
    Union(
     Except([Customer].[Customer Geography].[Country], [Combined]), 
     [Customer].[Customer Geography].[France & Germany] 
    ) ON 1 
FROM [Adventure Works] 

Résultat MDX 1

Internet Sales Amount 
Australia $9,061,000.58 
Canada $1,977,844.86 
United Kingdom $3,391,712.21 
United States $9,389,789.51 
France & Germany $5,538,330.05 

MDX Query 2)

WITH 
    SET [Combined] AS { 
     [Customer].[Customer Geography].[Country].&[France], 
     [Customer].[Customer Geography].[Country].&[Germany] 
    } 
    MEMBER [Customer].[Customer Geography].[France & Germany] AS Aggregate([Combined]) 
SELECT 
    [Measures].[Internet Sales Amount] ON 0, 

     Union(Exists(Except([Customer].[Customer Geography].[Country], [Combined]), 
     {[Product].[Product Categories].[Category].&[3]} 
     , "Internet Sales") , 

     Exists([Customer].[Customer Geography].[France & Germany],{[Product].[Product Categories].[Category].&[3]} 
    , "Internet Sales")) 

    ON 1 
FROM [Adventure Works] 

Résultat MDX requête 2)

Internet Sales Amount 
Australia  $9,061,000.58 
Canada   $1,977,844.86 
United Kingdom $3,391,712.21 
United States $9,389,789.51 

Répondre

0

Pourquoi avez-vous besoin d'utiliser deux fois dans la deuxième requête?

WITH 
    SET [Combined] AS { 
     [Customer].[Customer Geography].[Country].&[France], 
     [Customer].[Customer Geography].[Country].&[Germany] 
    } 
    MEMBER [Customer].[Customer Geography].[France & Germany] AS Aggregate([Combined]) 
SELECT 
    [Measures].[Internet Sales Amount] ON 0, 

     Union( 
     Exists(
      Except([Customer].[Customer Geography].[Country], [Combined]), 
      {[Product].[Product Categories].[Category].&[3]} 
      ,"Internet Sales" 
     ) 

     //,Exists(
     // [Customer].[Customer Geography].[France & Germany] 
     // ,{[Product].[Product Categories].[Category].&[3]} 
     // ,"Internet Sales" 
     //) 

     ,[Customer].[Customer Geography].[France & Germany] 

     )  
    ON 1 
FROM [Adventure Works];