스트리밍 데이터 | Qlik Cloud 도움말
기본 콘텐츠로 건너뛰기 보완적인 콘텐츠로 건너뛰기

스트리밍 데이터

온보딩 프로세스는 소스에서 데이터를 전송하여 Iceberg 테이블에 저장합니다. 스트리밍 데이터 소스의 변경 사항은 거의 실시간으로 스토리지 테이블에 지속적으로 적용됩니다.

데이터 온보딩

데이터는 파이프라인 프로젝트 내에서 온보딩되며 데이터 집합은 프로젝트 설정에 정의된 S3 위치에 저장됩니다.

  1. 프로젝트에서 생성을 클릭한 다음 데이터 온보딩을 클릭합니다.

  2. 온보딩에 대한 작업 이름 및 선택적 설명을 추가합니다.

    다음을 클릭합니다.

  3. 소스 연결을 선택합니다.

    기존 스트리밍 소스 연결을 선택하거나 소스에 대한 새 연결을 생성할 수 있습니다.

    자세한 내용은 데이터 스트림에 연결를 참조하십시오.

    다음을 클릭하고 데이터 소스에 대한 아래 지침을 팔로우하십시오.

데이터 선택

Apache Kafka

목록에는 소스 연결에 정의된 클러스터에서 사용 가능한 Kafka 토픽이 표시됩니다.

토픽을 선택할 때 특정 데이터 집합을 선택할 수 있습니다. 또한 선택 규칙을 사용하여 데이터 집합 그룹을 포함하거나 제외할 수 있습니다.

  • %를 와일드카드로 사용하여 데이터 집합에 대한 선택 기준을 정의합니다.

선택 규칙을 사용하여 토픽을 선택한 경우 모든 데이터 집합을 동일한 대상 테이블에 로드할지 아니면 각 소스 토픽에 대해 별도의 대상 테이블을 생성할지 선택할 수 있습니다.

  • 기본적으로 대상 Iceberg 테이블 이름은 토픽 이름에서 파생되며 명명 규칙(예: 소문자, 공백 제거, 대시를 밑줄로 교체)을 준수하도록 형식이 지정됩니다. 대상 데이터 집합 이름 정의에서 대상 테이블의 이름을 편집할 수 있습니다.

  • 선택 규칙을 사용하여 여러 토픽을 단일 테이블에 로드하는 경우 대상 이름을 제공해야 합니다.

  • 선택 규칙을 사용하고 데이터가 별도의 테이블(토픽당 하나의 데이터 집합)에 로드되는 경우 기본 대상 이름은 토픽 이름입니다. 이 단계에서는 마법사에서 이름을 편집할 수 없지만 나중에 랜딩 작업에서 수행할 수 있습니다.

  • 수집할 토픽을 선택하도록 규칙이 구성된 경우 랜딩 작업 설정의 스키마 진화 아래에 있는 새 토픽  > 대상에 추가 옵션이 선택되어 있으면 규칙 기준을 충족하는 모든 새 토픽도 랜딩됩니다.

하나 이상의 데이터 집합을 선택하거나 선택 규칙을 사용하고 추가를 클릭합니다. 다음을 클릭합니다.

Amazon Kinesis

목록에는 소스 연결에 정의된 사용 가능한 Kinesis 스트림이 표시됩니다.

하나 이상의 데이터 집합을 선택하고 추가를 클릭합니다. 선택한 스트림 아래에서 추가된 데이터 집합을 볼 수 있습니다. 다음을 클릭합니다.

Amazon S3

디렉터리 브라우저에는 소스 연결의 S3 버킷에 있는 모든 디렉터리 목록이 표시됩니다. 

