Il est vraiment difficile de décrire ce problème sans approfondir la structure des données. Je vais essayer de le garder le plus court possible en donnant autant d'informations que possible.Obtention d'une mesure basée sur la date dans MDX
J'ai une mesure qui est une valeur monétaire au fil du temps (flux de trésorerie), avec les dimensions pour la date, et un pour la valorisation. Une évaluation a une date et cette date correspondrait à la première date de trésorerie. L'essentiel de ce qui suit est la première valeur (ou, en d'autres termes, la valeur du cash flow correspondant à la date d'évaluation.) Si je connais la date d'évaluation, il est assez facile de transformer cette date en dimension Date. la valeur im après:
WITH MEMBER [Measures].[Value at Valuation Date]
AS
(
[Measures].[Value],
[Date].[Date].&[2009-09-30T00:00:00]
)
Cependant, si j'ai une série de dates d'évaluation (par exemple, im essayant d'obtenir la valeur à la date d'évaluation pour le moût de trois mois d'évaluations), cette méthode se décompose, comme évaluation antérieure serait avoir une valeur correspondant à la date d'une évaluation ultérieure
Par exemple, ce membre calculé retournera le valeurs ong:
WITH MEMBER [Measures].[Value at Valuation Date]
AS
(
[Measures].[Value],
{[Valuation.[Valuation Date].&[2009-07-31T00:00:00]:[Valuation].[Valuation Date].&[2009-09-30T00:00:00]}
)
Dans cet exemple, il y a 3 évaluations (fin juillet, août &), chacun septembre avec des valeurs de mouvements de trésorerie mensuels à l'avenir (le mois se termine) à partir de la date d'évaluation correspondante. Plutôt que de me renvoyer la première valeur de flux de trésorerie pour chaque évaluation, vous obtenez une somme de toutes les valeurs de flux de trésorerie qui correspondent à une date d'évaluation. J'espère que c'est assez clair pour commencer à discuter de ce problème. Dans le cas où son utilité, il est une requête SQL qui obtiendrait les bonnes données de ma base de données de mise en scène du cube:
SELECT
v.valuationDate,
SUM(cf.value) as [value at valuation date]
FROM dbo.Valuation v
INNER JOIN dbo.Cashflow cf
ON v.id = cf.valuationId
and v.valuationDate = cf.cashflowDate
GROUP BY v.valuationDate
Merci
J'ai mis à jour ma réponse pour inclure une amélioration à votre solution. –