Menjadwalkan operasi

Dokumen ini menunjukkan cara melakukan hal berikut di Dataform:

Tabel berikut membandingkan metode-metode tersebut:

Metode Sasaran Jenis Pemicu
Konfigurasi alur kerja Proses produksi standar berbasis waktu dalam Dataform. Berbasis waktu
Workflows dan Cloud Scheduler Orkestrasi Dataform yang ringan dan serverless bersama API lainnya. Berdasarkan waktu atau peristiwa
Managed Airflow Pipeline kompleks dengan dependensi di luar BigQuery. Berdasarkan waktu atau peristiwa
Pemicu Cloud Build Mengotomatiskan rilis segera setelah push Git. Berbasis peristiwa

Sebelum memulai

Untuk menjadwalkan operasi dengan konfigurasi alur kerja atau menjadwalkan operasi dengan alur kerja dan Cloud Scheduler, lakukan hal berikut:

  1. Di konsol Google Cloud , buka halaman Dataform.

    Buka Dataform

  2. Pilih atau buat repositori.

  3. Buat konfigurasi rilis.

Untuk menjadwalkan operasi dengan Managed Service untuk Apache Airflow, lakukan hal berikut:

  1. Pilih atau buat repositori Dataform.
  2. Memberikan akses Dataform ke BigQuery.
  3. Pilih atau buat ruang kerja Dataform.
  4. Buat minimal satu tabel.
  5. Buat lingkungan Managed Airflow 2.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tugas dalam dokumen ini, minta administrator untuk memberi Anda peran IAM berikut:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Untuk menggunakan akun layanan kustom saat membuat konfigurasi alur kerja, berikan akses ke akun layanan kustom.

Untuk menggunakan kredensial pengguna untuk Akun Google saat membuat konfigurasi alur kerja, berikan akses ke Akun Google.

Untuk mengaktifkan eksekusi terjadwal untuk konfigurasi alur kerja, Anda harus memberikan izin iam.serviceAccounts.actAs ke agen layanan Dataform default untuk akun layanan kustom yang digunakan dalam konfigurasi alur kerja. Izin ini tersedia dalam peran Service Account User (roles/iam.serviceAccountUser). Untuk mengetahui informasi selengkapnya, lihat Menggunakan mode act-as yang ketat.

Untuk meningkatkan keamanan penjadwalan, lihat Menerapkan izin penjadwalan yang ditingkatkan.

Untuk mencegah pengguna menjadwalkan atau menjalankan alur kerja dengan kredensial pengguna akhir, administrator organisasi dapat membuat batasan kebijakan organisasi kustom yang menolak setelan end_user_auth_config.

Menjadwalkan operasi dengan konfigurasi alur kerja

Bagian ini menunjukkan cara membuat konfigurasi alur kerja di Dataform untuk menjadwalkan dan mengonfigurasi operasi alur kerja. Anda dapat menggunakan konfigurasi alur kerja untuk menjalankan alur kerja Dataform sesuai jadwal.

Tentang konfigurasi alur kerja

Untuk menjadwalkan eksekusi Dataform dari semua atau tindakan alur kerja yang dipilih di BigQuery, Anda dapat membuat konfigurasi alur kerja. Dalam konfigurasi alur kerja, Anda memilih konfigurasi rilis kompilasi, memilih tindakan alur kerja untuk dieksekusi, dan menetapkan jadwal operasi.

Kemudian, selama eksekusi terjadwal konfigurasi alur kerja Anda, Dataform men-deploy pilihan tindakan Anda dari hasil kompilasi terbaru dalam konfigurasi rilis ke BigQuery. Anda juga dapat memicu eksekusi konfigurasi alur kerja secara manual dengan workflowConfigs Dataform API.

Konfigurasi alur kerja Dataform berisi setelan operasi berikut:

  • ID konfigurasi alur kerja.
  • Konfigurasi rilis.
  • Akun layanan.

    Ini adalah akun layanan kustom yang terkait dengan konfigurasi alur kerja. Anda dapat memilih akun layanan kustom yang terkait dengan project Google Cloud , atau Anda dapat memasukkan akun layanan lain secara manual. Secara default, konfigurasi alur kerja menggunakan akun layanan yang sama dengan repositori-nya.

    Kredensial akun layanan adalah metode otorisasi default untuk pembuatan dan eksekusi konfigurasi alur kerja terjadwal.

  • Kredensial pengguna Akun Google

    Kredensial pengguna Akun Google adalah metode otorisasi default untuk pembuatan dan eksekusi konfigurasi alur kerja manual yang tidak terjadwal. Untuk mengetahui informasi selengkapnya, lihat Memberikan otorisasi ke Akun Google Anda.

  • Tindakan alur kerja yang akan dijalankan:

    • Semua tindakan.
    • Pemilihan tindakan.
    • Pemilihan tag.
  • Jadwal dan zona waktu operasi.

