2016-09-12 1 views
0

Je suis nouveau sur SSAS et les cubes.SSAS Membre calculé du cube conditionnel

J'ai une table de base de données simple:

product|value|status 
-------|-----|------ 
A|100|1 
B|20|0 
A|20|0 
B|80|1 

champ Etat indique s'il est prévu la vente ou déjà fermé un.

Je voudrais avoir des mesures dans le cube pour Prévu (0) vente et Fermé (1) vente. Ils devraient additionner la valeur par produit dans un état donné.

cube de sortie devrait se présenter comme suit:

product|planned sale|closed sale  
------|---------|----------- 
A|20|100 
B|20|80 

J'ai mesure pour la valeur et le statut. Cependant, peu importe comment je découpe la fonction, le statut booléen est agrégé. Je suppose que ma mesure est mal configurée. J'ai essayé de le définir à booléen, mais il semble faire "et" le calcul.

J'ai essayé IFF et .currentmember en espérant qu'il serait itéré.

Je dois manquer quelque chose de basique, s'il vous plaît, aidez-moi. Je vous remercie.

Répondre

0

Ajoutez une dimension Statut simple, avec 0 pour Planifié et 1 pour Fermé.

Il commence à s'agréger car vous l'utilisez en tant que mesure.

EDIT en fonction de votre commentaire:

Je crois que vous assumez à tort que SSAS interprétera la valeur de measures.status comme une valeur booléenne. SQL n'a pas de concept de type de données booléen. Bien que le type de données bit puisse être utilisé pour contenir des valeurs booléennes, dans SQL, vous ne pouvez pas dire IF [MyBitColumn] THEN ... Au lieu de cela, vous devez indiquer IF [MyBitColumn]=1 THEN .... SQL Server ne comprend pas automatiquement/supposent que 1 = true et 0 = false.

Essayez ceci pour votre mesure calculée:

iif([Measures].[Status]=1, [Measures].[Value],0) //closed sale 
iif([Measures].[Status]=0, [Measures].[Value],0) //planned sale 
+0

Bien que cela fonctionne, pour satisfaire aux exigences que je dois être en mesure de créer des mesures calculées séparément plutôt que par une dimension contrôlée. Je cherche un indice sur la façon de configurer la mesure calculée pour faire l'équivalent de la fonction "sumif" dans Excel :) –

+0

Publiez votre tentative d'utiliser IIF(), afin que nous puissions le déboguer. –

+0

J'ai essayé: iif ([Mesures]. [Statut], [Mesures]. [Valeur], 0) pour ceux qui évaluent à 1 et! [Meaures]. [Statut] pour ceux qui ne le font pas. Cependant, il semble agréger [Status] bien que la mesure [Status] ne soit pas agrégée. –