У меня есть таблица фактов с двумя датами Invoice Date
и Accounting Current Date
. Чтобы получить запрашиваемое значение выручки, мне нужно использовать комбинацию этих двух дат. Например, если мне нужен доход с начала года, мне нужно выбрать его следующим образом:
(Примечание: я пишу SQL-запрос, потому что я более знаком с ним)
SELECT Revenue
FROM
Fact_Revenue
WHERE
Invoice_Date <= '2011-10-22'
and AccountingCurrent >= '2011-01'
and AccountingCurrent <= '2011-10'
Помимо выручки, в этих таблицах фактов есть и другая информация, которая мне также нужна, но для расчета других данных мне не нужна Accounting Current Date
. Поэтому моя идея состоит в том, чтобы использовать только 1 дату (Invoice Date
) в основном запросе MDX (чтобы я мог собрать как можно больше данных за 1 запрос), а для расчета дохода я хотел бы использовать Рассчитанный член, и там я бы нравится связывать Accounting Current Date
с выбранным Invoice Date
.
Например
SELECT {[Measure].[RevenueYTD],
[Measure].[RevenueMTD],
[Measure].[NumberOfInvoices],
[Measure].[NumberOfPolicies]}
ON COLUMNS,
{[People].Members} ON ROWS
FROM [Cube]
WHERE
[Invoice Date].[Date Hierarchy].[Date].&[2011-10-22]
В этом случае [Measure].[RevenueYTD]
и [Measure].[RevenueMTD]
должны быть ограничены Accounting Current Date
, а Invoice Date
должно быть меньше, чем дата из запроса. С другой стороны, мне нужно [Measure].[NumberOfInvoices]
и [Measure].[NumberOfPolicies]
для конкретной даты выставления счета (или даты MTD, как угодно), но без участия Accounting Current Date
Вычисляемый запрос члена должен делать что-то вроде этого (это больше похоже на алгоритм):
ROUND(
SUM(
YTD([Accounting Current Date].[Date Hierarchy].CurrentMember),
[Measures].[Revenue]
),
2)
WHERE [Invoice Current Date].[Date Hierarchy] < [Invoice Current Date].[Date Hierarchy].CurrentMember