Membuat konfigurasi alur kerja

Untuk membuat konfigurasi alur kerja Dataform, ikuti langkah-langkah berikut:

  1. Di repositori Anda, buka Rilis & Penjadwalan.
  2. Di bagian Workflow configurations, klik Create.
  3. Di panel Create workflow configuration, di kolom Configuration ID, masukkan ID unik untuk konfigurasi alur kerja.

    ID hanya boleh berisi angka, huruf, tanda hubung, dan garis bawah.

  4. Di menu Release configuration, pilih konfigurasi rilis kompilasi.

  5. Di bagian Authentication, beri otorisasi konfigurasi alur kerja dengan kredensial pengguna Akun Google Anda atau akun layanan.

    • Untuk menggunakan kredensial pengguna Akun Google Anda, pilih Execute with my user credentials.

      Opsional: Di bagian Extended access options, pilih layanan tambahan yang diperlukan alur kerja Anda:

      • Knowledge Catalog: Mengizinkan update metadata Google Cloud Knowledge Catalog.
      • Google Drive: Mengizinkan akses hanya baca ke file Google Drive.
      • Bigtable: Mengizinkan akses hanya baca ke data Google Bigtable.
    • Untuk menggunakan akun layanan kustom, pilih Execute with selected service account, lalu pilih akun layanan yang terkait dengan project Google Cloud yang dapat Anda akses. Jika Anda tidak memilih akun layanan, konfigurasi alur kerja akan menggunakan akun layanan repositori.

  6. Opsional: Di kolom Schedule frequency, masukkan frekuensi operasi dalam format unix-cron.

    Untuk memverifikasi bahwa Dataform menjalankan hasil kompilasi terbaru dalam konfigurasi rilis yang sesuai, pertahankan jeda minimal satu jam antara waktu pembuatan hasil kompilasi dan waktu eksekusi terjadwal.

  7. Opsional: Di menu Timezone, pilih zona waktu untuk operasi.

    Zona waktu default adalah UTC.

  8. Pilih tindakan alur kerja yang akan dijalankan:

    • Untuk menjalankan seluruh alur kerja, klik All actions.
    • Untuk menjalankan tindakan yang dipilih dalam alur kerja, klik Selection of actions, lalu pilih tindakan.
    • Untuk menjalankan tindakan dengan tag yang dipilih, klik Selection of tags, lalu pilih tag.
    • Opsional: Untuk menjalankan tindakan atau tag yang dipilih dan dependensinya, pilih opsi Sertakan dependensi.
    • Opsional: Untuk menjalankan tindakan atau tag yang dipilih dan dependensinya, pilih opsi Sertakan dependensi.
    • Opsional: Untuk membuat ulang semua tabel dari awal, pilih opsi Run with full refresh.

      Tanpa opsi ini, Dataform akan memperbarui tabel inkremental tanpa membangunnya ulang dari awal.

    • Opsional: Tetapkan prioritas tugas kueri BigQuery dengan opsi Execute as interactive job with high priority (default). Secara default, BigQuery menjalankan kueri sebagai tugas kueri interaktif, yang dimaksudkan untuk mulai berjalan secepat mungkin. Jika opsi ini tidak dicentang, kueri akan dijalankan sebagai tugas kueri batch, yang memiliki prioritas lebih rendah.

  9. Klik Create. Jika Anda memilih Execute with my user credentials untuk metode autentikasi, Anda harus memberikan otorisasi ke Akun Google Anda.

Misalnya, konfigurasi alur kerja berikut menjalankan tindakan dengan tag hourly setiap jam di zona waktu CEST:

  • ID Konfigurasi: production-hourly
  • Konfigurasi rilis: -
  • Frekuensi: 0 * * * *
  • Zona waktu: Central European Summer Time (CEST)
  • Pemilihan tindakan alur kerja: pemilihan tag, tag hourly

