Azure Data Factory 또는 Synapse Analytics를 사용하여 SAP HANA에서 데이터 복사
적용 대상: Azure Data Factory Azure Synapse Analytics
팁
기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!
이 문서에서는 Azure Data Factory 및 Synapse Analytics 파이프라인에서 복사 작업을 사용하여 SAP HANA 데이터베이스에서 데이터를 복사하는 방법을 간략하게 설명합니다. 이 문서는 복사 작업에 대한 일반적인 개요를 제공하는 복사 작업 개요 문서를 기반으로 합니다.
팁
SAP 데이터 통합 시나리오에 대한 전반적인 지원에 관한 자세한 내용은 각 SAP 커넥터, 비교 및 지침의 자세한 소개가 포함된 SAP 데이터 통합 백서를 참조하세요.
지원되는 기능
이 SAP HANA 커넥터는 다음 기능에 대해 지원됩니다.
지원되는 기능 | IR |
---|---|
복사 작업(원본/싱크) | 9 |
조회 작업 | 9 |
① Azure 통합 런타임 ② 자체 호스팅 통합 런타임
복사 작업의 원본/싱크로 지원되는 데이터 저장소 목록은 지원되는 데이터 저장소 테이블을 참조하세요.
특히 이 SAP HANA 커넥터는 다음을 지원합니다.
- SAP HANA 데이터베이스의 모든 버전에서 데이터 복사
- 행/열 테이블 및 HANA 정보 모델(예: 분석 및 계산 보기)에서 데이터 복사
- Basic 또는 Windows 인증을 사용한 데이터 복사
- SAP HANA 원본에서 병렬 복사. 자세한 내용은 SAP HANA에서 병렬 복사 섹션을 참조하세요.
팁
SAP HANA 데이터 저장소로 데이터를 복사하려면 일반 ODBC 커넥터를 사용합니다. 자세한 내용은 SAP HANA 싱크 섹션을 참조하세요. 따라서 형식이 다른 SAP HANA 커넥터 및 ODBC 커넥터에 대한 연결된 서비스는 재사용할 수 없습니다.
필수 조건
이 SAP HANA 커넥터를 사용하려면 다음을 수행해야 합니다.
- 자체 호스팅 Integration Runtime을 설정합니다. 자세한 내용은 자체 호스팅 통합 런타임을 참조하세요.
- Integration Runtime 컴퓨터에 SAP HANA ODBC 드라이버를 설치합니다. SAP HANA ODBC 드라이버는 SAP 소프트웨어 다운로드 센터에서 다운로드할 수 있습니다. SAP HANA CLIENT for Windows라는 키워드를 사용하여 검색합니다.
시작하기
파이프라인에 복사 작업을 수행하려면 다음 도구 또는 SDK 중 하나를 사용하면 됩니다.
UI를 사용하여 SAP HANA에 연결된 서비스 만들기
다음 단계를 사용하여 Azure Portal UI에서 SAP HANA에 연결된 서비스를 만듭니다.
Azure Data Factory 또는 Synapse 작업 영역에서 관리 탭으로 이동하여 연결된 서비스를 선택하고 새로 만들기를 클릭합니다.
SAP를 검색하고 SAP HANA 커넥터를 선택합니다.
서비스 세부 정보를 구성하고, 연결을 테스트하고, 새로운 연결된 서비스를 만듭니다.
커넥터 구성 세부 정보
다음 섹션에서는 SAP HANA 커넥터에 한정된 Data Factory 엔터티를 정의하는 데 사용되는 속성에 대해 자세히 설명합니다.
연결된 서비스 속성
SAP HANA 연결된 서비스에 다음 속성이 지원됩니다.
속성 | 설명 | 필수 |
---|---|---|
type | 형식 속성은 SapHana로 설정해야 합니다. | 예 |
connectionString | 기본 인증 또는 Windows 인증을 사용하여 SAP HANA 연결에 필요한 정보를 지정합니다. 다음 샘플을 참조하세요. 연결 문자열에서 서버/포트는 필수(기본 포트는 30015)이고, 기본 인증을 사용하는 경우 사용자 이름 및 암호는 필수입니다. 추가 고급 설정은 SAP HANA ODBC 연결 속성을 참조하세요. Azure Key Vault에 암호를 넣고 연결 문자열에서 암호 구성을 끌어올 수도 있습니다. 자세한 내용은 Azure Key Vault의 자격 증명 저장 문서를 참조하세요. |
예 |
userName | Windows 인증을 사용하는 경우 사용자 이름을 지정합니다. 예: user@domain.com |
아니요 |
password | 사용자 계정으로 password를 지정합니다. 이 필드를 SecureString으로 표시하여 안전하게 저장하거나, Azure Key Vault에 저장된 비밀을 참조합니다. | 아니요 |
connectVia | 데이터 저장소에 연결하는 데 사용할 Integration Runtime입니다. 필수 조건에 설명된 대로 자체 호스팅 Integration Runtime이 필요합니다. | 예 |
예: 기본 인증 사용
{
"name": "SapHanaLinkedService",
"properties": {
"type": "SapHana",
"typeProperties": {
"connectionString": "SERVERNODE=<server>:<port (optional)>;UID=<userName>;PWD=<Password>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
예: Windows 인증 사용
{
"name": "SapHanaLinkedService",
"properties": {
"type": "SapHana",
"typeProperties": {
"connectionString": "SERVERNODE=<server>:<port (optional)>;",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
다음 페이로드에서 SAP HANA 연결된 서비스를 사용하는 경우, 있는 그대로도 지원되지만 앞으로 새 옵션을 사용하는 것이 좋습니다.
예제:
{
"name": "SapHanaLinkedService",
"properties": {
"type": "SapHana",
"typeProperties": {
"server": "<server>:<port (optional)>",
"authenticationType": "Basic",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
데이터 세트 속성
데이터 세트 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 데이터 세트 문서를 참조하세요. 이 섹션에는 SAP HANA 데이터 세트에서 지원하는 속성의 목록을 제공합니다.
SAP HANA의 데이터를 복사하려는 경우 다음과 같은 속성이 지원됩니다.
속성 | 설명 | 필수 |
---|---|---|
type | 데이터 세트의 type 속성을 SapHanaTable로 설정해야 합니다. | 예 |
schema(스키마) | SAP HANA 데이터베이스의 스키마 이름입니다. | 아니요(작업 원본에서 "query"가 지정된 경우) |
table | SAP HANA 데이터베이스의 테이블 이름입니다. | 아니요(작업 원본에서 "query"가 지정된 경우) |
예제:
{
"name": "SAPHANADataset",
"properties": {
"type": "SapHanaTable",
"typeProperties": {
"schema": "<schema name>",
"table": "<table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP HANA linked service name>",
"type": "LinkedServiceReference"
}
}
}
RelationalTable
형식의 데이터 세트를 사용하고 있는 경우 현재까지 지원되지만 앞으로는 새 형식을 사용하는 것이 좋습니다.
복사 작업 속성
작업 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 파이프라인 문서를 참조하세요. 이 섹션에는 SAP HANA 원본에서 지원하는 속성의 목록을 제공합니다.
SAP HANA를 원본으로
팁
데이터 분할을 사용하여 SAP HANA에서 데이터를 효율적으로 수집하려면 SAP HANA에서 병렬 복사 섹션에서 자세히 알아보세요.
SAP HANA에서 데이터를 복사하기 위해 복사 작업 원본 섹션에서 지원되는 속성은 다음과 같습니다.
속성 | 설명 | 필수 |
---|---|---|
type | 복사 활동 원본의 type 속성을 SapHanaSource로 설정해야 합니다. | 예 |
query | SAP HANA 인스턴스에서 데이터를 읽을 SQL 쿼리를 지정합니다. | 예 |
partitionOptions | SapHanaSource에서 데이터를 수집하는 데 사용되는 데이터 분할 옵션을 지정합니다. SAP HANA에서 병렬 복사 섹션에서 자세히 알아보세요. 허용되는 값: None(기본값),PhysicalPartitionsOfTable, SapHanaDynamicRange SAP HANA에서 병렬 복사 섹션에서 자세히 알아보세요. 쿼리가 아닌 테이블에서 데이터를 복사할 때 PhysicalPartitionsOfTable 만 사용할 수 있습니다. 파티션 옵션을 사용하도록 설정하는 경우(즉, None 은 안 됨), SAP HANA에서 데이터를 동시에 로드하는 병렬 처리 수준이 복사 작업에서 parallelCopies 설정에 의해 제어됩니다. |
False |
partitionSettings | 데이터 분할에 대한 설정 그룹을 지정합니다. 파티션 옵션이 SapHanaDynamicRange 인 경우에 적용합니다. |
False |
partitionColumnName | 병렬 복사를 위해 분할에서 사용되는 원본 열의 이름을 지정합니다. 지정하지 않으면 테이블의 인덱스 또는 기본 키가 자동으로 검색되어 파티션 열로 사용됩니다. 파티션 옵션이 SapHanaDynamicRange 인 경우에 적용됩니다. 쿼리를 사용하여 원본 데이터를 검색하는 경우 WHERE 절에서 ?AdfHanaDynamicRangePartitionCondition 을 후크합니다. SAP HANA에서 병렬 복사에서 예제를 참조하세요. |
SapHanaDynamicRange 분할을 사용하는 경우 예입니다. |
packetSize | 데이터를 여러 블록으로 분할하는 네트워크 패킷 크기(킬로바이트)를 지정합니다. 복사할 데이터가 많은 경우 패킷 크기를 늘리면 대부분의 경우 SAP HANA에서 읽기 속도를 높일 수 있습니다. 패킷 크기를 조정할 때 성능 테스트를 수행하는 것이 좋습니다. | 아니요. 기본값은 2048(2MB)입니다. |
예제:
"activities":[
{
"name": "CopyFromSAPHANA",
"type": "Copy",
"inputs": [
{
"referenceName": "<SAP HANA input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SapHanaSource",
"query": "<SQL query for SAP HANA>"
},
"sink": {
"type": "<sink type>"
}
}
}
]
RelationalSource
형식의 복사 원본을 사용하고 있는 경우 현재까지 지원되지만 앞으로는 새 형식을 사용하는 것이 좋습니다.
SAP HANA에서 병렬 복사
SAP HANA 커넥터는 SAP HANA에서 병렬로 데이터를 복사하는 기본 제공 데이터 분할을 제공합니다. 복사 작업의 원본 테이블에서 데이터 분할 옵션을 찾을 수 있습니다.
분할된 복사를 사용하도록 설정하면 서비스가 SAP HANA 원본에 대한 병렬 쿼리를 실행하여 파티션별로 데이터를 검색합니다. 병렬 수준은 복사 작업의 parallelCopies
설정에 의해 제어됩니다. 예를 들어 parallelCopies
의 값을 4로 설정하면 서비스는 지정된 파티션 옵션과 설정에 따라 4개의 쿼리를 동시에 생성하고 실행하며, 각 쿼리는 SAP HANA에서 데이터의 일부를 검색합니다.
특히 SAP HANA 데이터베이스에서 대량의 데이터를 수집하는 경우 특별히 데이터 분할로 병렬 복사를 사용하도록 설정하는 것이 좋습니다. 다양한 시나리오에 대해 권장되는 구성은 다음과 같습니다. 파일 기반 데이터 저장소에 데이터를 복사할 때 여러 파일로 폴더에 쓰는 것이 좋습니다(폴더 이름만 지정). 이 경우 단일 파일에 쓰는 것보다 성능이 좋습니다.
시나리오 | 제안된 설정 |
---|---|
큰 테이블에서 전체 로드입니다. | 파티션 옵션: 테이블의 실제 파티션 실행 중에 서비스는 지정된 SAP HANA 테이블의 물리적 파티션 유형을 자동으로 검색하고 해당 파티션 전략을 선택합니다. - 범위 분할: 테이블에 대해 정의된 파티션 열 및 파티션 범위를 가져오고 범위별로 데이터를 복사합니다. - 해시 분할: 해시 파티션 키를 파티션 열로 사용하고, 서비스에서 계산된 범위를 기반으로 데이터를 분할하고 복사합니다. - 라운드 로빈 분할 또는 파티션 없음: 기본 키를 파티션 열로 사용하고, 서비스에서 계산된 범위를 기반으로 데이터를 분할하고 복사합니다. |
사용자 지정 쿼리를 사용하여 많은 양의 데이터를 로드합니다. | 파티션 옵션: 동적 범위 파티션. 쿼리: SELECT * FROM <TABLENAME> WHERE ?AdfHanaDynamicRangePartitionCondition AND <your_additional_where_clause> .파티션 열: 동적 범위 파티션을 적용하는 데 사용되는 열을 지정합니다. 실행하는 동안 서비스는 지정된 파티션 열의 값 범위를 계산하고, 고유 파티션 열 값의 수와 및 병렬 복사 설정에 따라 여러 버킷의 행을 균등하게 분산하고, ?AdfHanaDynamicRangePartitionCondition 을 각 파티션에 대한 파티션 열 값 범위 필터링으로 대체하고, SAP HANA로 보냅니다.여러 열을 파티션 열로 사용하려는 경우 각 열의 값을 쿼리에서 하나의 열로 연결하고 SELECT * FROM (SELECT *, CONCAT(<KeyColumn1>, <KeyColumn2>) AS PARTITIONCOLUMN FROM <TABLENAME>) WHERE ?AdfHanaDynamicRangePartitionCondition 과 같이 파티션 열로 지정할 수 있습니다. |
예: 테이블의 물리적 파티션이 있는 쿼리
"source": {
"type": "SapHanaSource",
"partitionOption": "PhysicalPartitionsOfTable"
}
예: 동적 범위 파티션이 있는 쿼리
"source": {
"type": "SapHanaSource",
"query": "SELECT * FROM <TABLENAME> WHERE ?AdfHanaDynamicRangePartitionCondition AND <your_additional_where_clause>",
"partitionOption": "SapHanaDynamicRange",
"partitionSettings": {
"partitionColumnName": "<Partition_column_name>"
}
}
SAP HANA에 대한 데이터 형식 매핑
SAP HANA에서 데이터를 복사할 때 SAP HANA 데이터 형식에서 서비스 내에 내부적으로 사용되는 중간 데이터 형식으로 다음 매핑이 사용됩니다. 복사 작업에서 원본 스키마 및 데이터 형식을 싱크에 매핑하는 방법에 대한 자세한 내용은 스키마 및 데이터 형식 매핑을 참조하세요.
SAP HANA 데이터 형식 | 중간 서비스 데이터 형식 |
---|---|
ALPHANUM | 문자열 |
BIGINT | Int64 |
BINARY | Byte[] |
BINTEXT | 문자열 |
BLOB | Byte[] |
BOOL | Byte |
CLOB | 문자열 |
DATE | DateTime |
DECIMAL | Decimal |
DOUBLE | 두 배 |
FLOAT | Double |
INTEGER | Int32 |
NCLOB | 문자열 |
NVARCHAR | 문자열 |
REAL | Single |
SECONDDATE | DateTime |
SHORTTEXT | 문자열 |
SMALLDECIMAL | 소수 |
SMALLINT | Int16 |
STGEOMETRYTYPE | Byte[] |
STPOINTTYPE | Byte[] |
TEXT | 문자열 |
TIME | TimeSpan |
TINYINT | Byte |
VARCHAR | 문자열 |
TIMESTAMP | DateTime |
VARBINARY | Byte[] |
SAP HANA 싱크
현재 SAP HANA 커넥터는 싱크로 지원되지 않습니다. 일반 ODBC 커넥터를 SANA HANA 드라이버와 사용하여 SAP HANA로 데이터를 쓸 수 있습니다.
필수 조건을 따라 자체 호스팅 통합 런타임을 설정하고 SAP HANA ODBC 드라이버를 먼저 설치합니다. 다음 예제와 같이 ODBC 연결된 서비스를 만들어 SAP HANA 데이터 저장소에 연결하고, 그에 따라 ODBC 형식의 데이터 세트 및 복사 작업 싱크를 만듭니다. ODBC 커넥터 문서에서 자세히 알아보세요.
{
"name": "SAPHANAViaODBCLinkedService",
"properties": {
"type": "Odbc",
"typeProperties": {
"connectionString": "Driver={HDBODBC};servernode=<HANA server>.clouddatahub-int.net:30015",
"authenticationType": "Basic",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
조회 작업 속성
속성에 대한 자세한 내용을 보려면 조회 작업을 확인하세요.
관련 콘텐츠
복사 작업에서 원본 및 싱크로 지원되는 데이터 저장소 목록은 지원되는 데이터 저장소를 참조하세요.