2014-08-27 8 views
2

OLAP 데이터베이스를 구축 중이며 다소 어려움에 처해 있습니다. 수량, 판매, 비용, 이익 등과 같은 판매 데이터 열을 포함하는 사실 테이블을 이미 설정했습니다. 현재 가지고있는 차원은 날짜, 위치 및 제품입니다. 즉, 사실 테이블에 포함 된 이러한 차원 테이블에 대한 외래 키 열도 있습니다. 사실 테이블에이 데이터를로드했습니다.데이터웨어 하우스에 새 차원 추가 (팩트 테이블에 새 열 추가)

이제 판매원에 대한 특성 항목을 추가하려고합니다. 영업 사원의 ID와 이름 및 위치가있는 측정 기준을 만들었습니다. 그러나 사실 테이블을 편집하여 외래 키 역할을하는 새 열을 영업 사원 차원에 추가 할 수는 없습니다.

팩트 테이블의 기반이되는 판매 데이터베이스를 조회하고 영업 사원 ID를 사용하여 SSIS를 사용하고 싶지만 영업 사원 열을 사실 테이블에 추가해야합니다. 내가 그것을하려고하면 NULL로 채워질 것이기 때문에 새로운 컬럼을 생성 할 수 없다는 에러가 발생한다.

+0

작동 순서 만 문제가됩니까? 열을 생성 한 다음 채우고 외래 키로 만들고 NULL을 허용하지 않도록 변경할 수 있습니까? –

답변

2

적은 사실 방법을 만들 문제가 있습니다. 그러나 이것은 단지 추측 일뿐입니다. 귀하의 질문은 이해하기가 약간 어렵습니다.

날짜, 위치 및 제품 차원에 대한 링크를 포함하여 x 열이 포함 된 팩트 테이블을 만들었다 고 가정합니다. 그런 다음 사실 테이블에 데이터를로드했습니다.

이제 새 테이블 SalesPerson_SK (또는 ID)를 해당 테이블에 추가하려고합니다. 데이터베이스에서 NULL 값을 허용하지 않으려면 'NULL 허용'확인란의 선택을 취소하십시오. 그러나 작업을 저장하려고하면 SalesPerson_SK 열에 NULL을 삽입 할 수 없다는 이의와 함께 테이블 오류가 발생합니다.

이 제한 사항을 해결하는 데는 몇 가지 방법이 있습니다. 당신이 아직 개발 단계에있는 경우 아마 최고입니다 하나는, 다음 명령을 실행하는 것입니다 : 당신이 당신의 변경과 함께 테이블을 다시로드 할 수 있도록 테이블에서 모든 데이터를 제거합니다

TRUNCATE TABLE dbo.FactMyFact 

새로운 칼럼이 포함되었습니다. 어떤 이유로, 당신은 그렇게 할 수없는 경우

, 당신은

ALTER TABLE FactMyFact 
ADD Salesperson_SK INT NOT NULL 
CONSTRAINT DF_FactMyFact_SalesPersonSK DEFAULT 0 

"나는 이것이 무엇인지 모른다"라고 본질적 더미 기록을 default value into your fact table을 넣어 것입니다 alter the table to add the column but include a default constraint 수있는 당신이 만약

ALTER TABLE FactMyFact 
ADD Salesperson_SK INT NULL 

는이 답변을 기반으로 주어졌다 : 하나 디자인 페이지에서 체크 박스를 선택하여 또는 다음 명령을 실행하여 NULL 값을 간단하게 테이블에 기본 값을 넣어 열을 생성하고 허용하지 않으 무엇에 내가 생각하면 문제는 : 그것이 도움이되는지 알려주세요.

+0

와우, 그게 내 문제 야. 미안 해요, 잘 설명 할 수 없었어요. 귀하의 첫 번째 제안은 또한 첫 번째 아이디어 였지만, 2,000 만 행을 가지고 작업 중이므로 새로운 차원이 추가 될 때마다 모든 데이터를 다시로드하므로이 데이터가 게시되면 제대로 작동하지 않습니다.다른 제안 사항은 의미가 있지만 SSIS에서 데이터를로드 할 때 여전히 문제가 발생합니까? 각 행에 0 값이 있으면 실제 조회 값으로 덮어 씁니 까? –

+0

또한 팩트 테이블을 잘라내어 새로운 컬럼으로 다시로드하는 것은 표준적인 방법입니까? 필자는이 문제를 해결하기 위해 노력해 왔으며 사실 테이블을 만든 후에 추가 차원을 추가하는 최상의 방법을 설명하는 것을 보지 못했습니다. –

+1

@BixShmix를 사용하려면 SSIS를 구성하여 열에 대한 업데이트를 확인하거나 한 번 수동 업데이트 문을 실행하여 이미 존재하는 각 행에 값을 할당해야합니다 ([read point # 3] (http://www.kimballgroup.com/2001/10/design-tip-29-graceful-modifications-to-existing-fact-and-dimension-tables/)). 나는 이것이 여전히 dev에 있기를 바랬다. 그래서 truncate/reload는 쉬울 것이다. 재실행 할 수없는 데이터 (예 : 히스토리가있는 SCD2 컬럼)가 있으면 테이블에서 잘립니다. – AHiggins

-2

치수 내부는 ... 차원의 값을 얻을 사실에 삽입, 사실 테이블과

에 가입하거나 다른 사실을 나는에 관한 추측을거야

관련 문제