Memberi otorisasi pada Akun Google Anda

Untuk mengautentikasi resource dengan kredensial pengguna Akun Google Anda, Anda harus memberikan izin secara manual agar pipeline BigQuery mendapatkan token akses untuk Akun Google Anda dan mengakses data sumber atas nama Anda. Anda dapat memberikan persetujuan manual dengan antarmuka dialog OAuth. Jika Anda memilih Opsi akses yang diperluas, Anda harus memberikan akses ke layanan tersebut—misalnya, Google Drive atau Knowledge Catalog.

Anda hanya perlu memberikan izin ke pipeline BigQuery satu kali.

Untuk mencabut izin yang telah Anda berikan, ikuti langkah-langkah berikut:

  1. Buka halaman Akun Google Anda.
  2. Klik BigQuery Pipelines.
  3. Klik Hapus akses.

Mengubah pemilik konfigurasi alur kerja dengan mengupdate kredensial juga memerlukan persetujuan manual jika pemilik Akun Google baru belum pernah membuat konfigurasi alur kerja sebelumnya.

Mengedit konfigurasi alur kerja

Untuk mengedit konfigurasi alur kerja, ikuti langkah-langkah berikut:

  1. Di repositori Anda, buka Rilis & Penjadwalan.
  2. Di konfigurasi alur kerja yang ingin Anda edit, klik menu More, lalu klik Edit.
  3. Di panel Edit workflow configuration, edit setelan konfigurasi alur kerja, lalu klik Save.

Menghapus konfigurasi alur kerja

Untuk menghapus konfigurasi alur kerja, ikuti langkah-langkah berikut:

  1. Di repositori Anda, buka Rilis & Penjadwalan.
  2. Di samping konfigurasi alur kerja yang ingin Anda hapus, klik menu More, lalu klik Delete.
  3. Pada dialog Delete release configuration, klik Delete.

Menjadwalkan operasi dengan Workflows dan Cloud Scheduler

Bagian ini menunjukkan cara menjadwalkan operasi alur kerja Dataform menggunakan Workflows dan Cloud Scheduler.

Tentang operasi alur kerja terjadwal

Anda dapat menetapkan frekuensi operasi alur kerja Dataform dengan membuat tugas Cloud Scheduler yang memicu alur kerja Workflows. Workflows menjalankan layanan dalam alur kerja orkestrasi yang Anda tentukan.

Workflows menjalankan alur kerja Dataform Anda dalam proses dua langkah. Pertama, Dataform mengambil kode repositori Dataform Anda dari penyedia Git dan mengompilasinya menjadi hasil kompilasi. Kemudian, Cloud Composer menggunakan hasil kompilasi untuk membuat alur kerja Dataform dan menjalankannya sesuai frekuensi yang Anda tetapkan.

Membuat alur kerja orkestrasi terjadwal

Untuk menjadwalkan operasi alur kerja Dataform, gunakan Workflows untuk membuat alur kerja orkestrasi dan tambahkan tugas Cloud Scheduler sebagai pemicu.

  1. Workflows menggunakan akun layanan untuk memberi alur kerja akses ke resourceGoogle Cloud . Buat akun layanan dan berikan izin berikut:

  2. Buat alur kerja orkestrasi dan gunakan kode sumber YAML berikut sebagai definisi alur kerja Anda:

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

    Ganti kode berikut:

    • PROJECT_ID: ID project Google Cloud Anda.
    • REPOSITORY_LOCATION: lokasi repositori Dataform Anda.
    • REPOSITORY_ID: nama repositori Dataform Anda.
    • GIT_COMMITISH: commitish Git, seperti cabang, tag, atau SHA commit, yang ingin Anda gunakan untuk menjalankan kode Dataform. Untuk repositori yang baru dibuat, ganti nilai ini dengan main.
  3. Jadwalkan alur kerja orkestrasi menggunakan Cloud Scheduler.

Menyesuaikan permintaan pembuatan hasil kompilasi alur kerja Dataform

Anda dapat memperbarui alur kerja orkestrasi yang ada dan menentukan setelan permintaan hasil kompilasi pembuatan alur kerja Dataform dalam format YAML. Untuk mengetahui informasi selengkapnya tentang setelan, lihat referensi resource REST projects.locations.repositories.compilationResults.

