DAX Studio의 LuckyTemplates 압축 기술

이 자습서에서는 보고서를 최적화하는 데 도움이 되는 의 다양한 LuckyTemplates 압축 기술에 대해 알아봅니다 .

LuckyTemplates Power Pivot 및 SSAS 의 Analysis Services에서 세그먼트별로 데이터를 로드한 후 두 가지 이벤트가 발생합니다. 첫 번째는 전체 RAM 크기를 줄이기 위해 다른 인코딩 방법을 사용하여 열을 압축하려고 시도한다는 것입니다 . 두 번째는 반복되는 값을 함께 배치하는 최상의 정렬 순서에 자금을 지원하려고 한다는 것입니다. 이 방법은 또한 압축률을 높이고 메모리에 대한 압력을 줄입니다.

Analysis Services에서 사용하는 다양한 압축 기술이 있습니다. 이 자습서에서는 세 가지 방법, 특히 값 인코딩, 실행 길이 인코딩 및 사전 인코딩을 다룹니다. 이 자습서의 마지막 섹션에서는 Analysis Services에서 정렬 작업을 수행하는 방법에 대해 설명합니다.

목차

LuckyTemplates 압축 기술 #1: 값 인코딩

첫 번째는 값 인코딩이라고 합니다.

값 인코딩은 메모리를 줄이기 위해 열의 각 값 사이의 수학적 관계를 찾습니다. 다음은 Microsoft Excel의 예입니다.

이 열은 값을 저장하기 위해 16,384비트가 필요합니다.

DAX Studio의 LuckyTemplates 압축 기술

필요한 비트를 계산하려면 먼저 Excel에서 MAX() 함수를 사용하여 열에서 가장 높은 값을 가져옵니다. 이 경우 9144입니다. 그런 다음 POWER() 함수를 사용하여 필요한 비트를 계산합니다. POWER(2, X) 인수를 사용하십시오. 여기서 X는 MAX 값보다 큰 답을 반환하는 양수 값입니다. 이 경우 X는 필요한 비트도 나타냅니다. 따라서 이 예에서 X의 값은 14이며 결과는 16,384 입니다 . 따라서 열에는 14비트의 스토리지가 필요합니다.

값 인코딩을 사용하여 필요한 비트를 줄이기 위해 VertiPaq은 열에서 MIN 값을 찾아 각 값에서 뺍니다. 이 경우 열의 MIN 값은 9003입니다. 열에서 이를 빼면 다음 값이 반환됩니다.

DAX Studio의 LuckyTemplates 압축 기술

동일한 함수와 인수를 사용하면 새 열의 MAX 값이 141임을 알 수 있습니다. X 값으로 8을 사용하면 256 이 됩니다 . 따라서 새 열에는 8비트만 필요합니다.

두 번째 열이 첫 번째 열과 비교하여 얼마나 압축되었는지 확인할 수 있습니다.

데이터가 압축되고 새 열을 쿼리하려고 하면 스토리지 엔진 또는 Vertipaq이 이 열을 스캔합니다. 단순히 열의 새 값을 반환하지 않습니다. 대신 결과를 사용자에게 다시 반환하기 전에 뺀 값을 더합니다.

그러나 값 인코딩은 정수 또는 고정 십진수 값을 포함하는 열에서만 작동합니다.

LuckyTemplates 압축 기술 #2: 실행 길이 인코딩

두 번째 인코딩 방법은 Run Length Encoding이라고 합니다.

Run Length Encoding은 고유 값, 시작 열 및 개수 열을 포함하는 데이터 구조를 생성합니다.

예를 들어 보겠습니다.

DAX Studio의 LuckyTemplates 압축 기술

이 경우 첫 번째 행에서 하나의 빨간색 값을 사용할 수 있음을 식별합니다. 그런 다음 Black 값이 두 번째 행에서 시작하고 다음 4개 셀에 사용할 수 있음을 확인합니다 . 여섯 번째 행에서 시작하여 다음 세 행에 사용할 수 있는 세 번째 값인 Blue 로 진행합니다. 그리고 이것은 열의 마지막 값에 도달할 때까지 계속됩니다.

