SAP Table 일괄 소스

이 페이지에서는 SAP 애플리케이션 데이터에서 일괄 추출을 구성하는 방법을 설명합니다.

SAP Table 일괄 소스 플러그인(SAP Table 플러그인)을 사용하면 SAP 표준 및 커스텀 테이블 또는 뷰에서 데이터를 읽을 수 있습니다. Cloud Data Fusion을 사용하여 SAP 애플리케이션에서 BigQuery 또는 기타 지원되는 대상 시스템으로 대량의 데이터를 수집할 수 있습니다. 이 플러그인의 주요 기능은 다음과 같습니다.

  • SAP ECC, SAP S4/HANA 또는 SAP BW를 소스 시스템으로 사용
  • 데이터 소스에서 신규 및 델타 데이터를 추적하고 추출하는 데 SAP CDC(변경 데이터 캡처)를 사용하지 않음
  • 일괄 추출 모드 사용
  • SAP Table 및 ABAP CDS 뷰를 데이터 소스로 지원
  • 애플리케이션 계층을 통해 SAP 데이터에 액세스

다음에서 데이터를 읽을 수 있습니다.

  • 투명 테이블
  • 클러스터 테이블
  • 풀 테이블
  • ABAP CDS 뷰
  • SAP BW ADSO 객체

지원되는 소프트웨어 버전

소프트웨어 버전
SAP S4/HANA SAP S4/HANA 1909 이상
SAP ECC SAP ERP6 NW 7.31 SP16 이상
SAP JCo SAP JCo 버전 3.0.20 이상
Cloud Data Fusion 6.3 이상

Google Cloud 기반 SAP에 대한 자세한 내용은 Google Cloud 기반 SAP 개요를 참조하세요.

시작하기 전에

SAP 테이블 플러그인에서 사용하는 다음 시스템과 서비스를 설정합니다.

  1. SAP ERP 시스템 구성. 이 프로세스에는 다음 단계가 포함됩니다.
    • SAP 전송 파일을 설치합니다.
    • 필요한 SAP 승인과 역할을 설정합니다.
    • SAP Java 커넥터를 설정합니다.
  2. Cloud Data Fusion에 플러그인 배포.

    • 중요: Cloud Data Fusion 버전과 호환되는 플러그인 버전을 선택하세요.
    • Cloud Data Fusion 인스턴스나 플러그인의 버전을 업그레이드하면 변경사항이 파이프라인의 기능 범위와 성능에 미치는 영향을 평가합니다.
  3. Cloud Data Fusion과 SAP 사이에 RFC 연결 설정

    • Cloud Data Fusion 인스턴스와 SAP 서버 간에 통신이 사용 설정되어 있는지 확인합니다.
    • 비공개 인스턴스의 경우 VPC 네트워크 피어링을 설정합니다.
    • SAP 시스템과 Cloud Data Fusion 인스턴스 모두 같은 프로젝트에 있어야 합니다.

