Получение текущего финансового года из иерархии с помощью MDX - PullRequest
1 голос
/ 15 апреля 2010

Я создаю отчет в Reporting Services 2005 на основе куба SSAS 2005. Основная идея отчета заключается в том, что они хотят видеть продажи в текущем финансовом году по сравнению с прошлогодними продажами. Звучит просто, но из-за того, что это мой первый «настоящий» отчет, основанный на SSAS, у меня чертовски много времени.

Во-первых, как рассчитать текущий финансовый год, квартал или месяц. У меня есть иерархия фискальных дат со всей этой информацией, но я не могу понять, как сказать: «На основе сегодняшней даты найдите текущий финансовый год, квартал и месяц».

Моя вторая, но немного меньшая проблема, это продажи прошлых лет по сравнению с продажами этого года. Я видел МНОГО примеров того, как это сделать, но все они предполагают, что вы выбираете дату вручную. Поскольку это отчет, и он будет работать в основном самостоятельно, мне нужен способ вставить «текущий» финансовый год, квартал и месяц в функции PERIODSTODATE или PARALLELPERIOD, чтобы получить то, что я хочу.

Итак, я прошу вашей помощи в этом.

Ответы [ 4 ]

0 голосов
/ 19 января 2015

МЫ находим простой способ рассчитать финансовый период на текущую дату в MDX, используя параметры. Представьте, что у нас есть BeginDate (01/04/2014) и EndDate (31/03/2015). Вот формулы. Щелкните параметр «beginDate» в «Данные отчета» - щелкните правой кнопкой мыши параметры - Укажите значения - добавьте значение выражения:

=DATEADD
("M"
,IIF(Month(Today())<4
 ,-Month(Today())-8
 ,-Month(Today())+4
 )
,DATEADD("D",0-DATEPART("D",Today())+1,Today()))

Сделайте то же самое для второго параметра «EndDate» и установите значения Defualt. Укажите значения и добавьте значение выражения:

=DATEADD("D",-1,DATEADD("M",12,DATEADD
("M"
,IIF(Month(Today())<4
 ,-Month(Today())-8
 ,-Month(Today())+4
 )
,DATEADD("D",0-DATEPART("D",Today())+1,Today()))))

Теперь ваш отчет ssrs будет иметь финансовый период в качестве периода по умолчанию. Моис Кабонго

0 голосов
/ 05 мая 2010

Вы должны быть в состоянии понять это, используя различные функции, которые могут сказать вам, «где вы находитесь в иерархии»

, например

http://www.sqldev.org/sql-server-analysis-services/find-parent-of-current-day-10080.shtml

0 голосов
/ 10 февраля 2014

Я знаю, что это "немного" слишком поздно, но для людей, заходящих на эту страницу вопросов, это может помочь:

IIF(Month(Now()) > MonthOffSetNumber, Year(Now()) + 1,Year(Now())) 

Это для получения текущего финансового года. Это будет применяться примерно так:

SET CurrentFiscalYear AS 
(
    StrToSet("[Dim Date Name].[Fiscal Year].&[" + Format(IIF(Month(Now()) > MonthOffSetNumber, Year(Now()) + 1,Year(Now()))) + "]")
)

Это поможет для последующего перекрестного соединения в запросе.

0 голосов
/ 15 апреля 2010

Для этого вам, вероятно, потребуется изменить MDRS SSRS вручную. Можно заставить SSAS использовать «Сегодня», обычно это делается примерно так:

WITH 
MEMBER [Today]
 AS {
StrToMember("[Date].[Date Key].&[" + Format(now(), "yyyyMMdd") + "]")
}


SELECT
    [Measures].[Some Measure]
ON COLUMNS
FROM    
    [Cube]
WHERE
    {[Today]}

Вам, конечно, нужно изменить это, чтобы оно соответствовало вашей собственной структуре куба.

Итак, учитывая, что у вас есть финансовый год и вы хотите добавить значения, измените вышеприведенное значение, чтобы оно соответствовало? Соберите строку, как я показал вам, которая соответствует значениям, которые вы хотите использовать. Похоже, ты в порядке после этого?

...