2012-12-04 1 views
2

나는 각 고객에게 하루에 총 사용자 수를 알려주는 쿼리를 작성하려고합니다.매일 몬드리안 MDX에서 사용자 수 얻기

각 고객/요일 조합에 대해 고객/일별로 분할하지 않고 총 사용자 측정 항목 수를 제공하는 것은 지금까지 내가 가지고있는 것입니다. 계산 된 부재

WITH MEMBER [Measures].[MyUserCount] 
    AS COUNT(Descendants([User].CurrentMember, [User].[User Name]), INCLUDEEMPTY) 
SELECT 
    NON EMPTY CrossJoin([Date].[Date].Members, [Customer].[Customer Name].Members) ON ROWS, 
    {[Measures].[MyUserCount]} on COLUMNS 
FROM 
    [Users] 
+0

큐브 스키마에 대한 세부 정보를 제공해주십시오. Customer 차원으로 사용자 차원에 어떤 방식 으로든 참여하지 않기 때문에 쿼리가 총 사용자에게 제공됩니다. 이 두 개념을 관련시키는 사실을 사용하면됩니다. 사용자 큐브에서 사용할 수있는 사실 (측정 값)은 무엇입니까? '사용자 수'와 같은 것이 있으면 티켓이됩니다. Users 큐브의 세밀도는 무엇입니까? –

+0

큐브는 [고객]. [고객 이름], [날짜]. [날짜], [사용자]. [사용자 이름] 및 사용자에 대한 다양한 조치와 같습니다. 문제는 주로 학문적이다. 비슷한 일을 할 몇 가지 쿼리가 있습니다.이 예제는 배워야하는 예제입니다. 추가 측정을하지 않고 하루 고객 당 사용자 수에 대한 계산 된 측정 값을 만들 수 있어야합니다. – Dynamite

답변

0

문제는 [User].CurrentMember마다 행 튜플 All 부재로 설정하고, 따라서 전체 카운트는 점이다. 필요한 것은 [Customer].CurrentMember[Date].CurrentMember[User] 크기를 효과적으로 필터링하는 방법입니다.

당신은 의미가 관심있는 차원 구성원의 조인 비어 있지 않은 값을가집니다 의미가 측정, 예를 사용해야합니다.

이를 확인하려면, 당신은으로 시작할 수

SELECT 
    NON EMPTY CrossJoin(
    [User].[User Name].Members, 
    [Measures].[Some measuse] 
) ON COLUMNS, 
    NON EMPTY CrossJoin(
    [Date].[Date].Members, 
    [Customer].[Customer Name].Members 
) ON ROWS 
FROM [Project] 

당신은 적절하게 Some measure을 선택했을 것입니다. 해당 쿼리의 결과는 많은 빈 셀이되지만 지정된 행에서 값이있는 열은 주어진 Customer x Date 튜플과 관련된 사용자 (행에 해당)에 해당합니다. 모든 행에 대해 해당 열을 계산하려고합니다. COUNT 및 필터는 다음 계산 된 멤버 쿼리 내가 여기 공정한 비트를 가정하고 있지만, 일부 실험으로 당신이 그것을 해결할 수있을 것

WITH MEMBER [Measures].[User count] AS 
    COUNT(
    FILTER(
     [User].[User Name].Members, 
     NOT ISEMPTY([Measures].[Some measure]) 
    ) 
) 
SELECT 
    NON EMPTY {[Measures].[User count]} ON COLUMNS, 
    NON EMPTY CrossJoin(
    [Date].[Date].Members, 
    [Customer].[Customer Name].Members 
) ON ROWS 
FROM [Users] 

것, 필요합니다.

관련 문제