플러그인 구성

  1. Cloud Data Fusion 웹 인터페이스로 이동하고 Studio를 클릭하세요.
  2. 데이터 파이프라인 - 배치가 선택되었는지 확인합니다(실시간 아님).
  3. 소스 메뉴에서 SAP Table을 클릭합니다. SAP 테이블 노드가 파이프라인에 표시됩니다.
  4. 소스를 구성하려면 SAP Table 노드로 이동하고 속성을 클릭합니다.
  5. 다음 속성을 입력합니다. 전체 목록은 속성을 참조하세요.

    1. SAP Table 노드의 라벨을 입력합니다(예: SAP tables).
    2. 다음 연결 세부정보를 입력합니다. 새 일회성 연결 또는 재사용 가능한 기존 연결을 설정할 수 있습니다.

      새로운 연결

      SAP에 일회성 연결을 추가하려면 다음 단계를 수행합니다.

      1. 연결 사용을 사용 중지합니다.
      2. 연결 섹션의 필드에 SAP 계정의 다음 정보를 입력합니다.

        1. 참조 이름 필드에 이 계보 소스를 식별하는 연결의 이름을 입력합니다.
        2. SAP 클라이언트 필드에 SAP에 있는 특정 인스턴스나 환경의 클라이언트 이름을 입력합니다. SAP 관리자가 클라이언트 이름을 제공할 수 있습니다.
        3. SAP 언어 필드에 SAP 로그온 언어를 입력합니다. 기본값은 EN(영어)입니다.
        4. 다음 연결 유형 중 하나를 선택합니다.

          • 직접(SAP 애플리케이션 서버 사용). 이 기본 유형을 선택하는 경우 SAP 애플리케이션 서버 호스트, SAP 시스템 번호, SAP 라우터 필드에 정보를 입력합니다.
          • 부하 분산(SAP 메시지 서버 사용) 이 유형을 선택하는 경우 SAP 메시지 서버 호스트, SAP 메시지 서버 서비스 또는 포트 번호, SAP 시스템 ID(SID), SAP 로그온 그룹 이름에 정보를 입력합니다.
        5. SAP Table/뷰 이름 필드에 SAP 시스템의 테이블 또는 뷰 이름을 입력합니다.

        6. SAP 사용자 인증 정보 제공: SAP 관리자에게 SAP 로그온 사용자 이름비밀번호를 요청합니다.

        7. JCo 라이브러리 Cloud Storage 경로 필드에 업로드한 SAP JCo 라이브러리 파일이 포함된 Cloud Storage의 SAP Java 커넥터(SAP JCo) 경로를 입력합니다.

        8. SAP 데이터 유형을 해당 Cloud Data Fusion 데이터 유형에 매핑하는 SAP의 메타데이터를 기반으로 스키마를 생성하려면 스키마 가져오기를 클릭합니다. 자세한 내용은 데이터 유형 매핑을 참조하세요.

        9. (선택사항) SAP의 수집 부하를 최적화하려면 다음 필드에 정보를 입력합니다.

          1. 필터 옵션을 사용하면 정의된 값 집합이 있는 열과 같은 선택 조건을 기준으로 레코드를 추출할 수 있습니다. WHERE 절에서 OpenSQL 구문으로 조건을 정의합니다. 예를 들어 이 쿼리는 Roster 테이블의 모든 행을 반환합니다. 여기서 SchoolID 열에는 SchoolID > 52 값이 포함됩니다.

            SELECT * FROM Roster WHERE SchoolID > 52;
            

            자세한 내용은 지원되는 필터를 참조하세요.

          2. 가져올 행 수 필드에 행에 대한 양의 정수를 입력하여 추출되는 데이터를 제한할 수 있습니다.

          3. 분할 수 필드에서 데이터 레코드를 동시에 추출할 파티션을 만들 수 있습니다. 이렇게 하면 성능이 향상됩니다. 분할 수는 SAP 작업 프로세스에 영향을 미칠 수 있으므로 신중하게 분할 수를 선택해야 합니다.

          4. 패키지 크기 필드에 단일 SAP 네트워크 호출에서 추출할 레코드 수를 지정합니다. 패키지 크기는 성능과 사용할 수 있는 리소스에 영향을 미치므로 신중하게 패키지 크기를 선택해야 합니다.

      재사용 가능한 연결

      기존 연결을 재사용하려면 다음 단계를 수행합니다.

      1. 연결 사용을 사용 설정합니다.
      2. 연결 찾아보기를 클릭합니다.
      3. 연결 이름을 클릭합니다.

      연결이 없는 경우 재사용 가능한 연결을 만들려면 다음 단계를 수행합니다.

      1. 연결 추가 > SapTable을 클릭합니다.
      2. SapTable 연결 만들기 페이지가 열리면 연결 이름과 설명을 입력합니다.
      3. SAP 클라이언트 필드에 SAP의 특정 인스턴스나 환경의 클라이언트 이름을 입력합니다. SAP 관리자가 클라이언트 이름을 제공할 수 있습니다.
      4. SAP 언어 필드에 SAP 로그온 언어를 입력합니다. 기본값은 EN(영어)입니다.
      5. 다음 연결 유형 중 하나를 선택합니다.

        • 직접(SAP 애플리케이션 서버 사용). 이 기본 유형을 선택하는 경우 SAP 애플리케이션 서버 호스트, SAP 시스템 번호, SAP 라우터 필드에 정보를 입력합니다.
        • 부하 분산(SAP 메시지 서버 사용) 이 유형을 선택하는 경우 SAP 메시지 서버 호스트, SAP 메시지 서버 서비스 또는 포트 번호, SAP 시스템 ID(SID), SAP 로그온 그룹 이름에 정보를 입력합니다.
      6. SAP 사용자 인증 정보 제공: SAP 관리자에게 SAP 로그온 사용자 이름비밀번호를 요청합니다.

      7. JCo 라이브러리 Cloud Storage 경로 필드에 업로드한 SAP JCo 라이브러리 파일이 포함된 Cloud Storage의 SAP Java 커넥터(SAP JCo) 경로를 입력합니다.

      8. (선택사항) 추가 SAP 연결 속성 필드에 SAP JCo 기본값을 재정의해야 하는 키-값 쌍을 입력합니다.

      9. 만들기를 클릭합니다.

