다음을 통해 공유


Analysis Services에서 파티션 병합(SSAS - 다차원)

기존 Analysis Services 데이터베이스의 파티션을 병합하여 동일한 측정값 그룹의 여러 파티션에서 팩트 데이터를 통합할 수 있습니다.

일반적인 시나리오

요구 사항

파티션을 병합한 후 파티션 원본 업데이트

팩트 테이블 또는 명명된 쿼리로 분할된 파티션에 대한 특별 고려 사항

SSMS를 사용하여 파티션을 병합하는 방법

XMLA를 사용하여 파티션을 병합하는 방법

일반적인 시나리오

파티션 사용을 위한 가장 일반적인 단일 구성에는 시간 차원에서 데이터를 분리하는 작업이 포함됩니다. 각 파티션과 연결된 시간의 세분성은 프로젝트와 관련된 비즈니스 요구 사항에 따라 달라집니다. 예를 들어 세분화는 연도별일 수 있으며, 가장 최근 연도는 월로 나뉘고 활성 월에는 별도의 파티션이 있을 수 있습니다. 활성 월 파티션은 정기적으로 새 데이터를 수집합니다.

활성 월이 완료되면 해당 파티션이 연도별 파티션의 월로 다시 병합되고 프로세스가 계속됩니다. 연말에 완전히 새해 파티션이 형성되었습니다.

이 시나리오에서 알 수 있듯이 파티션 병합은 정기적으로 수행되는 일상적인 작업이 되어 기록 데이터를 통합하고 구성하는 점진적인 접근 방식을 제공할 수 있습니다.

요구 사항

파티션은 다음 조건을 모두 충족하는 경우에만 병합할 수 있습니다.

  • 동일한 측정값 그룹이 있습니다.

  • 구조가 동일합니다.

  • 처리된 상태여야 합니다.

  • 스토리지 모드는 동일합니다.

  • 동일한 집계 디자인이 포함됩니다.

  • 동일한 문자열 저장소 호환성 수준을 공유합니다(분할된 고유 개수 측정값 그룹에만 적용됨).

대상 파티션이 비어 있는 경우(즉, 집계 디자인이 있지만 집계가 없는 경우) 병합은 원본 파티션에 대한 집계를 삭제합니다. 집계를 빌드하려면 파티션에서 프로세스 인덱스, 프로세스 전체 또는 프로세스 기본값을 실행해야 합니다.

원격 파티션은 Analysis Services의 동일한 원격 인스턴스로 정의된 다른 원격 파티션과만 병합할 수 있습니다.

비고

로컬 파티션과 원격 파티션의 조합을 사용하는 경우 다른 방법은 결합된 데이터를 포함하는 새 파티션을 만들어 더 이상 사용하지 않는 파티션을 삭제하는 것입니다.

나중에 병합할 후보 파티션을 만들려면 파티션 마법사에서 파티션을 만들 때 큐브의 다른 파티션에서 집계 디자인을 복사하도록 선택할 수 있습니다. 이렇게 하면 이러한 파티션의 집계 디자인이 동일합니다. 병합되면 원본 파티션의 집계가 대상 파티션의 집계와 결합됩니다.

파티션을 병합한 후 파티션 원본 업데이트

파티션은 데이터를 처리하는 데 사용되는 SQL 쿼리의 WHERE 절과 같은 쿼리 또는 파티션에 데이터를 제공하는 테이블 또는 명명된 쿼리로 구분됩니다. 파티션의 속성은 Source 파티션이 쿼리 또는 테이블에 바인딩되어 있는지 여부를 나타냅니다.

파티션을 병합하면 파티션의 내용이 통합되지만 Source 파티션의 추가 범위를 반영하도록 속성이 업데이트되지 않습니다. 즉, 이후에 원래 Source파티션을 유지하는 파티션을 다시 처리하면 해당 파티션에서 잘못된 데이터를 가져옵니다. 파티션은 부모 수준에서 데이터를 잘못 집계합니다. 다음 예제에서는 이 동작을 보여 줍니다.

문제

세 가지 청량 음료 제품에 대한 정보가 포함된 큐브가 있다고 가정해 보겠습니다. 동일한 팩트 테이블을 사용하는 세 개의 파티션이 있습니다. 이러한 파티션은 제품별로 분할됩니다. 파티션 1에는 [ColaFull]에 대한 데이터가 포함되고, 파티션 2에는 [ColaDecaf]에 대한 데이터가 포함되고, 파티션 3에는 [ColaDiet]에 대한 데이터가 포함됩니다. 파티션 3이 파티션 2에 병합되면 결과 파티션의 데이터(파티션 2)가 올바르고 큐브 데이터가 정확합니다. 그러나 파티션 2가 처리되면 해당 콘텐츠는 제품 수준에서 멤버의 부모에 의해 결정될 수 있습니다. 이 부모 [SoftDrinks]에는 파티션 1의 제품인 [ColaFull]도 포함됩니다. 파티션 2를 처리하면 파티션에 [ColaFull]을 비롯한 모든 청량 음료에 대한 데이터가 로드됩니다. 그런 다음 큐브는 [ColaFull]에 대한 중복 데이터를 포함하고 최종 사용자에게 잘못된 데이터를 반환합니다.