따라서 전체 열을 저장하는 대신 특정 값의 시작 위치와 끝 위치, 중복 항목 수에 대한 정보만 포함하는 데이터 구조를 만듭니다.

DAX Studio의 LuckyTemplates 압축 기술

동일한 구조를 가진 열의 경우 값을 오름차순 또는 내림차순으로 정렬하여 데이터를 추가로 압축할 수 있습니다.

DAX Studio의 LuckyTemplates 압축 기술

이 제대로 정렬된 열을 사용하면 Run Length Encoding 메서드가 이제 한 행이 적은 데이터 구조를 반환하는 것을 볼 수 있습니다.

DAX Studio의 LuckyTemplates 압축 기술

따라서 많은 개별 값을 처리하는 경우 가능한 가장 최적의 방법으로 열을 정렬하는 것이 좋습니다. 이것은 더 적은 행을 가진 데이터 구조를 제공하여 더 적은 RAM을 차지합니다.

기본 키 열에는 고유한 값만 포함되므로 실행 길이 인코딩은 기본 키에 적용할 수 없습니다. 따라서 각 값에 대해 하나의 행을 저장하는 대신 열을 그대로 저장합니다.

LuckyTemplates 압축 기술 #3: 사전 인코딩

세 번째 인코딩 방법은 사전 인코딩이라고 합니다.

사전 인코딩은 열의 고유한 값을 포함하는 사전과 유사한 구조를 생성합니다. 또한 해당 고유 값에 인덱스를 할당합니다.

이전 예제를 사용하여 사전 인코딩이 작동하는 방식을 살펴보겠습니다. 이 경우 Red, Black 및 Blue 값에는 각각 0, 1 및 2의 인덱스가 할당됩니다.

DAX Studio의 LuckyTemplates 압축 기술

그런 다음 Run Length Encoding과 유사한 데이터 구조를 생성합니다. 그러나 사전 인코딩은 실제 값을 저장하는 대신 각 값의 할당된 인덱스를 저장합니다.

DAX Studio의 LuckyTemplates 압축 기술

이렇게 하면 숫자가 문자열 값보다 적은 공간을 차지하기 때문에 소비되는 RAM이 더 줄어듭니다.

사전 인코딩은 또한 테이블 형식 데이터 유형을 독립적으로 만듭니다. 즉, 다른 데이터 유형으로 저장할 수 있는 열이 있더라도 데이터 구조는 인덱스 값만 저장하므로 중요하지 않습니다.

그러나 독립적인 경우에도 데이터 유형은 여전히 ​​사전의 크기에 영향을 미칩니다. 열을 저장하기 위해 선택한 데이터 유형에 따라 사전(또는 데이터 구조) 크기가 변동됩니다. 그러나 열 자체의 크기는 동일하게 유지됩니다.

따라서 어떤 데이터 유형을 선택하느냐에 따라 해당 열에 사전 인코딩이 적용되면 이후에 Run Length Encoding이 적용될 수 있습니다.

이 경우 Analysis Services는 두 개의 데이터 구조를 만듭니다. 먼저 사전을 만든 다음 여기에 Run Length Encoding을 적용하여 열의 압축을 더 높입니다.

Analysis Services의 정렬 순서

이 자습서의 마지막 부분에서는 Analysis Services가 데이터 정렬을 위한 최적의 방식을 결정하는 방법에 대해 설명하겠습니다.

예를 들어 Red, Blue, Black, Green 및 Pink 값을 포함하는 열을 살펴보겠습니다. 1에서 5까지의 숫자도 할당되었습니다. 이것은 우리 열의 사전 역할을 합니다.

DAX Studio의 LuckyTemplates 압축 기술

이제 Excel의 전체 열을 이러한 값으로 채웁니다. 이 인수를 사용하여 이러한 값을 무작위로 포함하는 열을 생성하십시오.

DAX Studio의 LuckyTemplates 압축 기술

수식을 마지막 행까지 끕니다. 대규모 작업 팝업 창이 나타나면 확인을 클릭합니다 . 이제 다음과 같이 표시됩니다.

DAX Studio의 LuckyTemplates 압축 기술

그런 다음 전체 열을 복사하여 Value 로 붙여넣습니다 .

DAX Studio의 LuckyTemplates 압축 기술

