영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

에 대한 제 솔루션을 살펴보겠습니다 . 이 챌린지를 위해 LuckyTemplates의 금주의 문제 챌린지를 다시 방문하여 특정 날짜와 상대적인 날짜를 혼합하여 영구 휴일 달력을 만들었습니다. 그러나 이번에는 파워 쿼리 만 사용합니다 . 이 블로그 하단에서 이 튜토리얼의 전체 비디오를 볼 수 있습니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

문제 분석 자체에 갇혀 있는 경우 다시 방문 하여 이 문제를 해결하는 데 도움이 될 수 있는 요소가 접근 방식에 있는지 확인할 수 있습니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

제출물을 읽는 동안 사용자 인터페이스를 활용 하고 사용자 지정 기능을 작성하여 영구 달력을 만드는 사람들을 보았습니다 . 각 항목을 분석하는 것이 즐거웠고 영감을 얻고 싶다면 똑같이 하시길 권장합니다.

이 시나리오를 통해 직접 작업할 때 여러 솔루션을 만들게 되었습니다. 내가 함께 갔던 최고의 사례는 문제를 더 작은 조각으로 분해 할 수 있을 뿐만 아니라 가시화할 수 있는 방법을 보여줍니다 . 이는 오류나 예기치 않은 결과가 발생할 경우 매우 유용합니다.

목차

퍼페추얼 캘린더 제작의 출발점

원시 공휴일 테이블은 우리의 출발점입니다. 날짜를 맞추려면 특정 날짜에 대한 연도, 월, 일이 필요합니다. 빠진 것은 연도뿐입니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

그러나 상대 날짜의 경우 조금 더 많은 작업을 수행해야 합니다. 먼저 해당 요일 열을 숫자와 요일로 분할해야 합니다. 해당 단계를 검토해 보겠습니다.

날짜 테이블에서 연도 검색

이 솔루션을 동적으로 만들기 위해 날짜 테이블 에서 연도를 검색하겠습니다 . 수식 입력줄에서 프로젝션을 사용하여 날짜 테이블에서 단일 열 테이블을 가져온 것을 볼 수 있습니다. 물론 이것은 중복을 포함합니다. 이를 제거하기 위해 Table.Distinct 를 추가했습니다 .

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

이 테이블 옆의 공백 옆을 클릭하면 내 날짜 테이블 쿼리에 고유한 연도가 포함된 목록도 표시됩니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

우리는 월 이름을 받았지만 실제로는 월 번호가 필요합니다 . 이제 연도를 월 이름에 연결할 때 Date.From 함수를 사용하여 해당 월의 1일을 날짜 값으로 반환할 수 있습니다.

Date.Month 를 추가하면 해당 특정 날짜의 월 번호만 남게 됩니다. 1월의 경우 1을 반환하고 2월의 경우 2를 반환하는 식입니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

일 열에서 숫자 얻기

일 열에서 숫자를 가져오기 위해 열을 분할하지 않고 대신 값을 추출하기로 결정했습니다. 수식 입력줄에서 볼 수 있듯이 Text.BeforeDelimiter를 사용 하고 해당 텍스트 문자열의 오른쪽과 왼쪽 부분을 식별하기 위해 해당 공간을 사용했습니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

공간이 없으면 날짜 열에 남아 있는 모든 항목을 반환하려고 합니다. 따라서 첫 번째 레코드의 경우 1을 반환합니다. 해당 공백이 포함된 두 번째 레코드의 경우 텍스트 문자열의 첫 번째 부분인 Third 단어를 반환합니다 .

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

비슷한 접근 방식을 사용하여 날짜 이름을 가져오지만 List.PositionOf 함수를 사용합니다 . 이것은 첫 번째 인수로 전달된 목록 값의 0부터 시작하는 오프셋을 반환하고 값이 해당 목록에 나타나지 않으면 -1을 반환합니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

첫 번째 레코드의 경우 목록에 없는 값 1을 전달합니다. 이것이 -1 값을 반환하는 이유입니다. 두 번째 레코드의 경우 Monday 값을 반환합니다 .

