기본 콘텐츠로 건너뛰기 보완적인 콘텐츠로 건너뛰기

SQL 변환 추가

변환 작업에 SQL 기반 테이블을 포함할 수 있습니다. SQL 변환을 사용하면 파이프라인에 SQL SELECT 쿼리를 입력하여 복잡하거나 간단한 변환을 정의할 수 있습니다. 초기 로드 또는 증분 로드가 수행되는 경우 매크로를 사용하여 실행되도록 쿼리를 조정할 수도 있습니다.

변환 작업 만들기에 대한 자세한 내용은 데이터 변환을 참조하십시오.

SQL 변환 추가

변환 데이터 작업에 SQL 변환을 추가하려면 다음을 수행합니다.

  1. 변환에서 쿼리에 포함할 데이터 집합을 선택하고 SQL 변환 추가를 클릭합니다.

    변환에 대한 설정을 제공할 수 있는 SQL 변환 추가가 표시됩니다.

  2. 이름에 대상 데이터 집합의 이름을 입력합니다.

    설명에 더 긴 설명을 추가할 수도 있습니다.

  3. 구체화에서 변환된 출력을 구체화할지 여부를 선택합니다. 데이터 작업 설정에서 설정을 상속하도록 선택할 수 있습니다.

    • 켜기는 테이블을 만들고 관련 ELT 처리를 처리합니다.

    • 끄기를 선택하면 즉시 변환을 수행하는 보기가 만들어집니다.

  4. 증분 로드를 사용하면 매크로를 사용하여 처리되는 데이터 집합을 줄이기 위해 필터나 기타 조건을 적용하여 증분 데이터 로드에 대한 쿼리를 조정할 수 있습니다. 증분 로드는 데이터가 테이블로 구체화된 경우에만 사용할 수 있습니다.

    • 증분 로드켜기인 경우

      작업을 처음 실행하면 초기 로드가 수행되어 쿼리의 모든 결과가 대상 테이블에 삽입됩니다. 후속 실행에서는 증분 처리를 위해 정의한 필터 또는 특정 조건을 활용하여 증분 로드를 실행합니다. 증분 로드 중에 작업은 데이터를 업데이트 또는 삽입으로만 처리하며 삭제는 관리되지 않습니다.

    • 증분 로드끄기인 경우

      작업을 처음 실행하면 초기 로드가 수행되어 쿼리의 모든 결과가 대상 테이블에 삽입됩니다. 후속 실행에서는 대상 테이블과 비교하고 신규, 변경 또는 삭제된 레코드를 처리하여 쿼리의 모든 결과를 처리합니다.

    정보 메모쿼리가 대상에 있어야 하는 모든 레코드를 선택하는 경우 증분 로드를 끄기로 설정합니다. 선택되지 않은 레코드는 대상에서 삭제됩니다.
  5. SQL 변환을 만들 준비가 되면 추가를 클릭합니다.

    SQL 변환 편집이 표시됩니다.

  6. SELECT 쿼리에서 SQL 기반 테이블을 반환하는 쿼리를 입력합니다.

    쿼리는 선택한 소스 데이터 집합에서만 읽을 수 있지만 추가를 사용하면 더 많은 소스 데이터 집합을 추가할 수 있습니다.

    데이터 집합에서 선택할 수 있습니다.

  7. 증분 로드를 사용하는 경우 매크로를 사용하여 초기 로드 또는 증분 로드가 수행될 때 실행되도록 쿼리를 조정할 수 있습니다.

    자세한 내용은 매크로를 사용하여 로드 유형에 맞게 쿼리 조정을 참조하십시오.

  8. 매개 변수 추출을 클릭하여 SELECT 쿼리의 매개 변수를 구문 분석합니다.

    매개 변수는 소스 또는 대상 개체에 매핑되어야 합니다. 다음으로 매핑할 수 있습니다.

    • 기록 유형 2 구조(_history)

    • 현재 구조

    • 대상 개체

      증분 매크로 내에 매개 변수가 정의된 경우에만 대상 개체를 매핑할 수 있습니다.

    팁 메모매개 변수를 참조로 바꿔 더 읽기 쉬운 쿼리를 만들 수 있습니다. 매개 변수의 값을 변경하면 SELECT 쿼리의 참조도 변경됩니다.
  9. 테이블 설명을 클릭하여 쿼리 출력 메타데이터를 미리 봅니다.

    데이터 샘플을 사용하여 결과를 미리 볼 수도 있습니다.

    데이터 미리 보기

  10. 테이블에 기본 키가 있는지 확인합니다.

    메타데이터 설정을 편집할 수도 있습니다.

    • 열에 기본 키를 설정합니다.

    • Null 허용 열에서 해당 열이 Null을 허용하는지 여부를 설정합니다.

    • 열을 선택하고 편집을 클릭하여 열 이름, 키, Null 허용 및 데이터 유형을 설정합니다.

  11. 쿼리 결과에 만족하면 확인을 클릭합니다. 이제 데이터 집합이 대상 목록에 추가되었으며 미리 볼 수 있습니다.

데이터 미리 보기

데이터 샘플을 사용하여 결과를 미리 볼 수 있습니다.

정보 메모Qlik 관리 콘솔의 테넌트 수준에서 데이터 미리 보기를 활성화해야 합니다. 기능 제어 아래의 설정에 있는 데이터 통합에서 데이터 보기 옵션을 찾을 수 있습니다.

데이터를 미리 보려면 다음 역할을 할당받아야 합니다.

  • 데이터 연결이 있는 공간에서 데이터를 볼 수 있음 역할.

  • 데이터 프로젝트가 있는 공간에서 볼 수 있음 역할.

결과 미리 보기를 보려면:

  • 데이터 보기를 클릭합니다.