해결 방법

솔루션은 Source 속성을 업데이트하거나 WHERE 절, 명명된 쿼리를 조정하거나 기본 팩트 테이블의 데이터를 수동으로 병합하여 파티션의 확장된 범위를 고려할 때 후속 처리를 정확하게 하기 위한 것입니다.

이 예제에서는 파티션 3을 파티션 2로 병합한 후 결과 파티션 2에서 ("Product" = 'ColaDecaf' OR "Product" = 'ColaDiet')와 같은 필터를 제공하여 팩트 테이블에서 [ColaDecaf] 및 [ColaDiet]에 대한 데이터만 추출하도록 지정하고 [ColaFull]과 관련된 데이터를 제외할 수 있습니다. 또는 파티션 2 및 파티션 3을 만들 때 필터를 지정할 수 있으며 이러한 필터는 병합 프로세스 중에 결합됩니다. 두 경우 모두 파티션이 처리된 후 큐브에 중복 데이터가 포함되지 않습니다.

결론

파티션을 병합한 후에는 항상 필터가 Source 병합된 데이터에 대해 올바른지 확인합니다. Q1, Q2 및 Q3에 대한 기록 데이터가 포함된 파티션을 시작했고 이제 Q4를 병합한 경우 Q4를 포함하도록 필터를 조정해야 합니다. 그렇지 않으면 파티션을 후속 처리하면 잘못된 결과가 생성됩니다. 4분기에는 맞지 않을 것입니다.

팩트 테이블 또는 명명된 쿼리로 분할된 파티션에 대한 특별 고려 사항

쿼리 외에도 파티션을 테이블 또는 명명된 쿼리로 분할할 수도 있습니다. 원본 파티션과 대상 파티션이 데이터 원본 또는 데이터 원본 뷰 Source 에서 동일한 팩트 테이블을 사용하는 경우 파티션을 병합한 후 속성이 유효합니다. 결과 파티션에 적합한 팩트 테이블 데이터를 지정합니다. 결과 파티션에 필요한 팩트가 팩트 테이블에 있으므로 속성을 수정할 Source 필요가 없습니다.

여러 팩트 테이블 또는 명명된 쿼리의 데이터를 사용하는 파티션에는 추가 작업이 필요합니다. 원본 파티션의 팩트 테이블에서 대상 파티션의 팩트 테이블에 팩트를 수동으로 병합해야 합니다.

또는 병합된 파티션의 원본을 두 개의 개별 팩트 테이블의 내용을 반환하는 명명된 쿼리로 변경할 수 있습니다. 이 수동 단계가 수행되지 않으면 팩트 테이블에 전체 정보가 포함되지 않습니다.

같은 이유로 명명된 쿼리에서 분할된 데이터를 가져오는 파티션도 업데이트해야 합니다. 결합된 파티션에는 이전에 별도의 명명된 쿼리에서 가져온 결합된 결과 집합을 반환하는 명명된 쿼리가 있어야 합니다.

파티션 스토리지 고려 사항: MOLAP

MOLAP 파티션이 병합되면 파티션의 다차원 구조에 저장된 팩트도 병합됩니다. 이로 인해 내부적으로 완전하고 일관된 파티션이 생성됩니다. 그러나 MOLAP 파티션에 저장된 팩트는 팩트 테이블의 팩트 복사본입니다. 파티션이 이후에 처리되면 다차원 구조의 팩트가 삭제되고(전체 및 새로 고침에 대해서만) 데이터가 파티션에 대한 데이터 원본 및 필터에 지정된 대로 팩트 테이블에서 복사됩니다. 원본 파티션이 대상 파티션과 다른 팩트 테이블을 사용하는 경우 원본 파티션의 팩트 테이블을 대상 파티션의 팩트 테이블과 수동으로 병합하여 결과 파티션이 처리될 때 전체 데이터 집합을 사용할 수 있도록 해야 합니다. 이는 두 파티션이 서로 다른 명명된 쿼리를 기반으로 하는 경우에도 적용됩니다.

중요합니다

