2012-11-01 2 views
8

SQL 2008/SSIS에서 첫 번째 데이터웨어 하우스를 구축 중이며 사실 테이블을로드하는 데 대한 모범 사례를 찾고 있습니다.SQL/SSIS DataWareHouse 팩트 테이블 로딩, 모범 사례?

현재 DW에는 유형 1 SCD 인 약 20 개의 차원 (사무실, 직원, 제품, 고객 등)이 있습니다. 내 DW 구조에서, 이미 신청 한 몇 가지가있다 :

  • 없음 널 (null) 각 차원 (SK ID를 0으로 채워
  • 알 수없는 키 멤버 (준비 중 숫자에 대한 텍스트 또는 0 빈으로 대체)) 단계에서 생산 테이블 SCD 유형 1 로딩
  • UPSERT
  • 내 사실 로딩 SSIS 프로젝트에서

, 내가로드 치수가 현재의 방법은 차원 내 로딩 DISTINCT SELECT 각 DIM에 대해 다중 조회 (20+)를 수행 한 다음 FACT 테이블에 데이터를 채 웁니다. 내 조회에

나는 설정 :

  • 은 "일치 항목"에 대한 실패를 무시

    • 전체 캐시
    • "ISNULL (surrogate_idkey) 0? surrogate_idkey"와
    • 파생 변환 각각의 SK에 대한 있도록 조회가 실패하면 SK ID 0 (알 수없는 구성원)이 기본값이됩니다.
    • 내 치수 조회 중 일부는 키를 한 기업 이상이

    이 최선의 방법인가? 위의 내 설명을 돕기 위해 첨부 된 그림.

    enter image description here enter image description here enter image description here

  • 답변

    5

    잘 보인다. 성능 문제가 발생하기 시작하면 옵션이 있습니다. 그러나 안정적인 경우 (데이터로드 시간 창에서 완료되고 소스 시스템의 자원이 소모되지 않는 등) 변경하지 않아도됩니다. 때문에 SSIS의 메모리 제약

    일부 잠재적 인 문제를에 눈을 유지하는 ...

    1. 당신의 크기는 크기가 증가하면 전체 캐시 조회-변환 문제를 일으킬 수 20 + 가지고 ... 시스템 ...하지만 그들은 유형 1이기 때문에, 나는 걱정하지 않을 것입니다.
    2. 풀 캐시 조회 "수화물"사전 실행 ... 그 중 20 개는 (위에서 무슨에) 내려

    일반적인 대안을 느려질 수 있습니다 가지는로부터 팩트 테이블 데이터를 추출하는 것입니다 단일 SQL 문을 통해 차원 키 조회를 수행하기 전에 준비 영역에 놓으십시오. 심지어 일부는이 목적을 위해 특히 스테이지 영역에 차원 키 매핑 테이블 집합을 유지합니다. 이렇게하면 소스 시스템에서 잠금/차단이 줄어 듭니다.로드 할 때마다 많은 양의 데이터가 있고 데이터를 빨아들이는 동안 원본 시스템을 차단해야하며 20 개 이상의 조회 변환을 통해 실행해야합니다.

    많은 양의 데이터, 큰 차원, 복잡한 키 매핑 (일반적으로 여러 원본 시스템으로 인해) 및 짧은 데이터로드 시간 창을 사용하는 경우 준비 영역 전략이 중요합니다.

    +0

    감사합니다. Banton, 현재 우리는 약 200 개의 열을 포함하는 4m 레코드를로드 중입니다. 매일 약 2k 행의 새 레코드가 있습니다. 적재 단계는 상당히 빠릅니다. 의견을 보내 주셔서 감사합니다. – exxoid

    +0

    [전용 BI 사이트에 대한 지침을 따르고 사용하고 공유하십시오.] (http://area51.stackexchange.com/proposals/70503/business-intelligence?referrer=EPHSm8-3avvaMxLjdRIeNg2). 나는 BI 사이트 제안이 없을 때 [Meta]에서이 질문을 제기했습니다. (http://meta.stackexchange.com/q/232414/201662) – bonCodigo