Azure Data Factory 및 Synapse Analytics를 사용하여 Teradata Vantage에서 데이터 복사

적용 대상: Azure Data Factory Azure Synapse Analytics

기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!

이 문서에서는 Azure Data Factory 및 Synapse Analytics 파이프라인에서 복사 작업을 사용하여 Teradata Vantage에서 데이터를 복사하는 방법을 간략하게 설명합니다. 복사 작업 개요를 기반으로 빌드됩니다.

지원되는 기능

이 Teradata 커넥터는 다음과 같은 기능에 지원됩니다.

지원되는 기능 IR
복사 작업(원본/-) ① ②
조회 작업 ① ②

① Azure 통합 런타임 ② 자체 호스팅 통합 런타임

복사 작업의 원본/싱크로 지원되는 데이터 저장소 목록은 지원되는 데이터 저장소 표를 참조하세요.

특히 이 Teradata 커넥터는 다음을 지원합니다.

  • Teradata 버전 14.10, 15.0, 15.10, 16.0, 16.10 및 16.20.
  • 기본, Windows 또는 LDAP 인증을 사용한 데이터 복사.
  • Teradata 원본에서의 병렬 복사. 자세한 내용은 Teradata에서 병렬 복사 섹션을 참조하세요.

필수 조건

데이터 저장소가 온-프레미스 네트워크, Azure 가상 네트워크 또는 Amazon Virtual Private Cloud 내에 있는 경우 자체 호스팅된 통합 런타임을 구성하여 연결해야 합니다.

데이터 저장소가 관리형 클라우드 데이터 서비스인 경우 Azure Integration Runtime을 사용할 수 있습니다. 액세스가 방화벽 규칙에서 승인된 IP로 제한되는 경우 허용 목록에 Azure Integration Runtime IP를 추가할 수 있습니다.

또한 Azure Data Factory의 관리형 가상 네트워크 통합 런타임 기능을 사용하면 자체 호스팅 통합 런타임을 설치하고 구성하지 않고도 온-프레미스 네트워크에 액세스할 수 있습니다.

Data Factory에서 지원하는 네트워크 보안 메커니즘 및 옵션에 대한 자세한 내용은 데이터 액세스 전략을 참조하세요.

자체 호스팅 통합 런타임을 사용하는 경우 버전 3.18부터 Teradata 드라이버가 기본 제공됩니다. 드라이버를 수동으로 설치할 필요가 없습니다. 드라이버를 사용하려면 자체 호스팅 통합 런타임 컴퓨터에 "Visual C++ 재배포 가능 패키지 2012 업데이트 4"가 필요합니다. 아직 설치되지 않은 경우 여기서 다운로드하세요.

시작하기

파이프라인에 복사 작업을 수행하려면 다음 도구 또는 SDK 중 하나를 사용하면 됩니다.

UI를 사용하여 Teradata에 연결된 서비스 만들기

다음 단계를 사용하여 Azure Portal UI에서 Teradata에 연결된 서비스를 만듭니다.

  1. Azure Data Factory 또는 Synapse 작업 영역에서 관리 탭으로 이동하여 연결된 서비스를 선택하고 새로 만들기를 클릭합니다.

  2. Teradata를 검색하고 Teradata 커넥터를 선택합니다.

    Select the Teradata connector.

  3. 서비스 세부 정보를 구성하고, 연결을 테스트하고, 새로운 연결된 서비스를 만듭니다.

    Configure a linked service to Teradata.

커넥터 구성 세부 정보

다음 섹션에서는 Teradata 커넥터에 한정된 데이터 팩터리 엔터티를 정의하는 데 사용되는 속성에 대해 자세히 설명합니다.

연결된 서비스 속성

Teradata 연결된 서비스는 다음 속성을 지원합니다.

속성 설명 필수
type 형식 속성은 Teradata로 설정되어야 합니다.
connectionString Teradata 인스턴스에 연결하는 데 필요한 정보를 지정합니다. 다음 샘플을 참조하세요.
Azure Key Vault에 암호를 입력하고 연결 문자열에서 password 구성을 끌어올 수도 있습니다. 자세한 내용은 Azure Key Vault의 자격 증명 저장을 참조하세요.
사용자 이름 Teradata에 연결할 사용자 이름을 지정합니다. Windows 인증을 사용하는 경우 적용됩니다. 아니요
password 사용자 이름으로 지정한 사용자 계정에 대한 암호를 지정합니다. Azure Key Vault에 저장된 비밀을 참조할 수도 있습니다.
Windows 인증을 사용하거나 기본 인증에 Key Vault의 암호를 참조하는 경우에 적용됩니다.
아니요
connectVia 데이터 저장소에 연결하는 데 사용할 Integration Runtime입니다. 필수 구성 요소 섹션에서 자세히 알아보세요. 지정하지 않으면 기본 Azure Integration Runtime을 사용합니다. 아니요