이제 Excel 문서에서 파일 옵션 으로 이동 하고 정보를 클릭하면 해당 열이 14.1MB를 사용하는 것을 볼 수 있습니다 .

RAM 소모량을 줄이기 위해 열을 A부터 Z까지 정렬하면 됩니다. 크기를 다시 확인해보면 12.5MB 로 줄어든 것을 확인할 수 있습니다 .

1.9MB 감소 그다지 커 보이지 않을 수 있습니다. 이는 예제에서 Excel의 단일 열을 사용하여 시연했기 때문입니다. Excel은 1백만 행으로만 제한됩니다. 그러나 LuckyTemplates에서는 데이터에 수십억 개의 행과 열이 포함될 수 있습니다. 사용 공간의 감소는 기하급수적으로 증가합니다.

결론

데이터가 가장 최적의 방식으로 정렬되면 Analysis Services는 데이터 유형에 따라 세 가지 압축 기술 중 하나를 적용합니다.

이렇게 하면 데이터 압축이 증가하여 장치에서 소비되는 메모리 양이 크게 줄어듭니다. 이렇게 하면 보고서를 보다 최적화하여 실행하고 로드하기가 더 쉬워집니다.

Leave a Comment

SharePoint의 계산된 열 | 개요

SharePoint의 계산된 열 | 개요

SharePoint에서 계산된 열의 중요성과 목록에서 자동 계산 및 데이터 수집을 수행하는 방법을 알아보세요.

Power Apps에서 변수 만들기: 컬렉션 작업

Power Apps에서 변수 만들기: 컬렉션 작업

컬렉션 변수를 사용하여 Power Apps에서 변수 만드는 방법 및 유용한 팁에 대해 알아보세요.

Microsoft Flow HTTP 트리거 | Power Automate 자습서

Microsoft Flow HTTP 트리거 | Power Automate 자습서

Microsoft Flow HTTP 트리거가 수행할 수 있는 작업과 Microsoft Power Automate의 예를 사용하여 이를 사용하는 방법을 알아보고 이해하십시오!

Power Automate 흐름: 사용법 및 유형 설명

Power Automate 흐름: 사용법 및 유형 설명

Power Automate 흐름 및 용도에 대해 자세히 알아보세요. 다양한 작업 및 시나리오에 사용할 수 있는 다양한 유형의 흐름에 대해 설명합니다.

흐름에서 Power Automate 종료 작업 제어

흐름에서 Power Automate 종료 작업 제어

조건이 충족되지 않는 경우 흐름에서 작업을 종료하는 Power Automate 종료 작업 컨트롤을 올바르게 사용하는 방법을 알아봅니다.

PowerApps 시작 기능: 앱에서 다른 서비스를 시작하는 방법

PowerApps 시작 기능: 앱에서 다른 서비스를 시작하는 방법

PowerApps 실행 기능에 대해 자세히 알아보고 자신의 앱에서 바로 웹사이트, 전화, 이메일 및 기타 앱과 같은 기타 서비스를 실행하십시오.

Power Automate의 HTTP 요청 – 소개

Power Automate의 HTTP 요청 – 소개

타사 애플리케이션 통합과 관련하여 Power Automate의 HTTP 요청이 작동하는 방식을 배우고 이해합니다.

Power Automate Desktop: 마우스 클릭 보내기 기능을 사용하는 방법

Power Automate Desktop: 마우스 클릭 보내기 기능을 사용하는 방법

Power Automate Desktop에서 Send Mouse Click을 사용하는 방법을 알아보고 이것이 어떤 이점을 제공하고 흐름 성능을 개선하는지 알아보십시오.

PowerApps 변수: 컨텍스트 및 전역 변수 식별

PowerApps 변수: 컨텍스트 및 전역 변수 식별

PowerApps 변수의 작동 방식, 다양한 종류, 각 변수가 앱에 기여할 수 있는 사항을 알아보세요.

Power Automate에서 실행할 데스크톱 흐름 예약

Power Automate에서 실행할 데스크톱 흐름 예약

이 자습서에서는 Power Automate를 사용하여 웹 또는 데스크톱에서 작업을 자동화하는 방법을 알려줍니다. 데스크톱 흐름 예약에 대한 포괄적인 가이드를 제공합니다.