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
복사 작업(원본/싱크)
조회 작업

① 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에 연결된 서비스를 만듭니다.

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

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

    Screenshot of the SAP HANA connector.

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

    Screenshot of linked service configuration for 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에서 병렬로 데이터를 복사하는 기본 제공 데이터 분할을 제공합니다. 복사 작업의 원본 테이블에서 데이터 분할 옵션을 찾을 수 있습니다.

Screenshot of partition options

분할된 복사를 사용하도록 설정하면 서비스가 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"
        }
    }
}

조회 작업 속성

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

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