정보 메모데이터 패턴을 사용하여 디렉터리를 선택하면 성능이 향상될 수 있습니다.
  • 데이터를 랜딩할 때 포함할 디렉터리를 선택합니다.

    • 각 디렉터리에 대해 경로 추가에 경로 및 파일 이름 패턴을 입력합니다.

      • *를 와일드카드로 사용하여 모든 문자와 일치시킵니다.

      • 날짜 패턴을 입력하려면 <yyyy>를 4자리 연도 자리 표시자로, <MM>을 2자리 월 자리 표시자로, <dd>를 2자리 일 자리 표시자로, <HH>를 2자리 시간 자리 표시자로 사용합니다. 예:

        • MyDir3/<yyyy>_<MM>_<dd>_<HH>_orders.csv

        • MyDir3/<yyyy>/<MM>/<dd>/<HH>_orders.csv

  • 미리 보기를 클릭하여 데이터 미리 보기 대화 상자를 엽니다. 포함 및 제외된 파일 목록이 표시됩니다.

  • 유효성 검사를 클릭하여 경로와 파일 이름 패턴이 올바르고 작동하는지 확인합니다.

  • 대상 데이터 집합 이름 정의에서 토픽을 대상 Iceberg 테이블에 맵할 이름을 제공합니다. 다음을 클릭합니다.

콘텐츠 유형 선택

소스 이벤트 콘텐츠 유형을 선택합니다.

  • 데이터 이벤트 유형 선택에서 수집할 이벤트 유형을 선택합니다.

  • 자세한 내용은 데이터 스트림에 연결를 참조하십시오.

    선택한 콘텐츠 유형은 모든 토픽, 데이터 집합 또는 데이터 이벤트에 적용됩니다. 수집하려는 각 콘텐츠 유형에 대해 새 작업을 생성해야 합니다.

  • 이벤트가 올바르게 로드되었는지 확인을 확장하여 데이터를 구문 분석할 수 있는지 확인합니다. 이 단계에서 데이터가 올바른지 확인하는 것이 좋습니다. 그렇지 않으면 파이프라인을 다시 생성하고 데이터를 다시 로드해야 합니다. 데이터 집합 선택을 사용하여 특정 데이터 집합을 검사하고 데이터 로드에 영향을 줄 수 있는 경고를 확인합니다. 구조체 열 옆에 있는 눈 모양 아이콘을 클릭하여 데이터를 봅니다.

  • 다음을 클릭합니다.

정보 메모데이터 집합에 대해 감지된 이벤트가 없으면 랜딩에 메시지가 표시됩니다. 읽을 이벤트가 있을 때 작업을 실행해야 하며 열이 자동으로 추가됩니다.

수집 속성 설정

파이프라인에 대한 설정을 구성합니다.

  • 데이터 읽기 위치

    • 가장 빠른 이벤트부터 시작: 모든 기록 데이터를 수집합니다.

    • 지금부터 시작: 파이프라인이 시작된 시점부터 도착하는 새 데이터를 수집합니다.

  • 열 중첩 해제

    • 중첩된 열 보존: 변환이 적용되지 않습니다.

    • 별도의 열로 중첩 해제: 데이터가 별도의 열로 분할됩니다.

  • 새 데이터 집합에 대한 로드 설정

    • 추가 전용: 일반적으로 수명이 짧고 업데이트되지 않으므로 이벤트 데이터에 가장 적합한 옵션입니다(예: 주문).

    • 변경 사항 적용: 시간이 지남에 따라 업데이트되는 데이터에 가장 적합합니다(예: 고객). 키 필드를 기반으로 기존 레코드를 업데이트하고 새 레코드를 삽입합니다. 나중에 작업을 정의할 때 키 필드를 지정해야 합니다.

  • 대상 테이블 파티션

    대상 테이블 파티션 옵션은 파이프라인의 모든 테이블에 적용됩니다. 나중에 테이블 수준에서 이를 재정의하여 사용자 지정 파티셔닝을 정의할 수 있습니다.

    정보 메모이 옵션은 로드 설정에서 추가 전용을 선택한 경우에만 사용할 수 있습니다.
    • 파티션 없음: 테이블이 파티셔닝 없이 생성됩니다.

    • 이벤트 수집 날짜별 파티션: 테이블이 이벤트가 수집된 날짜별로 파티셔닝됩니다.

      정보 메모이 옵션을 hdr__from_timestamp 헤더 열 옵션과 함께 선택하면 hdr__from_timestamp가 기본 파티션 열로 사용됩니다. 표준 보기에 hdr__from_timestamp 헤더 열을 추가하는 방법에 대한 자세한 내용은 Table definitions를 참조하십시오.
  • 데이터 변경 처리

    정보 메모이 옵션은 로드 설정에서 변경 사항 적용을 선택한 경우에만 사용할 수 있습니다.
    • 소프트 삭제 포함: 삭제할 레코드를 정의하는 표현식을 입력합니다.

    • 기록 데이터 저장소 생성(유형 2): 변경된 레코드의 이전 버전을 유지합니다.

  • 다음을 클릭합니다.