Misalnya, untuk menambahkan setelan _dev schemaSuffix ke semua tindakan selama kompilasi, ganti isi langkah createCompilationResult dengan cuplikan kode berikut:

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

Anda juga dapat meneruskan setelan tambahan sebagai argumen runtime dalam permintaan eksekusi Workflows dan mengakses argumen tersebut menggunakan variabel. Untuk mengetahui informasi selengkapnya, lihat Meneruskan argumen runtime dalam permintaan eksekusi.

Menyesuaikan permintaan pemanggilan alur kerja Dataform

Anda dapat memperbarui alur kerja orkestrasi yang ada dan menentukan setelan permintaan pemanggilan alur kerja Dataform dalam format YAML. Untuk mengetahui informasi selengkapnya tentang setelan permintaan pemanggilan, lihat referensi resource REST projects.locations.repositories.workflowInvocations.

Misalnya, untuk hanya menjalankan tindakan dengan tag hourly dengan semua dependensi transitif disertakan, ganti isi createWorkflowInvocation dengan cuplikan kode berikut:

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

Anda juga dapat meneruskan setelan tambahan sebagai argumen runtime dalam permintaan eksekusi Workflows dan mengakses argumen tersebut menggunakan variabel. Untuk mengetahui informasi selengkapnya, lihat Meneruskan argumen runtime dalam permintaan eksekusi.

Menjadwalkan operasi dengan Managed Airflow

Anda dapat menggunakan Managed Airflow 2 untuk menjadwalkan operasi Dataform. Dataform tidak mendukung Managed Airflow 1.

Untuk mengelola jadwal eksekusi Dataform dengan Managed Airflow 2, Anda dapat menggunakan operator Dataform dalam Directed Acyclic Graph (DAG) Airflow. Anda dapat membuat DAG Airflow yang menjadwalkan pemanggilan alur kerja Dataform.

Dataform menyediakan berbagai operator Airflow. Ini termasuk operator untuk mendapatkan hasil kompilasi, mendapatkan pemanggilan alur kerja, dan membatalkan pemanggilan alur kerja. Untuk melihat daftar lengkap operator Airflow Dataform yang tersedia, lihat Operator Google Dataform.

Menginstal paket PyPI google-cloud-dataform

Jika Anda menggunakan Managed Airflow 2 versi 2.0.25 dan yang lebih baru, paket ini telah diprainstal di lingkungan Anda. Anda tidak perlu menginstalnya.

Jika Anda menggunakan Managed Airflow 2 versi sebelumnya, instal paket PyPI google-cloud-dataform.

Di bagian paket PyPI, tentukan versi ==0.2.0.

Membuat DAG Airflow yang menjadwalkan pemanggilan alur kerja Dataform

Untuk mengelola eksekusi terjadwal alur kerja Dataform dengan Managed Airflow 2, tulis DAG menggunakan operator Airflow Dataform, lalu upload ke bucket lingkungan Anda.

Contoh kode berikut menunjukkan DAG Airflow yang membuat hasil kompilasi Dataform dan memulai pemanggilan alur kerja Dataform:

from datetime import datetime

from airflow import models
from airflow.models.baseoperator import chain
from airflow.providers.google.cloud.operators.dataform import (
    DataformCreateCompilationResultOperator,
    DataformCreateWorkflowInvocationOperator,
)

DAG_ID = "dataform"
PROJECT_ID = "PROJECT_ID"
REPOSITORY_ID = "REPOSITORY_ID"
REGION = "REGION"
GIT_COMMITISH = "GIT_COMMITISH"

with models.DAG(
    DAG_ID,
    schedule_interval='@once',  # Override to match your needs
    start_date=datetime(2022, 1, 1),
    catchup=False,  # Override to match your needs
    tags=['dataform'],
) as dag:

    create_compilation_result = DataformCreateCompilationResultOperator(
        task_id="create_compilation_result",
        project_id=PROJECT_ID,
        region=REGION,
        repository_id=REPOSITORY_ID,
        compilation_result={
            "git_commitish": GIT_COMMITISH,
        },
    )
    create_workflow_invocation = DataformCreateWorkflowInvocationOperator(
        task_id='create_workflow_invocation',
        project_id=PROJECT_ID,
        region=REGION,
        repository_id=REPOSITORY_ID,
         workflow_invocation={
            "compilation_result": "{{ task_instance.xcom_pull('create_compilation_result')['name'] }}"
        },
    )


