마지막 구매 후 1 년 이내에 신규 구매를 한 고객의 비율을 일정 기간 동안 제공 할 수단이 필요합니다.
정상적으로는 매년 각 고객의 마지막 구매 날짜를 캡처 한 계산 열을 만든 다음 주어진 연도의 각 고객이 마지막 날짜로부터 1 년 이내에 구매 한 적이 있는지 확인한 다음 요약하면 큐브에 실시간 연결을 사용하고 있으며 계산 열을 만들 수 없습니다.
내가 찾고있는 의사 코드는 다음과 같습니다.
One Year Return =
VAR Cohort =
SUMMARIZECOLUMNS (
Customer[ID],
FILTER (
VALUES ( Sales[Sales Date] ),
YEAR ( Sales[Sales Date] )
< ( YEAR ( TODAY () ) - 1 )
)
)
VAR Returners =
SUMMARIZECOLUMNS (
Customer[ID],
FILTER (
VALUES ( Sales[Sales Date] ),
Sales[Sales Date] > Sales[Old Sales Date] //<--Need help here
),
FILTER (
VALUES ( Customer[ID] ),
Customer[ID] IN Cohort
)
)
VAR Rate =
CALCULATE ( DISTINCTCOUNT ( Customer[ID] ), Customer[ID] IN Returners ) /
CALCULATE ( DISTINCTCOUNT ( Customer[ID] ), Customer[ID] IN Cohort )
RETURN
Rate
주된 어려움은 고객마다 다른 시간대가 필요하지만 계산 열을 만들 수 없다는 것입니다. EARLIER 또는 DATESBETWEEN 또는 PARALLELPERIOD를 사용하려고했지만 지금까지 작동하지 못했습니다.
-
답변 # 1
-
답변 # 2
중요한 부분은 계산 된 열없이 각 고객에 대해 비교해야한다는 사실입니다. COUNTX 또는 SUMX와 같은 반복자를 사용하여 가능합니다. 이를 통해 코호트 서브 테이블에서 고객을 순환하고 현재 반복에서 고객 ID를 사용하여 판매 테이블을 선택하여 EARLIER를 사용하여 판매 테이블을 필터링 할 수 있습니다. 코호트에있는 각 고객에 대해 마지막 구매 날짜와 그 이전 날짜를 선택하고 두 날짜를 비교하여 1 년 내에했는지 확인하십시오.
DAX에서는 약간 복잡해 보이지만 더 쉽게 만들 수 있도록 공간을 넓히려 고했습니다. 또한 현재 반복에서 고객 ID에 액세스 할 수 없으므로 _cohort 변수를 단순히 반복 할 수 없다는 사실에 대한 약간의 해결 방법이 포함되어 있습니다
One year return = var _now = TODAY() var _cohort = SUMMARIZECOLUMNS ( Sales[CustomerID] ; FILTER ( Sales ; DATEDIFF( Sales[SalesDate] ; _now ; YEAR ) <= 1 ) ) var _countCohort = COUNTROWS( _cohort ) var _countReturns = SUMX ( SUMMARIZECOLUMNS ( Sales[CustomerID] ; FILTER ( Sales ; Sales[CustomerID] IN _cohort ) ) ; var _lastPurchase = CALCULATE ( MAX ( Sales[SalesDate] ) ; ALLSELECTED ( Sales ) ; Sales[CustomerID] = EARLIER( Sales[CustomerID] ) ) var _preLastPurchase = CALCULATE ( MAX ( Sales[SalesDate] ) ; ALLSELECTED ( Sales ) ; Sales[SalesDate] < _lastPurchase ; Sales[CustomerID] = EARLIER( Sales[CustomerID] ) ) RETURN IF ( DATEDIFF( _preLastPurchase ; _lastPurchase ; YEAR ) <= 1 ; 1 ; 0 ) ) RETURN _countReturns / _countCohort
-
답변 # 3
큐브에서 데이터 세트를 가져오고 계산 열을 만들어 결국에는 거기에 도달했습니다. @ jelle-hoekstra의 답변은 내가 한 일과 거의 비슷해 보이지만 측정을 실행하는 방법을 알 수 없었습니다.
3 개의 계산 된 열을 만들었고 ReturnCustomerID 열을 구분하여 마지막 구매 후 1 년 이내에 돌아온 고객 수를 계산했습니다.
Last Purchase Date = MINX ( FILTER ( Sales, Sales[Sales Year]+1 = EARLIER ( Sales[Sales Year] ) && Sales[CustomerID] = EARLIER ( Sales[CustomerID] ) ), MAXX ( FILTER ( Sales, Sales[Sales Year] = EARLIER ( Sales[Sales Year] ) && Sales[CustomerID] = EARLIER ( Sales[CustomerID] ) ), Sales[Sales Date] ) ) One Year Date = MINX ( FILTER ( Sales, Sales[Sales Year]+1 = EARLIER ( Sales[Sales Year] ) && Sales[CustomerID] = EARLIER ( Sales[CustomerID] ) ), MAXX ( FILTER ( Sales, Sales[Sales Year] = EARLIER ( Sales[Sales Year] ) && Sales[CustomerID] = EARLIER ( Sales[CustomerID] ) ), EDATE (Sales[Sales Date], 12 ) ) ) ReturnCustomerID = IF ( Sales[Sales Date] > Sales[Last Purchase Date] && Sales[Sales Date] < Sales[One Year Date], Sales[CustomerID], BLANK() )
관련 자료
- powerbi - 필터로 변경되는 백분율을 계산하는 Power BI 측정
- sql - MySQL에서 중첩 테이블 아키텍처의 백분율을 계산하는 방법
- mongodb - 몽구스 필드 비율을 계산하는 방법
- python - 데이터 프레임 행 내에서 백분율 공유 계산
- sql - Windows 함수 + 파티션을 사용하여 2 열로 백분율 계산
- python - 텍스트 문서의 유사성 측정 방법은 무엇입니까?
- powerbi - 기존 열의 값 사이의 차이를 행 단위로 계산하기위한 측정
- javascript - d3js 호버에서 막대의 백분율을 계산하는 방법
- powerbi - 고유 일련 번호를 기반으로 퍼스트 패스 수율을 계산하기 위해 Power Bi 측정 값을 만드는 방법
- powerbi - 한 달에서 이전 달로 백분율 증가 또는 감소를 계산하는 power bi의 스크립트를 원합니다
- javascript - js - 백분율을 사용하여 [-10, 10]과 같은 범위 숫자를 계산하고 백분율 값에 따라 숫자를 얻습니다
- python - Pyspark에서 None 또는 NaN 값의 백분율을 어떻게 계산합니까?
- python - 특정 열 값을 기준으로 백분율 계산
- mysql - SQL 계산 가용성 백분율
- python 3.x - 여러 열을 그룹화하고 Pandas에서 합계 비율 계산
- django - 백분율을 계산하기위한 집계 쿼리 집합은 항상 0을 반환합니다
- dplyr - R에서 발생률 계산
- 간단한 JavaScript 코드로 백분율을 계산하는 방법
- linux - 파일 차이 백분율을 측정하는 도구가 있습니까?
먼저 이걸 찾고 있다고 생각합니다
두 번째. 이를 수행하는 가장 좋은 방법은 약간의 데이터 모델링이 필요합니다. 시간 정보를 작동시키는 유일한 방법은 날짜 테이블을 갖는 것입니다. 이 테이블에는 누락 된 요일이없는 행이 있어야합니다. 온라인으로 검색하거나 블로그를 확인하는 방법을 여기에서 확인할 수 있습니다. 이 테이블이 팩트 테이블과 함께 모델에 관련되면 선택한 날짜에 해당 측정 값을 작성할 수 있습니다. 선택한 값은 다른 값이며 작년에는 선택한 값이됩니다.