요약

요약 화면은 파이프라인의 시각적 표시를 제공합니다.

  • 선택적으로 스트리밍 랜딩 및 스트리밍 변환 작업의 경우 이름 및 설명 편집을 클릭하여 새 값을 제공할 수 있습니다.

  • 파이프라인이 생성된 후 수행할 작업에 대한 옵션을 선택합니다.

  • 모든 설정을 구성했으면 생성을 클릭하여 스트리밍 파이프라인을 생성합니다.

  • 프로젝트가 표시되면 각 작업을 준비하고 실행하여 데이터 수집을 시작할 수 있습니다.

데이터 유형 매핑

초기 소스 스키마는 파이프라인 프로젝트를 생성할 때 PREPARE 단계 이전에 가져온 데이터 샘플을 기반으로 하며 스키마 진화는 읽기 시간에 처리됩니다. STRUCT 및 ARRAY를 지원하지 않는 미러 작업 및 기타 다운스트림 작업은 JSON 유형을 사용합니다. 데이터는 SQL을 사용하여 구문 분석할 수 있습니다.

다음 데이터 유형 매핑은 지원되는 모든 데이터 소스에 적용되지만 소스 파일 유형에 따라 다르며 다음 사항에 유의해야 합니다.

  • 데이터 유형은 온보딩되는 데이터의 샘플에서 유추됩니다. 예를 들어 필드에 샘플의 정수 값만 포함된 경우 스트리밍 랜딩 및 변환 작업에서 INT8로 생성됩니다. 후속 데이터에 배정밀도 소수 값이 포함된 경우 랜딩 파일에 해당 값이 포함됩니다. 그러나 스트리밍 변환 작업에서 필드 데이터 유형 변경 설정이 무시로 설정된 경우 열은 INT8로 유지되고 소수 값은 잘립니다. 의도하지 않은 잘림을 방지하려면 온보딩 전에 샘플 데이터에 예상 값의 전체 범위가 포함되어 있는지 확인하거나 초기 단계에서 필드 데이터 유형 변경작업 중지로 구성하고 필요에 따라 데이터 유형을 조정하십시오.

  • 소스의 구조체에 필드가 추가되면 항상 랜딩 대상에 추가됩니다. 스트리밍 변환의 경우 스트리밍 변환 작업 설정 > 스키마 진화 > 구조체에 필드 추가(대상에 적용, 무시, 작업 중지)에서 선택한 옵션에 따라 동작이 적용됩니다.

  • 특정 레코드에 필드가 없거나 배열이 비어 있으면 null로 처리됩니다.

  • 데이터 집합이 배열에 의해 평면화되고 해당 배열이 비어 있거나 null인 레코드가 도착하면 시스템은 하나의 행을 생성하고 평면화된 필드는 null이 됩니다. 자동으로 제외되지 않습니다. 이러한 행을 제외하려면 수동으로 필터를 추가합니다(예: array_element IS NOT NULL).

  • UI에 표시되는 데이터 유형은 선택한 데이터 집합 세분성을 반영합니다. 평면화된 배열의 경우 배열 구조 자체가 아니라 개별 요소의 데이터 유형이 표시됩니다.

  • 새 속성은 중첩된 JSON 필드 내의 구조체 내부에 추가할 수 없으며 루트 수준에서만 추가할 수 있습니다.

  • 스트리밍 변환 작업에서 평면화는 배열의 단일 수준에 대해서만 지원됩니다. 다중 수준 배열(예: ARRAY<ARRAY<STRUCT>>)에 평면화를 적용하면 외부 배열만 평면화되어 완전히 평면화된 STRUCT가 아니라 ARRAY<STRUCT>가 됩니다. 또한 현재 UI에서는 열 수준에서만 평면화를 구성할 수 있습니다. 결과적으로 다중 수준 배열을 선택하면 암시적으로 첫 번째 배열 수준에만 평면화가 적용됩니다.

  • 기본 형식의 배열을 참조할 때 세분성이 배열인 경우 요소의 데이터 유형이 사용됩니다. 그렇지 않으면 배열 데이터 유형이 사용됩니다.

    이 예에서 OrderDetails에는 데이터 유형이 INT인 CustomerID 배열이 있습니다. OrderDetails.CustomerID는 세분성이 OrderDetails.CustomerID인 경우 INT를 의미하고 세분성이 OrderDetails인 경우 ARRAY<INT>를 의미합니다.