속성

속성 매크로 사용 설정 필수 속성 설명
라벨 아니요 데이터 파이프라인의 노드 이름입니다.
연결 사용 아니요 아니요 재사용 가능한 연결을 사용합니다. 연결이 사용되면 사용자 인증 정보를 제공할 필요가 없습니다. 자세한 내용은 연결 관리를 참조하세요.
참조 이름 아니요 연결 사용이 사용 설정되지 않으면 이 필드가 표시됩니다. 계보에 사용할 연결의 이름입니다.
이름 아니요 연결 사용이 사용 설정되면 이 필드가 표시됩니다. 재사용 가능한 연결의 이름입니다.
SAP 클라이언트 SAP 시스템의 인스턴스나 환경입니다.
스냅샷 만들기 SAP에서 데이터 스냅샷을 사용 설정합니다.
스냅샷을 사용 설정해야 하는 경우:
  • 활성 트랜잭션 테이블 데이터에서 추출
  • 데이터 쿼리가 느리고 추출 호출마다 더 많은 메모리를 사용하는 테이블에서 추출

스냅샷을 사용 중지해야 하는 경우: 대량의 데이터 추출 여러 개를 동시에 실행하는 경우 스냅샷은 SAP의 버퍼 테이블을 사용하므로 SAP에서 out of memory 문제가 발생할 수 있습니다. 하지만 데이터 추출이 완료되면 버퍼 테이블은 지워집니다.
SAP 언어 SAP 사용자 인터페이스와 데이터가 표시되고 처리되는 언어입니다.
연결 유형 아니요 SAP 연결 유형: 직접 또는 부하 분산.
SAP 애플리케이션 서버 호스트 아니요 직접 연결 유형 한정으로, 이 호스트 이름은 SAP 클라이언트(예: SAP 웹 인터페이스, 웹브라우저 또는 모바일 앱)와 기본 데이터베이스 사이의 미들웨어 레이어로 작용하는 SAP 애플리케이션 서버에서 옵니다.
SAP 시스템 번호 아니요 직접 연결 유형의 경우에만 이 번호는 각 SAP 시스템에 할당된 고유 식별자입니다. 예를 들면, 00입니다.
SAP 라우터 아니요 직접 연결 유형의 경우에만 SAP 시스템과 외부 클라이언트 또는 파트너 간의 통신에 사용되는 보안 채널을 제공하는 프록시 서버의 라우터 문자열입니다.
SAP 메시지 서버 호스트 아니요 부하 분산 연결 유형의 경우에만 SAP의 여러 애플리케이션 서버 간에 부하를 용이하게 분산할 수 있게 해주는 호스트의 이름입니다.
SAP 메시지 서버 서비스 또는 포트 번호 아니요 부하 분산 연결 유형의 경우에만 SAP 메시지 서버가 SAP 내 SAP 클라이언트와 애플리케이션 서버의 수신 연결을 리슨하는 네트워크 포트입니다.
SAP 시스템 ID(SID) 아니요 부하 분산 연결 유형의 경우에만 이 ID가 각 SAP 시스템에 할당됩니다.
SAP 로그온 그룹 이름 아니요 여러 SAP 애플리케이션 서버의 논리적 그룹 또는 구성의 이름입니다. 기본값은 PUBLIC입니다.
SAP Table/뷰 이름 모든 열을 추출할 수 있는 유효한 테이블 또는 뷰 이름(대소문자를 구분하지 않음)
SAP 로그온 사용자 이름 SAP 사용자 이름
권장: 사용자 이름이 주기적으로 변경되는 경우에는 매크로를 사용합니다.
SAP 로그온 비밀번호 SAP 비밀번호입니다.
권장: 보안 매크로를 사용합니다.
GCP 프로젝트 ID Google Cloud 프로젝트 ID입니다.
SAP JCo 라이브러리 GCS 경로 SAP JCo 라이브러리 파일을 업로드한 Cloud Storage의 경로입니다.
스키마 가져오기 해당 사항 없음 해당 사항 없음 플러그인은 SAP의 메타데이터를 기반으로 SAP 데이터 유형을 해당 Cloud Data Fusion 데이터 유형에 매핑하는 스키마를 생성합니다. 데이터 유형 매핑을 참조하세요.
추가 SAP 연결 속성 아니요 추가적인 SAP JCo 속성을 설정하여 SAP JCo 기본값을 재정의합니다. 예를 들어 jco.destination.pool_capacity = 10을 설정하면 기본 연결 풀 용량이 재정의됩니다.
필터 아니요 SQL WHERE 절을 사용하여 필터링하는 Open SQL 구문에 지정된 조건입니다. 정의된 값 집합이나 값 범위가 있는 열과 같은 조건을 기준으로 레코드를 추출합니다.
자세한 내용은 지원되는 필터를 참조하세요.
가져올 행 수 아니요 추출된 레코드 수 제한
  • 양수를 입력하세요.
  • 값이 0이거나 비워 두면 Cloud Data Fusion이 테이블에서 모든 레코드를 추출합니다.
  • 다른 필터 값을 기준으로 선택한 레코드 수보다 큰 양의 수를 입력하면 Cloud Data Fusion은 선택한 레코드만 추출합니다.