create_compilation_result >> create_workflow_invocation

Ganti kode berikut:

  • PROJECT_ID: Project ID Dataform Google Cloud Anda.
  • REPOSITORY_ID: nama repositori Dataform Anda.
  • REGION: region tempat repositori Dataform berada.
  • COMPILATION_RESULT: nama hasil kompilasi yang ingin Anda gunakan untuk pemanggilan alur kerja ini.
  • GIT_COMMITISH: commitish Git, seperti cabang, tag, atau SHA commit, dari versi kode Anda di repositori Git jarak jauh yang ingin Anda kompilasi.

Contoh kode berikut menunjukkan DAG Airflow yang melakukan hal berikut:

  1. Membuat hasil kompilasi Dataform.
  2. Memulai pemanggilan alur kerja Dataform asinkron.
  3. Melakukan polling status alur kerja Anda hingga memasuki status yang diharapkan dengan menggunakan DataformWorkflowInvocationStateSensor.
from datetime import datetime

from google.cloud.dataform_v1 import WorkflowInvocation

from airflow import models
from airflow.models.baseoperator import chain
from airflow.providers.google.cloud.operators.dataform import (
    DataformCreateCompilationResultOperator,
    DataformCreateWorkflowInvocationOperator,
)
from airflow.providers.google.cloud.sensors.dataform import DataformWorkflowInvocationStateSensor

DAG_ID = "dataform"
PROJECT_ID = "PROJECT_ID"
REPOSITORY_ID = "REPOSITORY_ID"
REGION = "REGION"
GIT_COMMITISH = "GIT_COMMITISH"

with models.DAG(
    DAG_ID,
    schedule_interval='@once',  # Override to match your needs
    start_date=datetime(2022, 1, 1),
    catchup=False,  # Override to match your needs
    tags=['dataform'],
) as dag:

    create_compilation_result = DataformCreateCompilationResultOperator(
        task_id="create_compilation_result",
        project_id=PROJECT_ID,
        region=REGION,
        repository_id=REPOSITORY_ID,
        compilation_result={
            "git_commitish": GIT_COMMITISH,
        },
    )

create_workflow_invocation = DataformCreateWorkflowInvocationOperator(
    task_id='create_workflow_invocation',
    project_id=PROJECT_ID,
    region=REGION,
    repository_id=REPOSITORY_ID,
    asynchronous=True,
    workflow_invocation={
        "compilation_result": COMPILATION_RESULT
    }
)

is_workflow_invocation_done = DataformWorkflowInvocationStateSensor(
    task_id="is_workflow_invocation_done",
    project_id=PROJECT_ID,
    region=REGION,
    repository_id=REPOSITORY_ID,
    workflow_invocation_id=("{{ task_instance.xcom_pull('create_workflow_invocation')['name'].split('/')[-1] }}"),
    expected_statuses={WorkflowInvocation.State.SUCCEEDED},
)


create_compilation_result >> create_workflow_invocation

Ganti kode berikut:

  • PROJECT_ID: project ID Dataform Google Cloud Anda.
  • REPOSITORY_ID: nama repositori Dataform Anda.
  • REGION: region tempat repositori Dataform berada.
  • COMPILATION_RESULT: nama hasil kompilasi yang ingin Anda gunakan untuk pemanggilan alur kerja ini.
  • GIT_COMMITISH: commitish Git, seperti cabang, tag, atau SHA commit, dari versi kode Anda di repositori Git jarak jauh yang ingin Anda kompilasi.

Menambahkan parameter konfigurasi kompilasi

Anda dapat menambahkan parameter konfigurasi kompilasi tambahan ke objek DAG Airflow create_compilation_result. Untuk mengetahui informasi selengkapnya tentang parameter yang tersedia, lihat referensi API Dataform CodeCompilationConfig.

  • Untuk menambahkan parameter konfigurasi kompilasi ke objek DAG Airflow create_compilation_result, tambahkan parameter yang Anda pilih ke kolom code_compilation_config dalam format berikut:

        create_compilation_result = DataformCreateCompilationResultOperator(
            task_id="create_compilation_result",
            project_id=PROJECT_ID,
            region=REGION,
            repository_id=REPOSITORY_ID,
            compilation_result={
                "git_commitish": GIT_COMMITISH,
                "code_compilation_config": { "PARAMETER": "PARAMETER_VALUE"}
            },
        )
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Dataform Google Cloud Anda.
    • REPOSITORY_ID: nama repositori Dataform Anda.
    • REGION: region tempat repositori Dataform berada.
    • GIT_COMMITISH: commitish Git, seperti cabang, tag, atau SHA commit, dari versi kode Anda di repositori Git jarak jauh yang ingin Anda kompilasi.
    • PARAMETER: parameter CodeCompilationConfig yang dipilih. Anda dapat menambahkan beberapa parameter.
    • PARAMETER_VALUE: nilai parameter yang dipilih.

