Я работал над созданием kpi, который сравнивал бы рейтинг клиента на определенную дату по сравнению с предыдущим днем. В свою очередь, вы сможете увидеть, повысился ли этот клиент по рангу или снизился по рангу с точки зрения того, чем был сгенерирован список. В моей ситуации они упорядочены по выручке.
Я могу достаточно легко ранжировать своих клиентов с помощью функции ранжирования и предоставлять отчет, но когда дело доходит до создания kpi сравнения этих рангов по дням, я изо всех сил пытаюсь выяснить, как к этому следует подходить. Сам ранг не является чем-то, что хранится, поскольку данные - это то, что мне нужно будет создать на лету с помощью функции ранга.
Вот пример моего запроса MDX, который я использую для создания своего начального начального отчета, который предоставляет мне рейтинг клиентов без слияния дат:
WITH SET [RevRank] AS
ORDER (
[Customer].[Customer Id].CHILDREN ,
[Measures].[Revenue], BDESC)
MEMBER [Measures].[RANKRevenue] AS RANK([Customer].[Customer Id].CurrentMember, [RevRank] )
SELECT NON EMPTY { [Measures].[Revenue], [Measures].[Fact Order Count], [Measures].[RANKRevenue] } ON COLUMNS,
NON EMPTY TopCount( { ([RevRank] ) } , 100, [Measures].[Revenue]) ON ROWS
FROM [DW]
Исходя из этого, я пытаюсь склеить определенную дату (день), а затем сравнить этот ранг с предыдущим днем в кПи. Итак, с самого начала я работаю над тем, чтобы разбить этот запрос. Я создал предварительно рассчитанный набор и предварительно рассчитанный член, чтобы помочь мне сделать это проще. Сейчас я просто пытаюсь выяснить, как создать этот набор и член по дням, и тогда я могу хотя бы произвести сравнение между одним днем и следующим.
01/26/2012 Обновление: Хорошо, я немного продвинулся в этом вопросе, но у меня все еще есть проблемы с получением ранга для моего запроса, запрос ниже имеет нулевые значения для ранжирования. Надеюсь, кто-то может увидеть проблему с этим запросом.
WITH MEMBER [Measures].[PrevDayRevenue] AS
( [Measures].[Revenue], ParallelPeriod ([Date Link].[PK Date].[PK Date],1))
SET [RevRankPrevOrder] AS
ORDER (
[Customer].[Customer Id].Members ,
[Measures].[PrevDayRevenue],
BDESC)
MEMBER [Measures].[RANKRevenuePrevOrder] AS RANK([Customer].CurrentMember, [RevRankPrevOrder])
SET [RevRankCurrOrder] AS
ORDER (
[Customer].[Customer Id].Members ,
[Measures].[Revenue],
BDESC)
MEMBER [Measures].[RANKRevenueCurrOrder] AS RANK([Customer].CurrentMember, [RevRankCurrOrder])
SELECT NON EMPTY { [Measures].[Revenue], [Measures].[PrevDayRevenue], [Measures].[RANKRevenuePrevOrder], [Measures].[RANKRevenueCurrOrder] } ON COLUMNS,
NON EMPTY { ( [RevRankCurrOrder] ) } ON ROWS
FROM [DW]
WHERE {[Date Link].[PK Date].&[2012-01-08T00:00:00]}