これらは、データ構造に深く入り込まずに説明するのは非常に困難です。できる限り多くの情報を提供しながら、できるだけ短くするようにします。
時間の経過に伴う金銭的価値 (キャッシュフロー) であるメジャーと、日付のディメンション、および評価のディメンションがあります。評価には日付があり、この日付は最初のキャッシュフローの日付に対応します。
後の要点は最初の値です (つまり、評価日に対応するキャッシュフロー値です。評価日がわかっている場合は、この日付を日付ディメンションに変換して、後の値を取得するのは簡単です。 :
WITH MEMBER [Measures].[Value at Valuation Date]
AS
(
[Measures].[Value],
[Date].[Date].&[2009-09-30T00:00:00]
)
ただし、評価日のセットがある場合 (たとえば、3 か月分の評価の評価日の値を取得しようとしている場合)、この方法は失敗します。以前の評価は後の評価の日付に対応する値になるためです。
たとえば、この計算されたメンバーは間違った値を返します。
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]}
)
この例では、3 つの評価 (7 月末、8 月、および 9 月) があり、それぞれに対応する評価日から (月末に) 先の月次キャッシュフロー値があります。各評価の最初のキャッシュフロー値を返すのではなく、たまたま評価日に対応するすべてのキャッシュフロー値の合計を取得します。
これが、この問題についての議論を始めるのに十分明確であることを願っています。有用な場合、これはキューブ ステージング データベースから適切なデータを取得する SQL クエリです。
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
ありがとう