불완전한 팩트 테이블이 있는 병합된 MOLAP 파티션은 팩트 테이블 데이터의 내부적으로 병합된 복사본을 포함하며 처리될 때까지 올바르게 작동합니다.

파티션 스토리지 고려 사항: HOLAP 및 ROLAP 파티션

팩트 테이블이 다른 HOLAP 또는 ROLAP 파티션이 병합되면 팩트 테이블이 자동으로 병합되지 않습니다. 팩트 테이블을 수동으로 병합하지 않는 한 대상 파티션과 연결된 팩트 테이블만 결과 파티션에서 사용할 수 있습니다. 원본 파티션에 연결된 팩트는 결과 파티션에서 드릴다운할 수 없으며, 파티션이 처리될 때 사용할 수 없는 테이블의 데이터는 집계에 포함되지 않습니다.

중요합니다

불완전한 팩트 테이블이 있는 병합된 HOLAP 또는 ROLAP 파티션에는 정확한 집계가 포함되지만 불완전한 팩트가 포함됩니다. 누락된 사실을 참조하는 쿼리는 잘못된 데이터를 반환합니다. 파티션이 처리되면 집계는 사용 가능한 팩트에서만 계산됩니다.

사용자가 사용할 수 없는 테이블의 팩트로 드릴다운을 시도하거나 사용할 수 없는 테이블의 팩트가 필요한 쿼리를 실행하지 않는 한 사용할 수 없는 팩트가 없는 것은 눈에 띄지 않을 수 있습니다. 병합 프로세스 중에 집계가 결합되므로 집계만을 기반으로 하는 쿼리는 정확한 데이터를 반환하지만 다른 쿼리는 부정확한 데이터를 반환할 수 있습니다. 결과 파티션이 처리된 후에도 사용할 수 없는 팩트 테이블의 누락된 데이터는 특히 결합된 데이터의 작은 부분만 나타내는 경우 눈에 띄지 않을 수 있습니다.

팩트 테이블은 파티션을 병합하기 전이나 후에 병합할 수 있습니다. 그러나 집계는 두 작업이 모두 완료될 때까지 기본 팩트를 정확하게 나타내지 않습니다. 사용자가 이러한 파티션을 포함하는 큐브에 연결되지 않은 경우 다른 팩트 테이블에 액세스하는 HOLAP 또는 ROLAP 파티션을 병합하는 것이 좋습니다.

SSMS를 사용하여 파티션을 병합하는 방법

중요합니다

파티션을 병합하기 전에 먼저 데이터 필터 정보(SQL 쿼리를 기반으로 하는 필터에 대한 WHERE 절)를 복사합니다. 나중에 병합이 완료된 후 누적된 팩트 데이터를 포함하는 파티션의 파티션 원본 속성을 업데이트해야 합니다.

  1. 개체 탐색기에서 병합할 파티션이 포함된 큐브의 측정값 그룹 노드를 확장하고, 파티션을 확장하고, 병합 작업의 대상 또는 대상인 파티션을 마우스 오른쪽 단추로 클릭합니다. 예를 들어 분기별 팩트 데이터를 연간 팩트 데이터를 저장하는 파티션으로 이동하는 경우 연간 팩트 데이터가 포함된 파티션을 선택합니다.

  2. 파티션 병합을 클릭하여 파티션 <병합 이름> 대화 상자를 엽니다.

  3. 원본 파티션에서 대상 파티션과 병합하려는 각 원본 파티션 옆에 있는 확인란을 선택하고 확인을 클릭합니다.

    비고

    원본 파티션은 원본이 대상 파티션에 병합된 후 즉시 삭제됩니다. 병합이 완료된 후 파티션 폴더를 새로 고쳐 내용을 업데이트합니다.

  4. 누적된 데이터가 포함된 파티션을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  5. Source 속성을 열고 방금 병합한 파티션 데이터를 포함할 수 있도록 WHERE 절을 수정합니다. "Source 속성이 자동으로 업데이트되지 않는다는 것을 기억하세요." 먼저 업데이트 Source하지 않고 다시 처리하면 예상된 데이터를 모두 얻지 못할 수 있습니다.

XMLA를 사용하여 파티션을 병합하는 방법

XMLA(파티션 병합)에 대한 자세한 내용은 이 항목을 참조하세요.

또한 참조하십시오

Analysis Services 개체의 처리
파티션(Analysis Services - 다차원 데이터)
로컬 파티션 만들기 및 관리(Analysis Services)
원격 파티션 만들기 및 관리(Analysis Services)
파티션 쓰기 저장 설정
Write-Enabled 파티션
차원 및 파티션에 대한 문자열 스토리지 구성