생성할 분할 수 아니요 병렬로 레코드를 추출할 파티션을 만듭니다.
런타임 엔진은 레코드를 추출하는 동안 지정된 수의 파티션(및 SAP 연결)을 만듭니다.
이 값을 늘리면 SAP와의 동시 연결 수가 증가하므로 주의하세요.
권장: 각 파이프라인에 대한 SAP 연결과 동시에 실행되는 총 파이프라인 수를 계획하세요.
값이 0이거나 비워 두면 Cloud Data Fusion에서 사용 가능한 실행자 수, 추출할 레코드 수, 패키지 크기를 기준으로 적절한 값을 선택합니다.
패키지 크기 아니요 단일 SAP 네트워크 호출에서 추출할 레코드 수입니다. 네트워크 추출이 호출될 때마다 SAP가 메모리에 버퍼링하는 레코드 수입니다.
이 속성을 설정할 때는 주의하세요.. 데이터를 추출하는 데이터 파이프라인이 여러 개 있으면 메모리 사용량이 최고치에 다다를 수 있으며 Out of memory 오류로 인해 실패할 수 있습니다.
  • 양수를 입력하세요.
  • 0이거나 비워 두면 플러그인에서는 표준 값(70000)이나 적절하게 계산된 값을 사용합니다.
  • 데이터 파이프라인이 Out of memory 오류로 인해 실패하면 패키지 크기를 줄이거나 SAP 작업 프로세스에 사용할 수 있는 메모리를 늘립니다.

지원되는 필터

다음과 같은 필터 조건이 지원됩니다.

비교 연산자가 포함된 필터

