Comment puis-je définir une Mesure Calculée en MDX basé sur un Attribut de Dimension?
Je voudrais créer un indicateur calculé que résume uniquement un sous-ensemble d'enregistrements dans ma table de faits basé sur un attribut de dimension.
Donné:
Dimension
- Date
- LedgerLineItem {La Charge, Le Paiement, De La Radiation, De La Quote-Part De Crédit,}
Mesures
- LedgerAmount
Relations
* LedgerLineItem est un dégénéré dimension de FactLedger
Si je suis en panne LedgerAmount par LedgerLineItem.Type, je peux facilement voir combien est facturé, payés, de crédit, etc, mais quand je ne le décomposer par LedgerLineItem.De Type I ne peut pas facilement ajouter le crédit, payé, crédit, etc ... dans un tableau croisé dynamique. Je voudrais créer des mesures calculées somme seul type spécifique (ou plusieurs) types de livre des faits.
Un exemple de la sortie souhaitée serait:
| Year | Charged | Total Paid | Amount - Ledger |
| 2008 | $1000 | $600 | -$400 |
| 2009 | $2000 | $1500 | -$500 |
| Total | $3000 | $2100 | -$900 |
J'ai essayé de créer l'indicateur calculé un couple de façons et de chacun, dans certaines circonstances, mais pas dans d'autres. Maintenant avant que quelqu'un dit cela, dans l'ETL, je l'ai déjà fait dans d'ETL et il fonctionne très bien. Ce que j'essaie de faire dans le cadre de l'apprentissage de la compréhension MDX mieux, c'est de comprendre comment dupliquer ce que j'ai fait dans l'ETL dans MDX comme jusqu'à présent, j'en suis incapable.
Voici deux tentatives que j'ai faites et les problèmes avec eux.
Cela fonctionne uniquement lorsque le livre est de type dans le tableau croisé dynamique. Il renvoie le montant correct de le grand livre des entrées (bien que dans ce cas, il est identique à la somme de [montant grand livre] mais lorsque j'essaie de supprimer le type et viens d'obtenir la somme de toutes les écritures, il retourne inconnu.
CREATE MEMBER CURRENTCUBE.[Measures].[Received Payment]
AS CASE WHEN ([Ledger].[Type].currentMember = [Ledger].[Type].&[Credit])
OR ([Ledger].[Type].currentMember = [Ledger].[Type].&[Paid])
OR ([Ledger].[Type].currentMember = [Ledger].[Type].&[Held Money: Copay])
THEN [Measures].[Amount - ledger]
ELSE 0
END
, FORMAT_STRING = "Currency"
, VISIBLE = 1
, ASSOCIATED_MEASURE_GROUP = 'Ledger' ;
Cela fonctionne uniquement lorsque le livre n'est pas de type dans le tableau croisé dynamique. Elle renvoie toujours le montant du paiement total, ce qui est incorrect lorsque je suis découpage par type que je voudrais seulement s'attendre à voir le crédit partie en vertu de crédit, la partie payée, sous payés, $0, en vertu de la charge, etc.
CREATE MEMBER CURRENTCUBE.[Measures].[Received Payment]
AS sum({([Ledger].[Type].&[Credit]), ([Ledger].[Type].&[Paid])
, ([Ledger].[Type].&[Held Money: Copay])}
, [Measures].[Amount - Ledger])
, FORMAT_STRING = "Currency"
, VISIBLE = 1
, ASSOCIATED_MEASURE_GROUP = 'Ledger' ;
Est-il un moyen de faire revenir les numéros appropriés, indépendamment de si Livre.Le Type est inclus dans mon tableau croisé dynamique ou pas?
OriginalL'auteur Shane Delmore | 2010-04-16
Vous devez vous connecter pour publier un commentaire.
Essayer EXISTANT:
Devrait faire attention à les membres en jeu.
OriginalL'auteur Meff
Ne peux pas commenter sur Meff de réponse, donc je vais poster mon propre.
Vous devriez envisager d'utiliser Globale au lieu de la Somme, que les résultats ne sont pas toujours ceux que vous attendez à l'aide de Somme:
OriginalL'auteur mprost
Je suis en supposant que le Livre dimention a une clé au sein de la FactLedger mais la question qu'il n'a pas de correctif cumulatif de droite avec la première MDX membre calculé m'amène à croire que vous voudrez peut-être repenser la hiérarchie similaire à cela.
Alors qu'un simple SOMME en fonction de votre type de livre, cela fait-il sens?
OriginalL'auteur ajdams