데이터 샘플을 사용한 결과가 표시됩니다. 행 수를 사용하여 샘플에 포함할 데이터 행 수를 설정할 수 있습니다.

다음 두 가지 방법으로 샘플 데이터를 필터링할 수 있습니다.

  • 필터을 사용하여 검색할 샘플 데이터를 필터링합니다.

    예를 들어, ${OrderYear}>2023 필터를 사용하고 행 수가 10으로 설정된 경우 2024년 주문 10개의 샘플을 가져오게 됩니다.

  • 특정 열을 기준으로 샘플 데이터를 필터링합니다.

    이는 기존 샘플 데이터에만 영향을 미칩니다. 필터을 사용하여 2024년 주문만 포함하고 열 필터를 2022년 주문을 표시하도록 설정한 경우 결과는 빈 샘플입니다.

특정 열을 기준으로 데이터 샘플을 정렬할 수 있습니다. 정렬은 기존 샘플 데이터에만 영향을 미칩니다. 필터을 사용하여 2024년 주문만 포함하고 역순으로 정렬한 경우 샘플 데이터에는 여전히 2024년 주문만 포함됩니다.

매크로를 사용하여 로드 유형에 맞게 쿼리 조정

증분 로드를 사용하는 경우 매크로를 사용하여 초기 로드 또는 증분 로드가 수행될 때 실행되도록 쿼리를 조정할 수 있습니다.

매크로를 선택하고 해당 절 안에 쿼리를 추가합니다.

  • Q_RUN_INCREMENTAL은 증분 로드가 수행될 때만 실행되는 쿼리를 배치할 수 있는 절을 추가합니다.

  • Q_RUN_INITIAL_LOAD는 초기 로드가 수행될 때만 실행되는 쿼리를 배치할 수 있는 절을 추가합니다.

각 매크로에 전체 쿼리를 지정할 필요는 없습니다. 사용 사례에 따라 코드를 조정하거나 추가할 수 있습니다.

사용 사례: 날짜 범위를 사용하는 증분 필터:

이 사용 사례에서는 주문 데이터 집합을 사용자 지정 SQL로 변환해야 합니다. 이는 대규모 데이터 집합이므로 증분 로드가 지난 12시간 동안의 주문만 고려하도록 증분 필터링을 포함하려고 합니다.

기본 쿼리는 다음과 같습니다.

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

이는 지난 12시간 동안 추가된 주문만 고려하는 증분 실행 중에 적용할 필터입니다.

WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP())
팁 메모SQL 기반 테이블을 구현할 때 테이블 이름을 ${TABLE} 표기법으로 바꾸는 것이 좋습니다. 예를 들어 개발에서 프로덕션으로 이동할 때 , 이는 환경에 따라 변경될 수 있는 데이터베이스 및 스키마 이름을 하드 코딩하는 것을 방지합니다.

이는 필터 매크로를 사용하고 테이블 이름을 ${TABLE} 표기법으로 바꾼 전체 쿼리입니다.

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() ) {{/QLIK_FUNC_IF}}

이는 초기 로드 쿼리가 됩니다.

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

증분 로드 쿼리는 다음과 같습니다.

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() )

사용 사례: 대상의 데이터를 사용하는 증분 필터:

이 사용 사례에서는 주문 데이터 집합을 사용자 지정 SQL로 변환해야 합니다. 주문은 대규모 데이터 집합이므로 증분 로드가 대상 테이블의 데이터보다 최신인 주문 세부 정보 레코드만 고려하도록 증분 필터링을 포함하려고 합니다. 또한 행이 초기 로드 또는 증분 로드에 의해 처리되었는지 표시하려고 합니다.

정보 메모이 예에서 볼 수 있듯이 매크로를 사용하여 초기 로드 또는 증분 로드에 대한 쿼리의 모든 부분을 조정할 수 있습니다.

기본 쿼리는 다음과 같습니다.

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

증분 실행 중에 적용할 필터입니다. "ORDERS_DERIVED"는 대상 데이터 집합의 이름입니다.

WHERE OD.UPDATE_DTM > = (SELECT MAX(LAST_UPDATE_DTM) FROM “mydb”,”myTrasformTask”.”ORDERS_DERIVED” )
팁 메모증분 로드는 ${TABLE} 표기법을 변환 작업으로 만들어진 대상 개체에 매핑할 수도 있습니다.

이는 필터 매크로를 사용하고 테이블 이름을 ${TABLE} 표기법으로 바꾼 전체 쿼리입니다. 초기 로드인 경우 LOADED_BYINIT로 설정되고, 로드가 증분인 경우 INCR로 설정됩니다.

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, {{#QLIK_FUNC_IF Q_RUN_INITIAL_LOAD}} ‘INIT’ as LOADED_BY {{/QLIK_FUNC_IF}} {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} ‘INCR’ as LOADED_BY {{/QLIK_FUNC_IF}} FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} ) {{/QLIK_FUNC_IF}}

이는 초기 로드 쿼리가 됩니다.

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INIT’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

증분 로드 쿼리는 다음과 같습니다.

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INCR’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} )

모범 사례

  • SQL 변환을 추가하면 기본 키가 자동으로 정의되지 않습니다. 데이터 집합 탭에서 데이터 집합에 키를 추가합니다.

  • 변환된 출력에 열 헤더를 수동으로 만들지 마십시오.

  • 쿼리가 실행될 때마다 다른 열을 반환할 수 있으므로 *와 함께 SELECT를 사용하지 마십시오. 스키마가 변경된 경우 그에 따라 쿼리를 변경하고 Describe table을 다시 수행합니다. 그런 다음 열을 편집하고 테이블을 조정할 수 있습니다.

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

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