경우에 따라 연결 문자열에서 설정할 수 있는 추가 연결 속성이 있습니다.

속성 설명 기본값
TdmstPortNumber Teradata 데이터베이스에 액세스하는 데 사용되는 포트 번호입니다.
지원팀에서 지시하지 않는 한 이 값을 변경하지 마세요.
1025
UseDataEncryption Teradata 데이터베이스와의 모든 통신을 암호화할지 여부를 지정합니다. 허용되는 값은 0 또는 1입니다.

- 0(사용하지 않음, 기본값): 인증 정보만을 암호화합니다.
- 1(사용): 드라이버와 데이터베이스 간에 전달되는 모든 데이터를 암호화합니다.
0
CharacterSet 세션에 사용되는 문자 집합입니다. 예: CharacterSet=UTF16.

이 값은 사용자 정의 문자 집합 또는 미리 정의된 다음 문자 집합 중 하나일 수 있습니다.
- ASCII
- UTF8
- UTF16
- LATIN1252_0A
- LATIN9_0A
- LATIN1_0A
- Shift-JIS(Windows, DOS 호환, KANJISJIS_0S)
- EUC(Unix 호환, KANJIEC_0U)
- IBM Mainframe(KANJIEBCDIC5035_0I)
- KANJI932_1S0
- BIG5(TCHBIG5_1R0)
- GB(SCHGB2312_1T0)
- SCHINESE936_6R0
- TCHINESE950_8R0
- NetworkKorean(HANGULKSC5601_2R4)
- HANGUL949_7R0
- ARABIC1256_6A0
- CYRILLIC1251_2A0
- HEBREW1255_5A0
- LATIN1250_1A0
- LATIN1254_7A0
- LATIN1258_8A0
- THAI874_4A0
ASCII
MaxRespSize SQL 요청에 대한 응답 버퍼의 최대 크기(KB)입니다. 예: MaxRespSize=‭10485760‬.

Teradata 데이터베이스 버전 16.00 이상에서는 최댓값이 7361536입니다. 이전 버전을 사용하는 연결의 경우 최댓값은 1048576입니다.
65536
MechanismName LDAP 프로토콜을 사용하여 연결을 인증하려면 MechanismName=LDAP를 지정합니다. 해당 없음

예제: 기본 인증 사용

