2017-04-20 1 views
3

Sales.But에 대한 하나의 다차원 OLAP 큐브가 있습니다.하지만 거대한 데이터베이스가 있습니다. 먼저 olap 큐브 전체 처리를 완료했습니다. 그러나 매번 그렇게 할 것이므로 많은 시간이 걸릴 것입니다. 나는 점진적인 처리를해야합니다.하지만 나는 갖고 있지 않습니다. 이 주제에 대한 만료 기간. 도와 주실 수 있습니까?어떻게 OLAP 큐브 증분 처리를 수행 할 수 있습니까?

경로를 어떻게 따라야합니까? 이 기사를 다루는 일부 기사 (예 : this)를 발견했습니다.

하지만 파티션 쿼리에서 어떤 조건을 쓸지는 모르겠다.

enter image description here

답변

2

사실 테이블을 분할하는 일반적인 방법 일 것입니다. 원본에 Sales_TransactionDate 열이 있으므로 분할 attribbute로 분명히 선택됩니다.

데이터 양과 생성하려는 파티션 수에 따라 년, 월, 일 또는 그 사이의 모든 항목으로 분할 할 수 있습니다.

아이디어는 전체 큐브를 한 번만 처리하는 것입니다. 그런 다음 (예를 들어) 밤마다, 현재 (예 :) 월의 파티션 만 다시 처리합니다. 이는 이전 데이터 (예 : 마지막 달이 끝날 때까지의 데이터) 이 소스 시스템에서을 절대 변경하지 않는 경우에만 작동합니다. 지난 달 파티션이 더 이상 처리되지 않기 때문에 변경된 사항은 변경 사항을 놓치게됩니다.

이렇게 점진적 처리에는 중요한 점이 있습니다. 소스 시스템의 데이터가 처음으로 변경된 후 얼마 동안 변경 될 수 있는지 (큐브와 관련된 변경 사항 만 있습니다. 큐브가 사용하지 않는 일부 열이 변경되지 않아도 상관 없습니다) , 그리고 어느 단계에서 변함없는 상태로 자리 잡는다.

Type2 느리게 변경되는 특성을 사용하는 방법 (원본 시스템에 행이 마지막으로 업데이트 된시기를 나타내는 방법 (예 : LastUpdated datetime)과 관련된 ETL 질문입니다. 기둥).

(편집 - 아래에 의견을 따라) 당신은 단지 가장 최근의 파티션을 처리하여 가능한 모든 변경 사항을 캡처 보장하고 있도록 파티션 크기를 조정해야

합니다. 예를 들어 행이 Transaction Date (또는 다른 날짜로 파티션을 나누는 데 사용하는 날짜) 이후 6 개월까지 변경 될 수있는 경우 변경 사항을 놓치지 않도록 마지막 6 개월의 데이터를 처리해야합니다.

그러나이 제약은 가장 최근 파티션의 크기에만 영향을줍니다. 이전 파티션의 크기는 원하는대로 지정할 수 있습니다. 행을 "변경됨"으로 표시하는 메커니즘이 소스 시스템에있는 경우 가장 최근의 파티션에서 처리량을 줄일 수 있습니다. (한 예로 "LastUpdated"열이 있습니다.이 열은 행이 업데이트 될 때 항상 현재 날짜/시간으로 설정되고 또 다른 예는 SQL CDC입니다.

+0

안녕 SebTHU, 증분 olap 큐브에 대한 또 다른 제안을 해주실 수 있습니까? –

+0

하나의 예가 필요합니다. –

+1

@SebTHU - 명확히하기 위해 LastUpdated는 정적이 된 후에 사용해야합니다. 큐브가 처리 된 후 LastUpdated가 변경되면 레코드가 두 번 계산되지 않도록 이전 파티션을 새 파티션으로 다시 처리해야합니다. –

관련 문제