JSON

JSON 파일에서 소스의 숫자 값은 대상 데이터 유형을 결정합니다.

  • INT8은 지원되는 정수 범위 내에 맞고 소수 구성 요소를 포함하지 않는 정수 값에 사용됩니다.

  • REAL8(DOUBLE)은 값에 소수 구성 요소(부동 소수점 숫자)가 포함된 경우에 사용됩니다.

  • STRING은 숫자 값이 지원되는 최대 정수 범위를 초과하는 경우에 사용됩니다.

데이터 유형은 다음과 같이 매핑됩니다.

소스 데이터 유형 Qlik Talend Data Integration 데이터 유형
STRING STRING
NUMBER INT8
NUMBER REAL8
NUMBER STRING
BOOLEAN BOOLEAN
ARRAY ARRAY
OBJECT STRUCT

CSV, TSV, REGEX 및 SPLIT

기본적으로 모든 소스 데이터 유형은 문자열로 수집됩니다. 자동으로 유형 유추 옵션을 사용하여 소스 및 대상 유형을 다음과 같이 맵합니다.

소스 데이터 유형 Qlik 데이터 유형
NUMERIC INT8/REAL8
True/TRUE/true/False/FALSE/false BOOLEAN
TIMESTAMP yyyy-MM-dd HH:mm:ss 또는 yyyy-MM-ddTHH:mm:ssz 형식의 타임스탬프는 datetime 유형으로 구문 분석됩니다. 시간대가 포함된 경우 값은 문자열로 구문 분석됩니다.

Parquet

Parquet 파일은 물리적 및 논리적 데이터 유형을 지원합니다. 물리적 데이터 유형은 INT32, DOUBLE 또는 BYTE_ARRAY와 같이 값이 디스크에 저장되는 방식을 정의합니다. 논리적 데이터 유형은 물리적 표현 위에 의미론적 의미를 제공합니다(예: 정수 값이 날짜를 나타내는지 여부 식별). 논리적 유형이 Parquet 열에 연결되어 있고 Qlik 오픈 레이크하우스(아래 나열됨)에서 지원되는 경우 스트리밍 랜딩 작업은 대상 스키마를 정의할 때 기본 물리적 유형 대신 논리적 유형을 사용합니다. 이렇게 하면 데이터가 올바르게 해석되고 정밀도, 배율 및 시간적 의미와 같은 의도된 의미 체계가 보존되며 데이터가 다운스트림 형식으로 기록될 때 더 정확한 스키마가 생성됩니다.

Parquet 파일에서 소싱된 데이터는 다음과 같이 매핑됩니다.