그것은 그것을 우리 함수에 전달하고 우리 목록의 두 번째 항목이기 때문에 1을 반환합니다. 다음으로 모든 -1 값을 null 로 바꿉니다 .

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

이 시점에서 사용자 지정 함수를 호출하는 데 필요한 모든 빌딩 블록을 만들었습니다.

영구 휴일 달력에 대한 사용자 지정 함수 호출

수식 입력줄에서 함수가 연도 , , 숫자요일 의 네 가지 인수를 취하는 것을 볼 수 있습니다 .

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

그러나 날짜 값을 어떻게 결정합니까? List.PositionOf를 다시 사용하여 숫자에 대한 숫자 값을 가져옵니다. 첫 번째, 두 번째, 세 번째, 네 번째를 포함하는 목록이 있습니다. 숫자를 List.PositionOf 에 전달하면 0부터 시작하는 오프셋을 반환합니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

다시 말하지만, 값이 없으면 -1을 반환합니다. 따라서 첫 번째 레코드의 경우 값 1을 전달합니다. 1은 이 목록에 없으므로 -1 값을 반환합니다. 두 번째 레코드의 경우 목록의 세 번째 항목인 Third 값을 전달합니다. 이것은 2의 값을 반환합니다.

날짜 목록 만들기

이제 날짜 목록을 만들어 보겠습니다. 해당 월의 시작 날짜를 결정하고 해당 월의 일 수를 결정한 다음 List.Dates를 사용하여 해당 월의 모든 날짜를 포함하는 목록을 만듭니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

다음으로 List.Select를 사용하여 특정 요일에 있는 날짜만 유지합니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

이 목록 옆을 클릭하면 이 네 가지 항목만 포함되어 있음을 알 수 있습니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

조건부 논리 적용

마지막으로 조건 논리를 적용하여 날짜를 구성하거나 검색합니다. 요일이 null 이면 특정 날짜가 있음을 나타내므로 내장 #date를 사용하여 날짜 값을 구성할 수 있습니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

숫자가 마지막과 같으면 List.Reverse 함수를 사용하여 목록의 순서를 반대로 하고 첫 번째 값을 추출할 수 있습니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

이 오름차순을 내림차순으로 변경하려면 해당 날짜 범위에서 항상 마지막 날짜를 추출할 수 있습니다. 목록에 4개 또는 5개의 요소가 있는지는 중요하지 않습니다. 순서를 반대로 하고 첫 번째 항목을 추출하면 항상 마지막 날짜가 표시됩니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

다른 모든 경우에는 List.Skip 을 사용합니다 .

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

목록에서 이 위치를 기준으로 값을 추출할 수 있습니다. 추수감사절의 경우 숫자는 4이고 4는 3을 반환합니다. 이렇게 하면 목록의 처음 세 값을 건너뛰고 항상 네 번째 항목을 반환합니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

모두 정리하고 솔루션 쿼리로 이동하겠습니다. 소스 단계의 경우 RAW 공휴일 날짜 테이블을 호출합니다. 다음으로 날짜가 포함된 목록을 반환하는 열을 추가합니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

영구 휴일 달력에 대한 M 코드 검토

열에 대한 M 코드를 확인합시다. 테이블의 각 행에 대해 날짜 테이블에서 고유한 연도를 포함하는 테이블을 중첩했습니다. 그런 다음 사용자 지정 함수를 호출하여 해당 연도 열의 값을 변환했습니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

물론 사용자 지정 함수를 호출하려면 먼저 몇 가지 설정을 수행해야 합니다. 월 번호 , 숫자 값 , 물론 요일 도 가져와야 합니다 . 그런 다음 중첩된 테이블에서 목록을 날짜와 함께 보관했습니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

흰색 공간의 측면을 클릭하면 아래에서 해당 목록의 미리보기를 볼 수 있습니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

다음 단계는 해당 목록을 확장하고 CelebratedOnDate 를 추가하는 것입니다 .

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