비교 연산자를 사용하여 값 간의 비교를 기반으로 더욱 복잡한 필터링을 수행합니다.

구문
    SELECT * FROM table_name WHERE column_name > value; \
    SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2;
    
AUDAT GT '20230914'

LIKE 연산자가 포함된 필터

패턴 일치에는 LIKE 연산자를 사용합니다. 문자와 일치시키려면 % 기호를 와일드 카드로 사용합니다.

구문
    SELECT * FROM table_name WHERE column_name LIKE 'pattern%';
    
ERNAM LIKE 'KIRAN%'

IN 연산자가 포함된 필터

IN 연산자를 사용하여 일치시킬 값 목록을 지정합니다.

구문
    SELECT * FROM table_name WHERE column_name \
      IN ('value1', 'value2', 'value3');
    
ERNAM IN ( 'LEE' , 'KIRAN' )

논리 연산자가 포함된 필터

논리 연산자를 사용하여 일치시킬 값 목록을 지정합니다.

구문
    SELECT * FROM table_name WHERE condition1 AND condition2; \
      SELECT * FROM table_name WHERE condition1 OR condition2; \
      SELECT * FROM table_name WHERE NOT condition;
    
예시
  • ( AUDAT EQ '20220615' ) AND ( ERNAM LIKE 'LEE%' )
  • ( AUDAT EQ '20220615' ) OR ( AUDAT EQ '20220617' )

기간을 포함하는 필터

기간을 사용하여 날짜/시간 열이 특정 기간 내에 있는 행을 검색합니다.

구문
    SELECT * FROM table_name \
      WHERE datetime_column >= 'start_date' AND datetime_column <= 'end_date';
    
AUDAT GE '20230910' AND AUDAT LE '20230914'

날짜 비교가 포함된 필터

날짜 비교를 사용하여 날짜/시간이 사용된 행을 검색합니다.

구문
    SELECT * FROM table_name WHERE datetime_column > 'target_date';
    
AUDAT GE '20230910' AND AUDAT LE '20230914'

날짜와 시간을 결합한 필터

날짜/시간 열에 날짜와 시간이 모두 포함되어 있으면 적절하게 필터링할 수 있습니다.

구문
    SELECT * FROM table_name \
      WHERE datetime_column >= 'target_datetime' \
      AND datetime_column <= 'target_datetime';
    
TIMESTAMP GE '20210602144800' AND TIMESTAMP LE '20210624080836'

(타임스탬프 형식: YYYYMMDDHHMMSS)

논리 연산자를 사용하여 여러 조건을 결합하는 필터

ANDOR 같은 논리 연산자를 사용하여 여러 조건을 충족하는 행을 검색할 수 있습니다.

구문
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' AND column2 > value2) \
      OR (column3 = 'value3' AND column4 < value4);
    
    ( ERNAM EQ 'LEE' AND AUDAT GT '20220722' ) \
      OR ( BSTNK EQ 'PO54321065' AND BSTDK LT '20220714' )
    

중첩된 조건을 결합하는 필터

조건을 중첩 방식으로 결합하여 복잡한 필터를 만들 수 있습니다.

구문
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' OR (column2 = 'value2' AND column3 > value3)) \
      AND column4 = 'value4';
    
    ( ERDAT EQ '20220722' OR ( ERNAM EQ 'LEE' AND VDATU GT '20210623' ) ) \
      AND FMBDAT EQ '20220722'
    

하위 쿼리를 사용하는 필터

하위 쿼리를 사용하여 다른 쿼리의 결과를 기준으로 필터링할 수 있습니다.

구문
    SELECT * FROM table_name \
      WHERE column1 IN (SELECT related_column FROM other_table WHERE condition);
    
VBELN IN ( SELECT VBELN FROM VBAK WHERE ERNAM = 'LEE' )

날짜 및 값 조건을 결합한 필터

복잡한 필터에서 날짜 기반 조건과 값 기반 조건을 결합할 수 있습니다.