Contoh kode berikut menunjukkan parameter defaultDatabase yang ditambahkan ke objek DAG Airflow create_compilation_result:

    create_compilation_result = DataformCreateCompilationResultOperator(
        task_id="create_compilation_result",
        project_id=PROJECT_ID,
        region=REGION,
        repository_id=REPOSITORY_ID,
        compilation_result={
            "git_commitish": REMOTE_BRANCH,
            "code_compilation_config": { "default_database": "my-custom-gcp-project"}
        },
    )

Menambahkan parameter konfigurasi pemanggilan alur kerja

Anda dapat menambahkan parameter konfigurasi pemanggilan alur kerja tambahan ke objek DAG Airflow create_workflow_invocation. Untuk mengetahui informasi selengkapnya tentang parameter yang tersedia, lihat referensi API Dataform InvocationConfig.

  • Untuk menambahkan parameter konfigurasi pemanggilan alur kerja ke objek DAG Airflow create_workflow_invocation, tambahkan parameter yang Anda pilih ke kolom invocation_config dalam format berikut:

        create_workflow_invocation = DataformCreateWorkflowInvocationOperator(
            task_id='create_workflow_invocation',
            project_id=PROJECT_ID,
            region=REGION,
            repository_id=REPOSITORY_ID,
            workflow_invocation={
                "compilation_result": "{{ task_instance.xcom_pull('create_compilation_result')['name'] }}",
                "invocation_config": { "PARAMETER": PARAMETER_VALUE }
            },
        )
    
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Dataform Google Cloud Anda.
    • REPOSITORY_ID: nama repositori Dataform Anda.
    • REGION: region tempat repositori Dataform berada.
    • PARAMETER: parameter InvocationConfig yang dipilih. Anda dapat menambahkan beberapa parameter.
    • PARAMETER_VALUE: nilai parameter yang dipilih.

Contoh kode berikut menunjukkan parameter includedTags[] dan transitiveDependenciesIncluded yang ditambahkan ke objek DAG Airflow create_workflow_invocation:

    create_workflow_invocation = DataformCreateWorkflowInvocationOperator(
        task_id='create_workflow_invocation',
        project_id=PROJECT_ID,
        region=REGION,
        repository_id=REPOSITORY_ID,
        workflow_invocation={
            "compilation_result": "{{ task_instance.xcom_pull('create_compilation_result')['name'] }}",
            "invocation_config": { "included_tags": ["daily"], "transitive_dependencies_included": true }
        },
    )

Mengotomatiskan operasi dengan pemicu Cloud Build

Jika ingin beralih dari jadwal berbasis waktu dalam konfigurasi rilis, Anda dapat menggunakan pemicu Cloud Build untuk membuat pipeline berbasis peristiwa. Pendekatan ini secara otomatis mengompilasi kode Anda setiap kali commit baru dikirim ke cabang Git dan langsung memicu pemanggilan alur kerja Dataform untuk memperbarui data Anda.

Menyiapkan resource

  1. Di project Google Cloud , aktifkan Dataform dan Cloud Build API:

    Mengaktifkan Dataform API

    Mengaktifkan Cloud Build API

  2. Pastikan Anda memiliki hal berikut:

Memberikan izin IAM yang diperlukan

Berikan peran Admin Dataform (roles/dataform.admin) ke akun layanan kustom di repositori Dataform Anda. Peran ini memberikan akses penuh ke repositori, termasuk izin untuk membuat hasil kompilasi, memperbarui konfigurasi rilis, dan memulai pemanggilan alur kerja baru. Untuk mengetahui detail tentang cara memberikan peran IAM ke setiap repositori, lihat Mengontrol akses ke setiap repositori.

