내 생각에 가장 좋은 방법은 기능적으로 데이터를 파티션하는 것입니다. 대부분의 경우 날짜 열이 적절합니다. 예를 들어 주문 날짜를 봅시다.
해당 열의 경우 가장 적합한 분모를 찾으십시오. 예를 들어 매년 주문 날짜가 약 백만 개의 행을 생성합니다.
대신 각 루프 컨테이너에 대해 for loop container을 사용하십시오.
이 루프가 작동하려면 원본 데이터에서 모든 주문 날짜의 최소 연도와 최대 연도를 찾아야합니다. 이들은 스칼라 결과를 SSIS 변수에 저장하는 SQL 문을 사용하여 검색 할 수 있습니다.
다음으로 반복문 당 1 년을 더한 변수에 저장 한 최소 및 최대 연도 사이를 루프하도록 for 루프 컨테이너를 설정합니다.
"SELECT * FROM transactions WHERE YEAR(OrderDate) = " + @[User::ForLoopCurrentYear]
:
마지막으로, 실제로 데이터를 검색하려면 루프 컨테이너에 대한 생산의 현재 연도를 지정하는 where 절에 변수에 식으로 소스 SQL 문을 저장해야합니다
이제이 변수를 데이터 흐름 소스에서 사용하여 파티션 된 데이터를 검색 할 수 있습니다.
편집 :
유형 Object
의 SSIS 변수에 그 결과 집합을 SQL 실행 작업에 파티션 키를 검색하는 것입니다 각 루프 컨테이너에 대한을 사용하고 절약 다른 솔루션 :
SELECT YEAR(OrderDate) FROM transaction GROUP BY YEAR(OrderDate)
각 루프 컨테이너에 대해 ADO 열거자를 사용하여 개체를 반복하고 위의 방법과 동일한 방법을 사용하여 현재 연도를 원본 SQL 문에 삽입 할 수 있습니다.
전체 데이터 세트를 동시에 메모리에로드해야합니까? 또는 데이터 흐름을 일괄 적으로 처리 할 수 있습니까? SSIS는 후자의 경우 배치 설정을 올바르게하면 좋습니다. 귀하의 답변에 – GShenanigan