2014-10-14 2 views
0

앱에 로그인하는 사용자의 데이터 집합이 있습니다. 마지막 두 번의 로그인 사이에 일 수를 찾고 싶습니다. 나는 그들의 마지막 로그인 (최신 날짜)두 번째 최신 날짜 - DAX

=CALCULATE(Max([Date]),ALL(Table1),Table1[Name]=EARLIER(Table1[Name])) 

를 얻기 위해 DAX 식을해야하지만 지금은 마지막 로그인에 자신의 2를 얻고, 두 가지를 빼 싶습니다. 내가 마지막 로그인에 2에 대한 몇 가지 게시물을 볼 수 있지만, 단지 두 개의 로그인이있는 경우 그것은 빈뿐만 아니라 이들 사이의 일 수를 싶습니다.

답변

5

dcheney,

이 하나 까다로운하지만 행할 수있다. 이해하기가 약간 어려울 수 있지만 이미 EARLIER 함수를 사용 했으므로의 마지막 날짜와 마지막 날과 마지막 날의 날짜 차이 사이에 을 계산하면 원하는 결과에 매우 근접합니다.

그래서 가정 소스 데이터는 다음과 같다 :

ID User Day 
    1 1 1-Jan 
    2 1 10-Jan 
    3 2 2-Feb 
    4 2 3-Feb 
    5 2 7-Feb 

나는 종류의 특정 사용자에 대한 각 방문 순위 것 새로운 계산 된 열을 만드는 시작합니다. 이 공식은 그것을 수행해야합니다

=CALCULATE (
    COUNTROWS ('datatable'), 
    'datatable'[User] = EARLIER ('datatable'[User]), 
    'datatable'[Day] < EARLIER ('datatable'[Day]), 
    ALL ('datatable') 
) 
    + 1 

이 순위가 당신에게 데이터 테이블 사용자 기준으로 순위를 추가

수행이와
ID User Day CountLoginNumber 
1 1 1/1/2014 12:00:00 AM 1 
2 1 1/10/2014 12:00:00 AM 2 
3 2 2/2/2014 12:00:00 AM 1 
4 2 2/3/2014 12:00:00 AM 2 
5 2 2/7/2014 12:00:00 AM 3 

가 다른 중첩 된 열 (I에 대한 또 하나 개의 마법 공식이있다 솔직히

= 
IF (
    AND (
     [CountLoginNumber] > 1, 
     [CountLoginNumber] 
      = CALCULATE (
       COUNTROWS ('datatable'), 
       'datatable'[User] = EARLIER ('datatable'[User]), 
       ALL ('datatable') 
      ) 
    ), 
    CALCULATE (
     LASTDATE ('datatable'[Day]), 
     'datatable'[User] = EARLIER ('datatable'[User]), 
     ALL ('datatable') 
    ) 
     - CALCULATE (
      LASTDATE ('datatable'[Day]), 
      'datatable'[User] = EARLIER ('datatable'[User]), 
      'datatable'[CountLoginNumber] 
       < EARLIER ('datatable'[CountLoginNumber]), 
      ALL ('datatable') 
     ), 
    BLANK() 
) 

, t : 모든 무거운 않는) 그것을 마지막 로그인의 날짜라는 이름의 한 그는 내가 Powerpivot에서 쓴 가장 긴 공식 중 하나입니다. 분리 된 계산 된 열을 사용하여 수행 할 수 있지만 큰 팬이 아닙니다. 이것은 공식은 기본적으로 무엇을 :

  1. IF가 1 개 이상 로그인이 및 로그인의 날짜가 각 사용자에 대해 마지막으로 알려진 로그인에 동일한 경우 (I 만의 날짜 차이를 계산할지 여부를 절 검사 마지막으로 알려진 날짜).
  2. 위에서 언급 한 조건이 참인 경우 2 개의 계산식이 있습니다. 첫 번째 계산식은 각 사용자의 로그인 최종 날짜를 계산합니다. 두 번째 것은 매우 동일한 사용자에 대해 이전 것을 계산합니다). 두 날짜를 빼면 원하는 결과가이됩니다.
  3. IF 조건이 TRUE가 아닌 경우 실행되는 BLANK() function도 있습니다. 그냥

:-) 경우 결과 표는 다음과 같다 : 그와

ID User Day CountLoginNumber Date of Last Login 
1 1 1/1/2014 12:00:00 AM 1 
2 1 1/10/2014 12:00:00 AM 2 9 
3 2 2/2/2014 12:00:00 AM 1 
4 2 2/3/2014 12:00:00 AM 2 
5 2 2/7/2014 12:00:00 AM 3 4 

, 당신은 모든 다음 (분석을 수행하는 간단한 (전원) 피벗 테이블을 만들 수 있습니다)해야 할 일.

필요한 경우 내 source file in Excel (2013)을 확인하십시오. 희망이 도움이!

+0

저는 DAX를 처음 사용했지만 몇 가지 생각 : 1. 사용자가 같은 날에 두 번 로그인하면 어떻게 될까요? 그들이 3 번 로그인 한 경우 0 일을 반환 하시겠습니까! 2. 시간 인텔리전스 기능 LASTNONBLANK가 위의 코드를 단순화 할 수 있다고 생각합니다. 내가 DAX에서 더 나을 때 더 생각해 볼 것입니다! – HarveyFrench