파이썬에서 자기란 무엇인가: 실제 사례
파이썬에서 자기란 무엇인가: 실제 사례
이 블로그 게시물에서는 LuckyTemplates 포럼에서 제기된 질문을 살펴보고 DAX 언어 LuckyTemplates 기술을 사용하여 해결해 보겠습니다. 따라하고 파일을 다운로드하려면 LuckyTemplates 포럼을 방문하고 로 이동하십시오 . 이 블로그 하단에서 이 튜토리얼의 전체 비디오를 볼 수 있습니다.
우리가 다룰 시나리오를 설명하기 위해 간단한 표를 예로 들었습니다. 첫 번째 열에는 재무 수준 1 이 있습니다 . 두 번째 열에는 완료라는 날짜가 있습니다. 마지막 열에는 재무 수준과 완료 날짜의 조합이 있으며 이름은 Revenue 로 지정합니다 .
그런 다음 Date 및 Customer Name 에 대한 슬라이서가 있습니다 .
특정 기간 동안 수행하려는 작업은 0이 아닌 상위 세 날짜를 식별하는 것입니다. 그런 다음 상위 3개 날짜에서 재무 수준을 확인하려고 합니다.
측정의 첫 번째 버전에서 수익이 있는 2021년 4월 29일보다 적은 날짜를 나열했습니다.
그리고 이 날짜에 일부 수익을 창출한 재무 수준을 식별하고자 합니다. 그 계산을 달성할 수 있는 방법을 설명하겠습니다.
목차
데이터 모델링
실제 DAX를 작성하기 전에 여러 테이블이 포함된 데이터 모델을 간단히 살펴보겠습니다. 우리는 Date 테이블 , Data 테이블 , Job category 테이블 및 Customer 테이블 에만 관심이 있습니다 .
Customer 테이블은 슬라이서 내부에서만 사용되기 때문에 별로 중요하지 않습니다.
데이터 테이블에서 수익 측정값이 계산되고 있습니다. 작업 범주에는 매트릭스에 있는 재정 수준이 포함됩니다. 그런 다음 슬라이서에서 날짜 테이블의 날짜 열을 사용합니다.
버전 1
매트릭스에서 모든 것을 제거하고 처음부터 시작합시다. 새 측정값을 생성하고 이것이 버전 1이 될 것이기 때문에 V1이라고 부를 것입니다. 다른 두 가지 변형도 살펴보겠습니다.
필터 컨텍스트 준비
가장 먼저 할 일은 필터 컨텍스트에서 재무 수준의 모든 값을 검색하는 것입니다. 생성 하고 이름을 FinancialLevelInFilterContext 로 지정합니다 .
필터 컨텍스트에서 값을 검색하기 위해 재무 수준 열이 포함된 작업 범주 테이블에서 사용합니다 . 그런 다음 다른 변수를 만들고 이름을 Result 로 지정해야 합니다 . 작성 하고 닫습니다.
첫 번째 인수에는 날짜 슬라이서에 대한 선택 항목이 있습니다. 해당 날짜에서 0이 없고 최소한의 수익이 있는 날짜를 식별하려고 합니다.
해당 슬라이서에서 선택된 모든 날짜에 액세스하려면 Date 테이블에 대해
그리고 매트릭스에 재무 수준이 있으므로 필터 컨텍스트에서 특정 값을 제거하고 있는지도 확인해야 합니다. 사용한 다음 재무 수준 1을 작성할 수 있습니다.
이제 필터 컨텍스트가 준비되었으므로 CALCULATE에 대한 가장 안쪽 계산을 작성할 수 있습니다. 먼저 변수를 선언합니다. 이 변수는 첫 번째 테이블에서 본 것처럼 재무 수준과 날짜 열의 조합입니다.
사용 하고 데이터 테이블을 사용하여 작업 범주 및 날짜 테이블의 두 테이블을 요약합니다.
이렇게 하면 데이터 테이블 내에 있는 재정 수준과 날짜 열의 조합이 제공됩니다. 그런 다음 생성한 첫 번째 변수에 대한 수익 행의 값을 저장할 또 다른 변수를 생성할 것입니다.
이 변수의 이름은 FinancialLevelAndDatesWithRevenue 입니다 . 이 변수의 코드는 이전 변수에 대한 가 됩니다 . 그런 다음 컨텍스트 전환을 시작하기 위해 수익이 될 가상 열을 생성합니다. 따라서 이 변수의 각 행에 대해 수익을 할당했습니다.
이 테이블에는 역시 0인 수익이 포함되어 있습니다. 0이 있는 행을 필터링해야 합니다. 이를 위해 다른 변수를 만들고 이름을 RemoveZeroes 로 지정할 수 있습니다 .
사용한 다음 수익이 0이 되지 않도록 합니다. 0보다 크거나 0보다 작을 수 있지만 엄격하게 0과 같지 않아야 합니다.
그런 다음 RemoveZeroes 변수 에서 날짜를 검색합니다 . 이를 위해 다른 변수를 만들고 이름을 KeepOnlyDates 로 지정할 수 있습니다 .
사용하여 에 의해 반환되는 중복 날짜를 제거할 수 있습니다 .
다음으로 상위 3개 날짜를 내림차순으로 식별합니다. 다른 변수를 사용하고 이름을 Last3Dates 로 지정한 다음 사용합니다 .
그런 다음 날짜 열의 마지막 세 날짜에 대해 사용한 다음 구분 기호를 사용합니다.
새로 만든 측정값을 해당 행렬 안에 끌어다 놓습니다. 결과는 2021/03/31, 2021/07/04, 2021/02/04입니다. 이것은 우리의 조치가 효과가 있다는 것을 의미합니다.
편집기로 돌아가서 RETURN CONCATENATEX 부분을 제거해 보겠습니다. 마지막 세 날짜를 검색하기 위해 우리가 할 수 있는 일은 RemoveZeroes 변수의 어떤 행이 실제로 마지막 세 날짜의 일부인지 확인하는 것입니다.
이를 위해 다른 변수 DatesInLast3Dates 를 만들고 RemoveZeroes 에서 FILTER 함수를 사용합니다 . 그러면 작업 범주와 날짜로 구성된 테이블이 반환됩니다.
해당 테이블 내에 생성한 수익 열을 요약합니다. DatesInLast3Dates에 대해 SUMX를 반환한 다음 수익 열을 요약해 보겠습니다.
이 계산에서는 필터 컨텍스트에서 작업 범주를 제거했기 때문에 각 행에 대해 하나의 단일 값만 얻습니다.
DatesInLast3Dates 변수의 각 행이 필터 컨텍스트에서 사용 가능한지 확인하기 위해 처음에 만든 변수를 사용합니다 . 다른 변수를 작성하고 이름을 IsInFilterContext 로 지정할 수 있습니다 .
이렇게 하면 DatesInLast3Dates 변수 의 날짜가 필터링됩니다 . 그런 다음 IsInFilter 컨텍스트를 통해 SUMX를 반환하고 수익 열을 요약합니다.
Enter 키를 누르면 처음에 가졌던 것과 동일한 결과를 얻는 것을 볼 수 있습니다.
DAX 언어 LuckyTemplates 계산 결과 확인
실제로 올바른 결과를 얻고 있는지 확인하기 위해 지금까지 작성한 코드가 실제로 올바른 결과를 반환하는지 디버깅, 식별 및 확인하는 데 도움이 되는 새 CALCULATE 테이블을 만들 수 있습니다.
지금까지 작성한 코드의 복사본을 만들어 봅시다. 아래 강조 표시된 부분을 복사하고 돌아가서 새 테이블을 만든 다음 강조 표시된 코드를 붙여넣습니다. 관심이 없기 때문에 이 테이블의 이름을 지정하지 않을 것입니다.
그리고 간단히 RETURN DatesInLast3Dates 를 작성할 수 있습니다 . Confirm 을 클릭하면 테이블이 표시되지만 실제로 슬라이서의 동작을 모방해야 하기 때문에 테이블이 실제로 올바른 결과를 반환하지 않는다는 것을 알고 있습니다.
CALCULATETABLE 내부에 해당 코드를 래핑하고 모든 항목을 들여쓰기할 수 있습니다. 마지막 부분에서 날짜는 2021-03-15 이상이어야 하고 고객 이름은 DHL Supply Chain 과 같아야 한다고 적겠습니다 .
해당 측정값 내에서 생성한 테이블은 사실상 올바른 결과를 반환합니다. CALCULATETABLE을 사용하여 계산 내에서 만들고 있는 가상 테이블을 확인할 수 있습니다.
기타 DAX 언어 LuckyTemplates 계산
이제 우리는 계산이 제대로 작동하고 있고 뒤에서 실제로 무슨 일이 일어나고 있는지 이해하고 있으므로 동일한 문제를 계산하는 다른 방법을 살펴볼 수 있습니다. 우선, 이미 생성한 측정값의 복제본을 생성해 보겠습니다.
버전 2
이번에는 VALUES 및 FILTER 함수에 의존하지 않으므로 제거하겠습니다. 반환 결과와 CALCULATE 내부에서 생성한 마지막 변수를 제거합니다. 그런 다음 CALCULATE를 CALCULATETABLE로 변환합니다.
그리고 스칼라 값을 반환하는 대신 이번에는 DatesInLast3Dates 를 반환할 것입니다 . 그러면 이전에 만든 것과 동일한 CALCULATETABLE이 반환됩니다. CALCULATE 함수를 사용하고 첫 번째 인수에서 수익 측정값을 계산하고 필터 컨텍스트로 CALCULATETABLE을 삽입할 것입니다.
매트릭스로 가져오면 각 셀에 대해 동일한 총계 값을 반환하는 것을 볼 수 있습니다.
KEEPFILTERS 기능 사용
현재 우리는 배후의 계산이 올바르게 작동하고 있음을 알고 있지만 각 셀에 대해 해당 재무 수준의 값만 보고하고 있다는 것을 어떻게 확신할 수 있습니까?
CALCULATETABLE의 도움으로 재무 수준, 날짜 열 및 수익 열이 포함된 테이블을 만들었습니다. 키 필터 기능을 사용하여 CALCULATETABLE 외부에 있는 필터 컨텍스트와 CALCULATETABLE에 의해 생성되는 필터 컨텍스트 간의 교차점을 만들 수 있습니다.
확인을 클릭하면 각 셀에 대해 올바른 값을 보고하고 있으며 버전 1과 버전 2 모두 올바른 값을 반환하고 있음을 확인할 수 있습니다.
어떻게 작동합니까? CALCULATE 테이블은 유지 보수 수준을 반환한 다음 Rental , Service External 및 Spare parts 를 반환합니다 . KEEPFILTERS 유지 관리와 해당 테이블 사이에 교차점을 생성합니다.
Rental은 초기 필터 컨텍스트를 생성하고 CALCULATETABLE은 작업 범주의 모든 값을 반환합니다. 그러면 Rental과 CALCULATETABLE에서 반환된 테이블이 교차하게 됩니다. 해당 임대 부품에 대한 테이블 또는 행만 반환할 것입니다.
마지막으로 필터 컨텍스트에 SUMMARIZE를 삽입하면 CALCULATE 함수가 임대에 대한 수익만 계산합니다. 각 행에 대해 동일한 프로세스가 발생합니다.
버전 3
DAX 언어 LuckyTemplates를 사용하여 동일한 계산을 계산하는 다른 방법을 살펴보겠습니다. 버전 2 측정값의 복사본을 만들고 다른 측정값을 만들어 보겠습니다. 이 이름을 버전 3으로 지정하겠습니다.
이 계산의 기본 개념은 CALCULATE 함수를 사용하여 수익을 계산하기 때문에 CALCULATE 내부와 외부에서 동일한 항목을 복제하기 때문에 ADDCOLUMNS 부분을 사용할 필요가 없다는 것입니다. 대신 단순히 수익이 0이 아니어야 한다고 작성할 수 있습니다.
Confirm(확인)을 클릭하면 코드가 작동하는지 확인해야 하므로 측정값을 매트릭스 내부로 드래그해 보겠습니다.
코드가 실제로 각 셀에 대해 동일한 값을 반환하는 것을 볼 수 있습니다.
날짜 슬라이서에서 날짜를 변경하고 고객 이름에서 몇 가지 값을 선택하여 필터 컨텍스트를 변경하려고 하면 세 측정값 모두 실제로 각 행에 대해 동일한 값을 반환하는 것을 볼 수 있습니다.
결론
이 자습서에서는 종료 날짜에서 시간을 거슬러 올라가 상위 3개 날짜를 식별하는 복잡한 논리를 사용하는 방법을 배웠습니다. 이 DAX 언어 LuckyTemplates 기술을 기반으로 수익을 계산하고 필터 컨텍스트에 존재하는 값만 표시할 수 있었습니다. 지금은 이 튜토리얼의 내용이 전부입니다.
파이썬에서 자기란 무엇인가: 실제 사례
R의 .rds 파일에서 개체를 저장하고 로드하는 방법을 배웁니다. 이 블로그에서는 R에서 LuckyTemplates로 개체를 가져오는 방법도 다룹니다.
이 DAX 코딩 언어 자습서에서는 GENERATE 함수를 사용하는 방법과 측정값 제목을 동적으로 변경하는 방법을 알아봅니다.
이 자습서에서는 다중 스레드 동적 시각적 개체 기술을 사용하여 보고서의 동적 데이터 시각화에서 통찰력을 만드는 방법을 다룹니다.
이 기사에서는 필터 컨텍스트를 살펴보겠습니다. 필터 컨텍스트는 모든 LuckyTemplates 사용자가 처음에 배워야 하는 주요 주제 중 하나입니다.
LuckyTemplates Apps 온라인 서비스가 다양한 소스에서 생성된 다양한 보고서 및 인사이트를 관리하는 데 어떻게 도움이 되는지 보여주고 싶습니다.
LuckyTemplates에서 측정 분기 및 DAX 수식 결합과 같은 기술을 사용하여 수익 마진 변경을 해결하는 방법을 알아봅니다.
이 자습서에서는 데이터 캐시의 구체화 아이디어와 결과 제공 시 DAX 성능에 미치는 영향에 대해 설명합니다.
지금까지 Excel을 계속 사용하고 있다면 지금이 비즈니스 보고 요구 사항에 LuckyTemplates를 사용하기 시작하는 가장 좋은 시기입니다.
LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것