Berikan peran Service Account User (roles/iam.serviceAccountUser) pada akun layanan kustom konfigurasi alur kerja ke akun layanan pemicu Cloud Build. Untuk mengetahui informasi selengkapnya tentang persyaratan ini, lihat Menggunakan mode act-as ketat.

Agar Cloud Build dapat menggunakan akun layanan kustom Anda, Anda harus memberi agen layanan Cloud Build izin untuk bertindak sebagai akun tersebut. Untuk memberikan izin peniruan identitas kepada agen layanan Cloud Build, lakukan hal berikut:

  1. Di console Google Cloud , buka halaman Akun Layanan.

    Buka Akun Layanan

  2. Pilih akun layanan kustom Anda.

  3. Buka tab Principals with access.

  4. Klik Berikan Akses.

  5. Di kolom New principals, masukkan alamat email agen layanan Cloud Build, yang harus dalam format berikut:

    service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.
    

    Ganti PROJECT_NUMBER dengan ID angka project Google Cloud Anda. Anda dapat menemukan project ID Google Cloud di dasbor konsolGoogle Cloud . Untuk mengetahui informasi selengkapnya, lihat Menemukan nama, nomor, dan ID project.

  6. Di menu Select a role, pilih Service Account User.

  7. Klik Simpan.

Membuat file konfigurasi cloudbuild.yaml

Di root repositori Git Anda, buat file cloudbuild.yaml. Gunakan file ini untuk menentukan skrip multi-langkah berikut guna membuat hasil kompilasi, memperbarui konfigurasi rilis untuk menetapkan hasil kompilasi ini sebagai aktif, dan memulai pemanggilan alur kerja baru.

steps:
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:latest'
    entrypoint: 'bash'
    args:
      - '-c'
      - |
        set -e -o pipefail # Exit script on any error

        # 1. Get the access token
        TOKEN=$(gcloud auth print-access-token)

        # 2. Define API endpoints and resource names
        RELEASE_CONFIG_RESOURCE="projects/${_PROJECT_ID}/locations/${_DATAFORM_LOCATION}/repositories/${_DATAFORM_REPO_ID}/releaseConfigs/${_RELEASE_CONFIG_ID}"
        COMPILATION_RESULTS_API="https://dataform.googleapis.com/v1/projects/${_PROJECT_ID}/locations/${_DATAFORM_LOCATION}/repositories/${_DATAFORM_REPO_ID}/compilationResults"

        # 3. Create the new compilation result
        echo "Creating new compilation result from $$RELEASE_CONFIG_RESOURCE..."
        CREATE_PAYLOAD="{\"releaseConfig\": \"$$RELEASE_CONFIG_RESOURCE\"}"
        curl --fail-with-body -X POST \
          -H "Authorization: Bearer $$TOKEN" \
          -H "Content-Type: application/json" \
          -d "$$CREATE_PAYLOAD" \
          "$$COMPILATION_RESULTS_API" | tee /workspace/compilation_response.json

  - name: 'alpine'
    entrypoint: 'bash'
    args:
      - '-c'
      - |
        set -e # Exit script on any error

        # 4. Parse compilation result name
        apk add --no-cache jq
        COMPILATION_NAME=$(jq -r '.name' < /workspace/compilation_response.json)

        echo "Successfully created compilation result: $$COMPILATION_NAME"
        echo $$COMPILATION_NAME > /workspace/compilation_result_name.txt

  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:latest'
    entrypoint: 'bash'
    args:
      - '-c'
      - |
        set -e # Exit script on any error
        # 5. Update the releaseConfig to set the new compilation result as 'live'
        COMPILATION_NAME=$(cat /workspace/compilation_result_name.txt)
        echo "Updating release config to set $$COMPILATION_NAME as live..."
        PATCH_PAYLOAD="{\"releaseCompilationResult\": \"$$COMPILATION_NAME\", \"gitCommitish\": \"$BRANCH_NAME\"}"

        RELEASE_CONFIG_RESOURCE="projects/${_PROJECT_ID}/locations/${_DATAFORM_LOCATION}/repositories/${_DATAFORM_REPO_ID}/releaseConfigs/${_RELEASE_CONFIG_ID}"
        RELEASE_CONFIG_PATCH_API="https://dataform.googleapis.com/v1/$${RELEASE_CONFIG_RESOURCE}"
        curl --fail-with-body -X PATCH \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          -H "Content-Type: application/json" \
          -d "$$PATCH_PAYLOAD" \
          "$$RELEASE_CONFIG_PATCH_API?updateMask=releaseCompilationResult"

        echo "Successfully updated release config."

  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:latest'
    entrypoint: 'bash'
    args:
      - '-c'
      - |
        set -e # Exit script on any error
        # 6. Launch a workflow config after recompiling the release config
        WORKFLOW_CONFIG_RESOURCE="projects/${_PROJECT_ID}/locations/${_DATAFORM_LOCATION}/repositories/${_DATAFORM_REPO_ID}/workflowConfigs/${_WORKFLOW_CONFIG_ID}"
        CREATE_WORKFLOW_PAYLOAD="{\"workflowConfig\": \"$$WORKFLOW_CONFIG_RESOURCE\"}"

        WORKFLOW_INVOCATIONS_API="https://dataform.googleapis.com/v1/projects/${_PROJECT_ID}/locations/${_DATAFORM_LOCATION}/repositories/${_DATAFORM_REPO_ID}/workflowInvocations"
        curl --fail-with-body -X POST \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          -H "Content-Type: application/json" \
          -d "$$CREATE_WORKFLOW_PAYLOAD" \
          "$$WORKFLOW_INVOCATIONS_API"

        echo "Successfully created a new workflow invocation."

