SSAS -> KPI 생성 -> 특정 날짜의 고객 순위를 전날과 비교하는 kpi를 만드는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/8995515

문제

특정 날짜의 고객 순위를 전날과 비교하는 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] 

여기에서 특정 날짜(일)를 연결한 다음 해당 순위를 kpi 내에서 이전 날짜와 비교하려고 합니다.그래서 저는 이 쿼리를 분해하는 작업을 시작하고 있습니다.이 작업을 보다 쉽게 ​​수행할 수 있도록 사전 계산된 세트와 사전 계산된 멤버를 만들었습니다.이제 저는 이 세트와 멤버를 하루 단위로 생성하는 방법을 알아내려고 노력하고 있으며 적어도 하루와 다음 날의 비교를 생성할 수 있습니다.

2012년 1월 26일 업데이트:좋아, 나는 이것에 대해 조금 더 진행 중이지만 내 쿼리에 순위를 가져오는 데 여전히 문제가 있습니다. 아래 쿼리에는 순위에 대한 null이 있습니다.누군가가 이 쿼리의 문제를 볼 수 있기를 바랍니다.

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]}
도움이 되었습니까?

해결책

parallelperiod 함수를 사용하여 순위를 계산할 수 있습니다.전날.이것은 또한 즉시 할 필요가 있습니다.

다음 두 개의 KPI 값을 비교할 수 있습니다 ...

CASE
    WHEN [Customer Rank Yesterday] - [Customer Rank Today] > 0 THEN 1
    WHEN [Customer Rank Yesterday] - [Customer Rank Today] = 0 THEN 0
    ELSE -1
END
.

다른 팁

여기에 완성 된 쿼리가 있으며, 이것은 다른 사람을 돕습니다.:

WITH MEMBER  [Measures].[PrevDayRevenue] AS
( [Measures].[Revenue], ParallelPeriod ([Date Link].[PK Date].[PK Date],1))

SET [RevRankPrevOrder] AS
ORDER (
   [Customer].[Customer Id].CHILDREN ,
   [Measures].[PrevDayRevenue],
   BDESC)

MEMBER [Measures].[RANKRevenuePrevOrder] AS 
    RANK(
    [Customer].[Customer Id].CurrentMember,
    [RevRankPrevOrder])

SET [RevRankCurrOrder] AS
ORDER (
   [Customer].[Customer Id].CHILDREN,
   [Measures].[Revenue],
   BDESC)

MEMBER [Measures].[RANKRevenueCurrOrder] AS RANK([Customer].[Customer Id].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-10T00:00:00]}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top