Dataform에서 지연 변경 측정기준 사용

이 문서에서는 오픈소스 패키지를 사용하는 예시로 Dataform에서 오픈소스 지연 변경 측정기준 패키지를 사용하는 방법을 설명합니다.

지연 변경 측정기준 패키지에는 유형 2 지연 변경 측정기준 테이블을 Dataform의 변경 가능한 데이터 소스에서 만들기 위한 일반적인 데이터 모델이 포함되어 있습니다.

지연 변경 측정기준 테이블은 고객 또는 제품과 같은 정기적인 일정에 의하지 않고 예기치 않게 변경될 수 있는 데이터가 포함된 증분 테이블입니다. 유형 2 지연 변경 측정기준 테이블에서 기존 테이블 행을 덮어쓰지 않고 새 데이터가 새 행에 추가됩니다. 테이블 기록은 지연 변경 측정기준 키에 있는 지정된 키의 여러 레코드에서 보존됩니다. 각 레코드에는 고유한 키가 있습니다.

지연 변경 측정기준 패키지는 지정된 NAME에 대해 BigQuery에 다음 관계를 만듭니다.

  • NAME - scd_valid_fromscd_valid_to 필드가 있는 뷰
  • NAME_updates - 소스 테이블의 변경 내역을 저장하는 증분 테이블

Dataform은 지연 변경 측정기준 증분 테이블을 실행할 때마다 지연 변경 측정기준을 업데이트합니다. 캡처하려는 변경사항의 세부사항에 따라 매일 또는 매시간 실행되도록 지연 변경 측정기준 테이블을 예약할 수 있습니다.

Dataform 실행을 예약하는 방법을 알아보려면 Cloud Composer로 실행 예약 또는 Workflows 및 Cloud Scheduler로 실행 예약을 참조하세요.

시작하기 전에

  1. 지연 변경 측정기준 출시 페이지에서 최신 출시 버전의 .tar.gz URL을 복사합니다.
  2. Dataform 저장소를 만듭니다.
  3. 저장소에서 작업공간을 만들고 초기화합니다.
  4. Dataform 저장소에 지연 변경 측정기준 패키지를 설치합니다.

필요한 역할

패키지를 구성하는 데 필요한 권한을 얻으려면 관리자에게 작업공간의 Dataform 편집자(roles/dataform.editor) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

지연 변경 측정기준 패키지를 사용하여 지연 변경 측정기준 테이블 만들기

Dataform에서 지연 변경 측정기준 패키지를 사용하여 지연 변경 측정기준 테이블을 만들려면 다음 단계를 따르세요.

  1. 파일 창에서 definitions/ 옆에 있는 더보기 메뉴를 클릭합니다.

  2. 파일 만들기를 클릭합니다.

  3. 새 파일 만들기 창에서 다음을 수행합니다.

    1. 파일 경로 추가 필드에 definitions/ 다음에 파일 이름을 입력하고 .js를 입력합니다. 예를 들면 definitions/definitions.js입니다.

    2. 파일 만들기를 클릭합니다.

  4. 파일 창에서 새로 만든 .js 파일을 선택합니다.

  5. 다음 형식으로 패키지를 파일로 가져옵니다.

     const CONSTANT-NAME = require("dataform-scd");
    

    CONSTANT-NAME을 상수 이름(예: scd)으로 바꿉니다.

  6. 지연 변경 측정기준 테이블을 다음 형식으로 만듭니다.

    scd("source_data_scd", {
      uniqueKey: "UNIQUE_ID",
      timestamp: "UPDATED_AT", // A field that stores a timestamp or date of when the row was last changed.
      source: {
        schema: "SOURCE_SCHEMA",     // The source table to build slowly changing dimensions from.
        name: "SOURCE_SCHEMA_NAME",
      },
      incrementalConfig: {        // Any configuration parameters to apply to the incremental table that will be created.
        bigquery: {
          partitionBy: "UPDATED_AT",
        },
      },
    });
    

    다음을 바꿉니다.

    • UNIQUE_ID: 테이블에 있는 행의 고유 식별자
    • UPDATED_AT: 행이 마지막으로 변경된 때의 타임스탬프 또는 날짜를 저장하는 필드의 이름(예: updated_at)
    • SOURCE_SCHEMA: 소스 테이블의 스키마(예: dataform_scd_example)
    • SOURCE_SCHEMA_NAME: 소스 디스크 이름(예: source_data)
  7. (선택사항): 형식을 클릭합니다.

다음 코드 샘플은 지연 변경 측정기준 패키지로 생성된 지연 변경 측정기준 테이블 정의를 보여줍니다.

const scd = require("dataform-scd");

/**
 * Create an SCD table on top of the table defined in source_data.sqlx.
 */
const { updates, view } = scd("source_data_scd", {
  // A unique identifier for rows in the table.
  uniqueKey: "user_id",
  // A field that stores a timestamp or date of when the row was last changed.
  timestamp: "updated_at",
  // The source table to build slowly changing dimensions from.
  source: {
    schema: "dataform_scd_example",
    name: "source_data",
  },
  // Any tags that will be added to actions.
  tags: ["slowly-changing-dimensions"],
  // Documentation of table columns
  columns: {user_id: "User ID", some_field: "Data Field", updated_at: "Timestamp for updates"},
  // Configuration parameters to apply to the incremental table that will be created.
  incrementalConfig: {
    bigquery: {
      partitionBy: "updated_at",
    },
  },
});

// Additional customization of the created models can be done by using the returned actions objects.
updates.config({
  description: "Updates table for SCD",
});

다음 단계