# Define substitution variables that can be set in the trigger
substitutions:
  _DATAFORM_LOCATION: 'us-central1'  # Default, change if needed
  _DATAFORM_REPO_ID: ''              # Required: Set this in the trigger
  _RELEASE_CONFIG_ID: ''             # Required: Set this in the trigger
  _WORKFLOW_CONFIG_ID: ''            # Required: Set this in the trigger
  _PROJECT_ID: ${PROJECT_ID}         # Automatically uses the build's Project ID

options:
  logging: CLOUD_LOGGING_ONLY

Membuat pemicu Cloud Build

Untuk membuat pemicu yang menjalankan konfigurasi build saat kode dikirim ke repositori, lakukan hal berikut:

  1. Di konsol Google Cloud , buka halaman Triggers Cloud Build.

    Buka Pemicu

  2. Jika Anda belum menghubungkan repositori Git, klik Connect repository dan ikuti langkah-langkahnya.

  3. Klik Create trigger.

  4. Masukkan nama untuk pemicu.

  5. Pilih region untuk pemicu.

  6. Pilih peristiwa untuk pemicu.

  7. Di bagian Source, tetapkan repositori ke repositori Git yang terhubung.

  8. Tetapkan cabang ke cabang utama repositori Anda.

  9. Di bagian Configuration, pilih file konfigurasi Cloud Build, yang dapat berupa file YAML atau JSON.

  10. Tetapkan lokasi file ke /cloudbuild.yaml atau jalur ke file Anda.

  11. Di bagian Substitution variables, tambahkan variabel dan nilai berikut:

    • _DATAFORM_REPO_ID: ID repositori Dataform Anda
    • _RELEASE_CONFIG_ID: ID konfigurasi rilis Dataform Anda
    • _WORKFLOW_CONFIG_ID: ID konfigurasi alur kerja Dataform Anda
    • Opsional: _DATAFORM_LOCATION: region repositori Dataform Anda, misalnya, us-central1
  12. Di bagian Service Account, pilih akun layanan kustom Anda.

  13. Klik Create.

Untuk mengetahui informasi selengkapnya, lihat Membuat pemicu build.

Menguji pemicu

  1. Commit dan kirim file cloudbuild.yaml ke cabang yang dipantau oleh pemicu Anda.
  2. Untuk melihat build Cloud Build, buka halaman Build History di konsol Google Cloud .

    Buka Histori Build

  3. Jika build berhasil, buka halaman Dataform.

    Buka Dataform

  4. Pilih repositori Anda.

  5. Klik Rilis & penjadwalan, lalu pilih konfigurasi rilis Anda.

  6. Dalam daftar Manual / API compilation results, cari entri baru. Kompilasi terbaru yang berhasil harus ditandai sebagai Live compilation result untuk konfigurasi rilis.

  7. Klik Workflow execution logs.

  8. Anda akan melihat pemanggilan alur kerja baru yang diluncurkan menggunakan konfigurasi alur kerja yang Anda pilih.

Langkah berikutnya