{
    "name": "TeradataLinkedService",
    "properties": {
        "type": "Teradata",
        "typeProperties": {
            "connectionString": "DBCName=<server>;Uid=<username>;Pwd=<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

예제: Windows 인증 사용

{
    "name": "TeradataLinkedService",
    "properties": {
        "type": "Teradata",
        "typeProperties": {
            "connectionString": "DBCName=<server>",
            "username": "<username>",
            "password": "<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

예제: LDAP 인증 사용

{
    "name": "TeradataLinkedService",
    "properties": {
        "type": "Teradata",
        "typeProperties": {
            "connectionString": "DBCName=<server>;MechanismName=LDAP;Uid=<username>;Pwd=<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

참고 항목

다음 페이로드는 계속 지원됩니다. 그러나 앞으로 새 페이로드를 사용해야 합니다.

이전 페이로드:

{
    "name": "TeradataLinkedService",
    "properties": {
        "type": "Teradata",
        "typeProperties": {
            "server": "<server>",
            "authenticationType": "<Basic/Windows>",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

데이터 세트 속성

이 섹션에서는 Teradata 데이터 세트에서 지원하는 속성의 목록을 제공합니다. 데이터 세트 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 데이터 세트를 참조하세요.

Teradata의 데이터를 복사하려는 경우 다음과 같은 속성이 지원됩니다.

속성 설명 필수
type 데이터 세트의 type 속성은 TeradataTable로 설정해야 합니다.
database Teradata 인스턴스의 이름입니다. 아니요(작업 원본에서 "query"가 지정된 경우)
table Teradata 인스턴스에 있는 테이블의 이름입니다. 아니요(작업 원본에서 "query"가 지정된 경우)

예제:

{
    "name": "TeradataDataset",
    "properties": {
        "type": "TeradataTable",
        "typeProperties": {},
        "schema": [],        
        "linkedServiceName": {
            "referenceName": "<Teradata linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

참고 항목

RelationalTable 형식 데이터 세트는 계속 지원됩니다. 그러나 새 데이터 세트를 사용하는 것이 좋습니다.

이전 페이로드:

{
    "name": "TeradataDataset",
    "properties": {
        "type": "RelationalTable",
        "linkedServiceName": {
            "referenceName": "<Teradata linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {}
    }
}

복사 작업 속성

이 섹션에서는 Teradata 원본에서 지원하는 속성의 목록을 제공합니다. 작업 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 파이프라인을 참조하세요.

Teradata를 원본으로

데이터 분할을 사용하여 Teradata에서 데이터를 효율적으로 로드하려면 Teradata에서 병렬 복사 섹션에서 자세히 알아보세요.

Teradata에서 데이터를 복사하기 위해 복사 작업의 source 섹션에서 지원되는 속성은 다음과 같습니다.

속성 설명 필수
type 복사 작업 원본의 type 속성은 TeradataSource로 설정해야 합니다.
query 사용자 지정 SQL 쿼리를 사용하여 데이터를 읽습니다. 예제는 "SELECT * FROM MyTable"입니다.
분할된 로드를 사용하도록 설정하는 경우 쿼리에 해당하는 기본 제공 파티션 매개 변수를 후크해야 합니다. 예제는 Teradata에서 병렬 복사 섹션을 참조하세요.
No(데이터 세트의 테이블이 지정된 경우)
partitionOptions Teradata에서 데이터를 로드하는 데 사용되는 데이터 분할 옵션을 지정합니다.
허용되는 값은 None(기본값), Hash, DynamicRange입니다.
파티션 옵션을 사용하도록 설정하는 경우(즉, None은 안 됨) Teradata에서 데이터를 동시에 로드하는 병렬 처리 수준이 복사 작업에서 parallelCopies 설정에 의해 제어됩니다.
아니요
partitionSettings 데이터 분할에 대한 설정 그룹을 지정합니다.
파티션 옵션이 None이 아닌 경우에 적용합니다.
아니요
partitionColumnName 병렬 복사를 위해 범위 분할 또는 해시 분할에서 사용되는 원본 열의 이름을 지정합니다. 지정하지 않으면 테이블의 기본 인덱스가 자동으로 검색되어 파티션 열로 사용됩니다.
파티션 옵션이 Hash 또는 DynamicRange인 경우에 적용됩니다. 쿼리를 사용하여 원본 데이터를 검색하는 경우 WHERE 절에서 ?AdfHashPartitionCondition 또는 ?AdfRangePartitionColumnName을 후크합니다. Teradata에서 병렬 복사에서 예제를 참조하세요.
아니요
partitionUpperBound 데이터를 복사할 파티션 열의 최댓값입니다.
파티션 옵션이 DynamicRange인 경우에 적용합니다. 쿼리를 사용하여 원본 데이터를 검색하는 경우 WHERE 절에서 ?AdfRangePartitionUpbound을 후크합니다. 예제는 Teradata에서 병렬 복사 섹션을 참조하세요.
아니요
partitionLowerBound 데이터를 복사할 파티션 열의 최솟값입니다.
파티션 옵션이 DynamicRange인 경우에 적용됩니다. 쿼리를 사용하여 원본 데이터를 검색하는 경우 WHERE 절에서 ?AdfRangePartitionLowbound를 후크합니다. 예제는 Teradata에서 병렬 복사 섹션을 참조하세요.
아니요

참고 항목

RelationalSource 형식 복사 원본은 계속 지원되지만 Teradata(분할 옵션)에서의 새로운 기본 제공 병렬 로드는 지원되지 않습니다. 그러나 새 데이터 세트를 사용하는 것이 좋습니다.

예: 파티션이 없는 기본 쿼리를 사용하여 데이터 복사

"activities":[
    {
        "name": "CopyFromTeradata",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Teradata input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "TeradataSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Teradata에서 병렬 복사

Teradata 커넥터는 Teradata에서 병렬로 데이터를 복사하는 기본 제공 데이터 분할을 제공합니다. 복사 작업의 원본 테이블에서 데이터 분할 옵션을 찾을 수 있습니다.

Screenshot of partition options

분할된 복사를 사용하도록 설정하면 서비스가 Teradata 원본에 대한 병렬 쿼리를 실행하여 파티션별로 데이터를 로드합니다. 병렬 수준은 복사 작업의 parallelCopies 설정에 의해 제어됩니다. 예를 들어 parallelCopies의 값을 4로 설정하면 서비스는 지정된 파티션 옵션과 설정에 따라 4개의 쿼리를 동시에 생성하고 실행하며, 각 쿼리는 Teradata에서 데이터의 일부를 검색합니다.

특히 Teradata 데이터베이스에서 대량의 데이터를 로드하는 경우 특별히 데이터 분할로 병렬 복사를 사용하도록 설정하는 것이 좋습니다. 다양한 시나리오에 대해 권장되는 구성은 다음과 같습니다. 파일 기반 데이터 저장소에 데이터를 복사할 때 여러 파일로 폴더에 쓰는 것이 좋습니다(폴더 이름만 지정). 이 경우 단일 파일에 쓰는 것보다 성능이 좋습니다.

시나리오 제안된 설정
큰 테이블에서 전체 로드입니다. 파티션 옵션: 해시.

실행 중에 서비스는 기본 인덱스 열을 자동으로 검색하고, 이에 대한 해시를 적용하고, 파티션별로 데이터를 복사합니다.
사용자 지정 쿼리를 사용하여 많은 양의 데이터를 로드합니다. 파티션 옵션: 해시.
쿼리:SELECT * FROM <TABLENAME> WHERE ?AdfHashPartitionCondition AND <your_additional_where_clause>.
파티션 열: 해시 파티션 적용에 사용되는 열을 지정합니다. 지정하지 않으면 서비스는 Teradata 데이터 세트에서 지정한 테이블의 PK 열을 자동으로 검색합니다.

실행 중 서비스는 ?AdfHashPartitionCondition을 해시 파티션 논리로 바꾸고, Teradata로 보냅니다.
범위 분할에 대해 균등하게 분산된 값을 가진 정수 열이 있는 사용자 지정 쿼리를 사용하여 많은 양의 데이터를 로드합니다. 파티션 옵션: 동적 범위 파티션입니다.
쿼리:SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
파티션 열: 데이터를 분할하는 데 사용되는 열을 지정합니다. 정수 데이터 형식의 열에 대해 분할할 수 있습니다.
파티션 상한파티션 하한값: 파티션 열에 대해 필터링하여 하한과 상한 사이에서만 데이터를 검색하도록 지정합니다.

실행하는 동안 서비스에서 ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbound, ?AdfRangePartitionLowbound를 각 파티션의 실제 열 이름과 값 범위로 바꾸고 Teradata에 보냅니다.
예를 들어 파티션 열 "ID"의 하한이 1로 설정되고 상한이 80으로 설정된 경우 병렬 복사를 4로 설정하면 서비스는 4개의 파티션으로 데이터를 검색합니다. 해당 ID는 [1, 20], [21, 40], [41, 60] 및 [61, 80] 사이에 각각 있습니다.

예: 해시 파티션이 있는 쿼리

"source": {
    "type": "TeradataSource",
    "query": "SELECT * FROM <TABLENAME> WHERE ?AdfHashPartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "Hash",
    "partitionSettings": {
        "partitionColumnName": "<hash_partition_column_name>"
    }
}

예: 동적 범위 파티션이 있는 쿼리

"source": {
    "type": "TeradataSource",
    "query": "SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<dynamic_range_partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column>",
        "partitionLowerBound": "<lower_value_of_partition_column>"
    }
}

Teradata에 대한 데이터 형식 매핑

Teradata에서 데이터를 복사할 때 Teradata의 데이터 형식에서 서비스에서 사용하는 내부 데이터 형식에 다음 매핑이 적용됩니다. 복사 활동에서 원본 스키마와 데이터 형식을 싱크에 매핑하는 방법에 대한 자세한 내용은 스키마 및 데이터 형식 매핑을 참조하세요.

Teradata 데이터 형식 중간 서비스 데이터 형식
BigInt Int64
Blob Byte[]
Byte Byte[]
ByteInt Int16
Char 문자열
Clob 문자열
날짜 DateTime
소수 Decimal
두 배 두 배
Graphic 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
정수 Int32
Interval Day 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Interval Day To Hour 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Interval Day To Minute 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Interval Day To Second 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Interval Hour 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Interval Hour To Minute 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Interval Hour To Second 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Interval Minute 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Interval Minute To Second 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Interval Month 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Interval Second 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Interval Year 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Interval Year To Month 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
숫자 두 배
Period(Date) 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Period(Time) 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Period(Time With Time Zone) 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Period (Timestamp) 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Period(Timestamp With Time Zone) 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
SmallInt Int16
Time TimeSpan
Time With Time Zone TimeSpan
Timestamp DateTime
Timestamp With Time Zone DateTime
VarByte Byte[]
VarChar 문자열
VarGraphic 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.
Xml 지원되지 않습니다. 원본 쿼리에서 명시적 캐스트를 적용합니다.

조회 작업 속성

속성에 대한 자세한 내용을 보려면 조회 작업을 확인하세요.

복사 작업에서 원본 및 싱크로 지원되는 데이터 저장소 목록은 지원되는 데이터 저장소를 참조하세요.