적용 대상:
Azure Data Factory
Azure Synapse Analytics
팁
Microsoft Fabric의 데이터 팩토리는 더 간단한 아키텍처, 기본 제공 AI 및 새로운 기능을 갖춘 차세대 Azure 데이터 팩토리입니다. 데이터 통합을 접하는 경우 Fabric Data Factory부터 시작합니다. 기존 ADF 워크로드는 Fabric 업그레이드하여 데이터 과학, 실시간 분석 및 보고 전반에 걸쳐 새로운 기능에 액세스할 수 있습니다.
- Fabric 무료 평가판을 시작합니다.
Microsoft Fabric의 Data Factory로 Azure Data Factory를 업그레이드합니다
Oracle Server, Netezza, Teradata 또는 SQL Server 데이터 웨어하우스에서 Azure Synapse Analytics 데이터를 복사하려면 여러 테이블에서 엄청난 양의 데이터를 로드해야 합니다. 일반적으로 단일 테이블에서 여러 스레드를 병렬 처리하여 행을 로드할 수 있도록 각 테이블에 데이터를 분할해야 합니다. 이 문서에서는 이러한 시나리오에서 사용할 템플릿을 설명합니다.
참고
데이터 볼륨이 비교적 작은 소수의 테이블에서 Azure Synapse Analytics 데이터를 복사하려는 경우 Azure Data Factory 데이터 복사 도구 사용하는 것이 더 효율적입니다. 이 문서에서 설명하는 템플릿은 해당 시나리오에 필요한 것 이상의 기능을 제공합니다.
이 솔루션 템플릿 정보
이 템플릿은 외부 제어 테이블에서 복사할 원본 데이터베이스 파티션의 목록을 검색합니다. 그런 다음, 원본 데이터베이스의 각 파티션을 반복하고 대상에 데이터를 복사합니다.
이 템플릿은 다음 세 가지 작업을 포함합니다.
- 조회는 외부 제어 테이블에서 데이터베이스 파티션 목록을 검색합니다.
- ForEach는 Lookup 작업에서 파티션 목록을 가져와 각 파티션을 Copy 작업에 반복적으로 전달합니다.
- 복사는 원본 데이터베이스 저장소의 각 파티션을 대상 저장소로 복사합니다.
템플릿은 다음 매개 변수를 정의합니다.
- Control_Table_Name은 원본 데이터베이스에 대한 파티션 목록을 저장하는 외부 제어 테이블입니다.
- Control_Table_Schema_PartitionID는 각 파티션 ID를 저장하는 외부 제어 테이블의 열 이름입니다. 파티션 ID가 원본 데이터베이스의 각 파티션에서 고유한지 확인합니다.
- Control_Table_Schema_SourceTableName은 원본 데이터베이스의 각 테이블 이름을 저장하는 외부 제어 테이블입니다.
- Control_Table_Schema_FilterQuery는 원본 데이터베이스의 각 파티션에서 데이터를 가져오는 필터 쿼리를 저장하는 외부 제어 테이블의 열 이름입니다. 예를 들어 연도를 기준으로 데이터를 분할한 경우 각 행에 저장된 쿼리는 ‘select * from datasource where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''와 유사할 수 있습니다.
- Data_Destination_Folder_Path는 데이터가 대상 저장소에 복사되는 경로입니다(선택한 대상이 "파일 시스템" 또는 "Azure Data Lake Storage Gen1"인 경우 적용 가능).
- Data_Destination_Container는 대상 저장소에서 데이터가 복사 되는 루트 폴더 경로입니다.
- Data_Destination_Directory는 대상 저장소에 데이터가 복사되는 루트 아래의 디렉터리 경로입니다.
대상 저장소의 경로를 정의하는 마지막 세 매개 변수는 선택한 대상이 파일 기반 스토리지인 경우에만 표시됩니다. 대상 저장소로 "Azure Synapse Analytics"을 선택하는 경우 이러한 매개 변수가 필요하지 않습니다. 그러나 Azure Synapse Analytics 테이블 이름과 스키마는 원본 데이터베이스의 스키마와 동일해야 합니다.
이 솔루션 템플릿을 사용하는 방법
SQL Server 또는 Azure SQL Database 컨트롤 테이블을 만들어 대량 복사를 위해 원본 데이터베이스 파티션 목록을 저장합니다. 다음 예제에서는 원본 데이터베이스에 5개의 파티션이 있습니다. 3개의 파티션은 datasource_table에 대한 것이고, 2개는 project_table에 대한 것입니다. LastModifytime 열은 원본 데이터베이스에서 datasource_table 테이블의 데이터를 분할하는 데 사용됩니다. 첫 번째 파티션을 읽는 데 사용되는 쿼리는 'select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''입니다. 유사한 쿼리를 사용하여 다른 파티션에서 데이터를 읽을 수도 있습니다.
Create table ControlTableForTemplate ( PartitionID int, SourceTableName varchar(255), FilterQuery varchar(255) ); INSERT INTO ControlTableForTemplate (PartitionID, SourceTableName, FilterQuery) VALUES (1, 'datasource_table','select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''), (2, 'datasource_table','select * from datasource_table where LastModifytime >= ''2016-01-01 00:00:00'' and LastModifytime <= ''2016-12-31 23:59:59.999'''), (3, 'datasource_table','select * from datasource_table where LastModifytime >= ''2017-01-01 00:00:00'' and LastModifytime <= ''2017-12-31 23:59:59.999'''), (4, 'project_table','select * from project_table where ID >= 0 and ID < 1000'), (5, 'project_table','select * from project_table where ID >= 1000 and ID < 2000');데이터베이스에서 대량 복사 템플릿으로 이동합니다. 1단계에서 만든 외부 제어 테이블에 대한 새 연결을 만듭니다.
데이터를 복사하는 원본 데이터베이스에 대해 새 연결을 만듭니다.
데이터를 복사하는 대상 데이터 저장소에 대해 새 연결을 만듭니다.
이 템플릿 사용을 선택합니다.
다음 예제와 같이 파이프라인이 표시됩니다.
디버그를 선택하고 매개 변수를 입력한 다음, 마침을 선택합니다.
결과는 다음 예제와 유사합니다.
(선택 사항) 데이터 대상으로 "Azure Synapse Analytics"을 선택한 경우 Azure Synapse Analytics Polybase에서 요구하는 대로 스테이징을 위해 Azure Blob Storage에 대한 연결을 입력해야 합니다. 이 템플릿은 Blob 스토리지에 대한 컨테이너 경로를 자동으로 생성합니다. 파이프라인이 실행된 후 컨테이너를 만들었는지 확인합니다.