2013-03-13 4 views
2

SSIS 패키지가 어디에 있습니까 (하드 코딩 된) 레코드가 통과합니다.행 개수 변환으로 설정된 변수 값이 SSIS에서 DFT를 실행하는 동안 적용됩니까? 또는 조건부 분할은 변수를 올바르게 읽을 수 있습니까?

enter image description here

나는 DFT 범위 변수가 있습니다.

enter image description here

나는 행이 Transaformation를 계산하여 변수에 값을 할당합니다.

enter image description here

값은 1 스크립트 나 성분을 사용하여 확인해야한다.

public override void PostExecute() 
    { 
    System.Windows.Forms.MessageBox.Show(ReadWriteVariables[0].Value.ToString()); 
    base.PostExecute(); 
    /* 
     Add your code here for postprocessing or remove if not needed 
     You can set read/write variables here, for example: 
     Variables.MyIntVar = 100 
    */ 
    } 

조건부 분할 변환 조건에서 0 조건을 찾습니다. 그것이 내가이 스크립트 구성 요소를 통해 값 1에도 메시지 박스를해야한다고 생각 whrease 제로 상태와 동일한 만족 이상하게

enter image description here

는 값이 1

enter image description here

어떤 이유가있을 수 있습니다 보여줍니다? 가변성의 가치는 DFT의 끝으로 만 실현됩니까 아니면 조건부 분할은 올바른 값을 읽거나 문제를 생각할 수없는 다른 문제가 있습니까?

답변

4

variable의 값이 data flow task 안에 할당되면 데이터 흐름 작업의 split transformation 이상에서 사용할 수 없습니다. DFT가 completed이되면 값은 일반적으로 populated이됩니다. 당신이 value 1를 참조하거나 우편 또는 사전 실행 이벤트에 스크립트 변환에서 Variable에 다른 값을 설정할 수 있습니다 비록

Variable values does not update during the execution of Data Flow task 

는,이 값은 따라서 DFT

의 실행 값이 업데이트 후 영향됩니다 우선 순위 제약 조건 또는 제어 흐름의 다른 작업에서 사용할 수 있습니다.

this 문서를 읽으십시오.

+0

감사합니다. 내 패키지에는 엄청난 수의 ETL (DFT)이 있습니다. 나는 소스로부터 0 레코드를 얻었을 때 약간의 포워딩 (basicaly 다른 플로우)을하고 싶다. 어떻게해야합니까? 내 조건부 분할/행 개수 접근 방식이 떨어졌습니다. – Pritesh

+2

특히 똑똑하거나 효율적이지는 않지만, 미리 선택 (SELECT COUNT) (*)을 실행하여 그 값을 변수에 저장할 수 있습니다. 쿼리 중복 및 데이터에 대한 추가 패스가 필요합니다. –

0

또는 RANK 함수를 열 중 하나로 사용할 수 있으며 후자는 최대 행 개수의 조건부 분할을 사용하여 선택한 행 수를 직접 계산할 수 있습니다. 다음으로 최종 목적지에 삽입하기 전에 열 복사 및 RANK 열 제거를 사용할 수 있습니다. 희망이 도움이!