소스 데이터 유형 논리적 유형 Qlik Talend Data Integration 데이터 유형
BOOLEAN BOOLEAN
INT32 INT8
INT64 INT8
INT96 DATETIME
FLOAT REAL8
DOUBLE REAL8
BYTE_ARRAY STRING(Base64로 인코딩됨)
FIXED_LEN_BYTE_ARRAY STRING(Base64로 인코딩됨)
BYTE_ARRAY STRING STRING
BYTE_ARRAY ENUM STRING
INT32 DECIMAL INT8
INT64 DECIMAL INT8
FIXED_LEN_BYTE_ARRAY DECIMAL INT8/REAL8(Base64로 인코딩됨)
BYTE_ARRAY DECIMAL INT8/REAL8(Base64로 인코딩됨)
INT32 DATE DATE
INT32 TIME(MILLIS,true) INT8
INT64 TIME(MICROS,true) TIME
INT64 TIMESTAMP(MICROS,true) DATETIME
INT64 TIMESTAMP(MILLIS,true) DATETIME
NESTED TYPES STRUCT
LIST ARRAY
MAP ARRAY<STRUCT>. 키-값 쌍을 나타내는 구조체의 배열입니다.

Avro

다음 매핑은 스키마 레지스트리가 있는 Avro 파일에 적용됩니다.

소스 데이터 유형 논리적 유형 Qlik Talend Data Integration 데이터 유형
BOOLEAN BOOLEAN
INT INT8
LONG INT8
FLOAT REAL8
DOUBLE REAL8
BYTES STRING
STRING STRING
RECORD STRUCT
ENUM STRING
ARRAY ARRAY
MAP ARRAY<STRUCT>
UNION
FIXED STRING
BYTES DECIMAL DECIMAL
FIXED DECIMAL DECIMAL
INT DATE DATE
INT TIME-MILLIS INT8
INT TIME-MICROS TIME
LONG TIMESTAMP-MILLIS DATETIME
LONG TIMESTAMP-MICROS DATETIME

ORC

다음 매핑은 ORC 파일에 적용됩니다.

소스 데이터 유형 Qlik Talend Data Integration 데이터 유형
BOOLEAN BOOLEAN
BYTE INT8
SHORT INT8
INT INT8
LONG INT8
DATE DATE
FLOAT REAL8
DOUBLE REAL8
TIMESTAMP DATETIME
BINARY STRING
DECIMAL REAL8
STRING STRING
VARCHAR STRING
CHAR STRING
LIST ARRAY
MAP ARRAY<STRUCT>. 키-값 쌍을 나타내는 구조체의 배열입니다.
STRUCT STRUCT
UNION

제한 사항 및 고려 사항

  • 랜딩의 자동 스키마 진화에 의해 구조체 또는 배열이 수정된 경우 Qlik Talend Cloud 스트리밍 작업에서 생성되지 않은 다운스트림 보기가 오래되지 않도록 업데이트해야 할 수 있습니다.

  • 작업에 구문 분석 오류가 있는 경우 오류 상태가 되지 않으며 주의 필요로 표시되지 않습니다. 구문 분석 오류는 항상 증가하는 지표이므로 오류 상태에 대한 종료 기준이 없습니다.

  • 클러스터 기능 제거는 해당 기능을 사용하는 작업이 없는 경우에만 허용됩니다.

  • 동일한 기본 키를 가진 레코드에 대한 업데이트 및 삭제는 파티션 경계를 넘지 않아야 합니다. 즉, 동일한 파티션에 맵되어야 합니다.

  • 소스에 많은 수의 열이 포함된 경우 빈도별 상위 500개 열만 작업 및 카탈로그에 표시됩니다. 모든 열은 S3 랜딩의 Avro 파일에 저장되지만 상위 500개 열만 Iceberg 테이블에 저장됩니다. 스키마 진화에서 새 열이 추가되면 빈번하더라도 상위 열에 추가되지 않습니다.

이 페이지가 도움이 되었습니까?

이 페이지 또는 해당 콘텐츠에서 오타, 누락된 단계 또는 기술적 오류와 같은 문제를 발견하면 알려 주십시오!