이것이 우리가 이 계산에 사용한 논리입니다. 날짜가 토요일이면 하루를 빼서 금요일이 됩니다. 일요일이면 하루를 추가하여 월요일에 도착합니다. 토요일이나 일요일이 아니면 null을 원합니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

마지막으로 마지막 단계는 유형을 변경하는 것입니다.

영원한 휴일 달력 – POTW #12 (파워 쿼리 솔루션)

결론

LuckyTemplates 포럼에서 매주 첫 번째와 세 번째 수요일에 진행되는 시리즈라는 점을 간단히 알려드립니다 . 1주차에 게시된 문제는 DAX 기반 솔루션이 필요하며, 3주차 문제는 파워 쿼리 기반 솔루션이 필요합니다.

이 POTW에서 다루는 콘텐츠가 마음에 드셨다면 LuckyTemplates TV 채널을 구독하여 자세한 내용을 확인하십시오. 저와 다양한 콘텐츠 제작자가 항상 제공하는 엄청난 양의 콘텐츠가 있으며 모두 LuckyTemplates 및 Power Platform을 사용하는 방식을 개선하는 데 전념하고 있습니다.

여자 이름


파이썬에서 자기란 무엇인가: 실제 사례

파이썬에서 자기란 무엇인가: 실제 사례

파이썬에서 자기란 무엇인가: 실제 사례

R에서 RDS 파일을 저장하고 로드하는 방법

R에서 RDS 파일을 저장하고 로드하는 방법

R의 .rds 파일에서 개체를 저장하고 로드하는 방법을 배웁니다. 이 블로그에서는 R에서 LuckyTemplates로 개체를 가져오는 방법도 다룹니다.

첫 N 영업일 재방문 – DAX 코딩 언어 솔루션

첫 N 영업일 재방문 – DAX 코딩 언어 솔루션

이 DAX 코딩 언어 자습서에서는 GENERATE 함수를 사용하는 방법과 측정값 제목을 동적으로 변경하는 방법을 알아봅니다.

LuckyTemplates에서 다중 스레드 동적 시각적 개체 기술을 사용한 인사이트 쇼케이스

LuckyTemplates에서 다중 스레드 동적 시각적 개체 기술을 사용한 인사이트 쇼케이스

이 자습서에서는 다중 스레드 동적 시각적 개체 기술을 사용하여 보고서의 동적 데이터 시각화에서 통찰력을 만드는 방법을 다룹니다.

LuckyTemplates의 컨텍스트 필터링 소개

LuckyTemplates의 컨텍스트 필터링 소개

이 기사에서는 필터 컨텍스트를 살펴보겠습니다. 필터 컨텍스트는 모든 LuckyTemplates 사용자가 처음에 배워야 하는 주요 주제 중 하나입니다.

LuckyTemplates 온라인 서비스에서 앱을 사용하기 위한 최고의 팁

LuckyTemplates 온라인 서비스에서 앱을 사용하기 위한 최고의 팁

LuckyTemplates Apps 온라인 서비스가 다양한 소스에서 생성된 다양한 보고서 및 인사이트를 관리하는 데 어떻게 도움이 되는지 보여주고 싶습니다.

시간 경과에 따른 이익 마진 변화 분석 - LuckyTemplates 및 DAX를 사용한 분석

시간 경과에 따른 이익 마진 변화 분석 - LuckyTemplates 및 DAX를 사용한 분석

LuckyTemplates에서 측정 분기 및 DAX 수식 결합과 같은 기술을 사용하여 수익 마진 변경을 해결하는 방법을 알아봅니다.

DAX Studio의 데이터 캐시에 대한 구체화 아이디어

DAX Studio의 데이터 캐시에 대한 구체화 아이디어

이 자습서에서는 데이터 캐시의 구체화 아이디어와 결과 제공 시 DAX 성능에 미치는 영향에 대해 설명합니다.

LuckyTemplates를 사용한 비즈니스 보고

LuckyTemplates를 사용한 비즈니스 보고

지금까지 Excel을 계속 사용하고 있다면 지금이 비즈니스 보고 요구 사항에 LuckyTemplates를 사용하기 시작하는 가장 좋은 시기입니다.

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것