Workflows 및 Cloud Scheduler로 실행 예약

이 문서에서는 Workflows 및 Cloud Scheduler를 사용하여 Dataform SQL 워크플로의 예약된 실행을 실행하는 방법을 보여줍니다.

예약된 워크플로 실행 정보

Workflows 워크플로를 트리거하는 Cloud Scheduler 작업을 만들어 Dataform SQL 워크플로 실행 빈도를 설정할 수 있습니다. Workflows는 사용자가 정의한 조정 워크플로에서 서비스를 실행합니다.

Workflows는 Dataform SQL 워크플로를 2단계 프로세스로 실행합니다. 먼저 Git 제공업체에서 Dataform 저장소 코드를 가져와서 컴파일 결과로 컴파일합니다. 그런 다음 컴파일 결과를 사용하여 Dataform SQL 워크플로를 만들고 설정한 빈도로 실행합니다.

시작하기 전에

  1. Google Cloud 콘솔에서 Dataform 페이지로 이동합니다.

    Dataform 페이지로 이동

  2. 저장소를 선택하거나 만듭니다.

필요한 역할

Workflows를 사용해서 Dataform 실행을 예약하는 데 필요한 권한을 얻으려면 관리자에게 저장소에 대한 Dataform 편집자(roles/dataform.editor) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

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

예약된 조정 워크플로 만들기

Dataform SQL 워크플로의 예약 실행을 실행하려면 Workflows를 사용하여 조정 워크플로를 만들고 Cloud Scheduler 작업을 트리거로 추가합니다.

  1. Workflows는 서비스 계정을 사용하여 워크플로에 Google Cloud 리소스에 대한 액세스 권한을 부여합니다. 서비스 계정을 만들고 Dataform 편집기 역할과 조정 워크플로를 관리하는 데 필요한 최소 권한을 부여합니다. 자세한 내용은 워크플로에 Google Cloud 리소스에 대한 액세스 권한 부여를 참조하세요.

  2. 조정 워크플로를 만들고 다음 YAML 소스 코드를 워크플로 정의로 사용합니다.

    main:
        steps:
        - init:
            assign:
            - repository: projects/PROJECT_ID/locations/REPOSITORY_LOCATION/repositories/REPOSITORY_ID
        - createCompilationResult:
            call: http.post
            args:
                url: ${"https://dataform.googleapis.com/v1beta1/" + repository + "/compilationResults"}
                auth:
                    type: OAuth2
                body:
                    gitCommitish: GIT_COMMITISH
            result: compilationResult
        - createWorkflowInvocation:
            call: http.post
            args:
                url: ${"https://dataform.googleapis.com/v1beta1/" + repository + "/workflowInvocations"}
                auth:
                    type: OAuth2
                body:
                    compilationResult: ${compilationResult.body.name}
            result: workflowInvocation
        - complete:
            return: ${workflowInvocation.body.name}
    

    다음을 바꿉니다.

    • PROJECT_ID: Google Cloud 프로젝트의 ID
    • REPOSITORY_LOCATION: Dataform 저장소의 위치
    • REPOSITORY_ID: Dataform 저장소의 이름
    • GIT_COMMITISH: Dataform 코드를 실행할 Git 브랜치. 새로 만든 저장소의 경우 main으로 바꿉니다.
  3. Cloud Scheduler를 사용하여 조정 워크플로 예약

Dataform SQL 워크플로 만들기 컴파일 결과 요청 맞춤설정

YAML 형식으로 기존 조정 워크플로를 업데이트하고 Dataform SQL 워크플로 만들기 컴파일 결과 요청 설정을 정의할 수 있습니다. 설정에 관한 자세한 내용은 projects.locations.repositories.compilationResults REST 리소스 참조를 참고하세요.

예를 들어 컴파일 중에 모든 작업에 _dev schemaSuffix를 추가하려면 createCompilationResult 단계 본문을 다음 코드 스니펫으로 바꿉니다.

    - createCompilationResult:
        call: http.post
        args:
            url: ${"https://dataform.googleapis.com/v1beta1/" + repository + "/compilationResults"}
            auth:
                type: OAuth2
            body:
                gitCommitish: GIT_COMMITISH
                codeCompilationConfig:
                    schemaSuffix: dev

또한 Workflows 실행 요청에서 추가 설정을 런타임 인수로 전달하고 변수를 사용하여 이러한 인수에 액세스할 수 있습니다. 자세한 내용은 실행 요청에서 런타임 인수 전달을 참조하세요.

Dataform SQL 워크플로 호출 요청 맞춤설정

기존 조정 워크플로를 업데이트하고 YAML 형식으로 Dataform SQL 워크플로 호출 요청 설정을 정의할 수 있습니다. 호출 요청 설정에 대한 자세한 내용은 projects.locations.repositories.workflowInvocations REST 리소스 참조를 확인하세요.

예를 들어 모든 전이 종속 항목이 포함된 hourly 태그가 있는 작업만 실행하려면 createWorkflowInvocation 본문을 다음 코드 스니펫으로 바꿉니다.

    - createWorkflowInvocation:
        call: http.post
        args:
            url: ${"https://dataform.googleapis.com/v1beta1/" + repository + "/workflowInvocations"}
            auth:
                type: OAuth2
            body:
                compilationResult: ${compilationResult.body.name}
                invocationConfig:
                    includedTags:
                    - hourly
                    transitiveDependenciesIncluded: true
                

또한 Workflows 실행 요청에서 추가 설정을 런타임 인수로 전달하고 변수를 사용하여 이러한 인수에 액세스할 수 있습니다. 자세한 내용은 실행 요청에서 런타임 인수 전달을 참조하세요.

다음 단계