구문
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' OR column2 = 'value2') \
      AND datetime_column > 'target_datetime';
    
    ( ERDAT EQ '20220722' OR ERNAM EQ 'LEE' ) AND VDATU GT '20210623'
    

날짜 형식이 포함된 필터

SAP에서는 날짜 및 시간 필드가 항상 데이터베이스 수준에서 - 또는 : 없이 저장됩니다.

구문
    SELECT * FROM table_name \
      WHERE datetime_column >= 'YYYY-MM-DD HH:MM:SS' \
      AND datetime_column <= 'YYYY-M
    

지원되지 않음: 함수와 비교 연산자가 포함된 필터

SAP에서는 QUERY의 WHERE 절에 있는 함수가 지원되지 않습니다.

지원되지 않음: 간격을 포함하는 필터

SAP에서는 NOW() 함수가 지원되지 않습니다.

구문
    SELECT * FROM table_name \
      WHERE datetime_column >= NOW() - INTERVAL X DAY;
    

지원되지 않음: 날짜 구성요소를 추출하는 필터

SAP에서는 오프셋 필터링이 지원되지 않습니다.

    WHERE YEAR+0(4) = 2023
    

데이터 유형 매핑

다음 표에는 SAP 데이터 유형과 이에 해당하는 Cloud Data Fusion 유형이 나와 있습니다.

SAP 데이터 유형 ABAP 유형 SAP 설명 Cloud Data Fusion 데이터 유형
INT1 (숫자) b 1바이트 정수 int
INT2 (숫자) s 2바이트 정수 int
INT4 (숫자) i 4바이트 정수 int
INT8 (숫자) 8 8바이트 정수 long
DEC (숫자) p BCD 형식의 압축 번호(DEC) 십진수
DF16_DEC, DF16_RAW (숫자) a 10진 부동 소수점 8바이트 IEEE 754r double
DF34_DEC, DF34_RAW (숫자) e 10진 부동 소수점 16바이트 IEEE 754r double
FLTP (숫자) f 바이너리 부동 소수점 수 double
CHAR, LCHR (문자) c 문자열 문자열
SSTRING, GEOM_EWKB (문자) 문자열 문자열 문자열
STRING (문자) 문자열 문자열 CLOB 바이트
NUMC, ACCP (문자) n 숫자 텍스트 문자열
RAW, LRAW (바이트) x 바이너리 데이터 바이트
RAWSTRING (바이트) xstring 바이트 문자열 BLOB 바이트
DATS (날짜/시간) d 날짜 날짜
TIMS (날짜/시간) t 시간 시간
TIMS (날짜/시간) utcl (Utclong), TimeStamp timestamp

사용 사례

두 가지 추출 컨텍스트가 지원됩니다.

  • SAP 데이터베이스 테이블 및 뷰
  • SAP ABAP CDS

각 컨텍스트에서 SAP Table 플러그인은 표준 및 커스텀 데이터베이스 테이블과 뷰를 지원합니다.

제한사항

SAP 테이블 플러그인에는 다음과 같은 제한사항이 있습니다.

  • 테이블 조인은 지원되지 않습니다.
  • 파라미터가 있는 CDS 뷰는 지원되지 않습니다.
  • 키 필드가 없으면 지원되지 않습니다.
  • 스냅샷 기능이 사용 설정된 경우 패키지 크기가 30,000을 초과하면 파이프라인이 실패할 수 있습니다. 이 패키지 크기는 SAP Table의 열 수에 따라 달라질 수 있습니다. 행 크기(문자 수) * 5 수식을 사용하여 테이블의 최적 패키지 크기를 계산할 수 있습니다.
  • 연결 관리자를 사용하면 최대 1,000개의 SAP Table 이름을 찾아볼 수 있습니다.
  • 싱크 오류와 같은 파이프라인 오류가 발생하면 SAP Table 플러그인은 정리를 위한 커스텀 RFM을 호출하여 추출과 관련된 활성 SAP 측 프로세스를 정리하려고 시도합니다: /GOOG/RFC_READ_TABLE_CLEANUP.

다음 단계