Dokumen ini menunjukkan cara melakukan hal berikut di Dataform:
- Jadwalkan operasi dengan konfigurasi alur kerja.
- Menjadwalkan eksekusi dengan Workflows dan Cloud Scheduler.
- Jadwalkan eksekusi dengan Cloud Composer.
- Mengotomatiskan eksekusi dengan pemicu Cloud Build.
Tabel berikut membandingkan metode tersebut:
| Metode | Sasaran | Jenis Pemicu |
|---|---|---|
| Konfigurasi alur kerja | Produksi berbasis waktu standar berjalan dalam Dataform. | Berdasarkan waktu |
| Workflows dan Cloud Scheduler | Orkestrasi Dataform yang ringan dan serverless bersama dengan API lainnya. | Berdasarkan waktu atau berbasis peristiwa |
| Cloud Composer | Pipeline kompleks dengan dependensi di luar BigQuery. | Berdasarkan waktu atau berbasis peristiwa |
| Pemicu Cloud Build | Mengotomatiskan rilis segera setelah Git push. | Berdasarkan peristiwa |
Sebelum memulai
Untuk menjadwalkan eksekusi dengan konfigurasi alur kerja atau menjadwalkan eksekusi dengan alur kerja dan Cloud Scheduler, lakukan hal berikut:
Di konsol Google Cloud , buka halaman Dataform.
Pilih atau buat repositori.
Buat konfigurasi rilis.
Untuk menjadwalkan eksekusi dengan Cloud Composer, lakukan hal berikut:
- Pilih atau buat repositori Dataform.
- Memberikan akses Dataform ke BigQuery.
- Pilih atau buat ruang kerja Dataform.
- Buat minimal satu tabel.
- Buat lingkungan Cloud Composer 2.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tugas dalam dokumen ini, minta administrator Anda untuk memberi Anda peran IAM berikut:
-
Admin Dataform (
roles/dataform.admin) di repositori -
Composer Worker (
roles/composer.worker) di akun layanan lingkungan Cloud Composer -
Mengotomatiskan eksekusi dengan Cloud Build:
-
Service Account Admin (
roles/iam.serviceAccountAdmin) di akun layanan kustom -
Cloud Build Editor (
roles/cloudbuild.builds.editor) di project
-
Service Account Admin (
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 Akun Google saat membuat konfigurasi alur kerja (Pratinjau), berikan akses ke Akun Google.
Untuk mengaktifkan eksekusi terjadwal untuk konfigurasi alur kerja, Anda harus memberikan izin iam.serviceAccounts.actAs kepada agen layanan Dataform default untuk akun layanan kustom yang digunakan dalam konfigurasi alur kerja. Izin
ini tersedia dalam
peran Pengguna Akun Layanan
(roles/iam.serviceAccountUser).
Untuk mengetahui informasi selengkapnya, lihat
Menggunakan mode bertindak sebagai yang ketat.
Untuk meningkatkan keamanan penjadwalan, lihat Menerapkan izin penjadwalan yang ditingkatkan.
Menjadwalkan eksekusi dengan konfigurasi alur kerja
Bagian ini menunjukkan cara membuat konfigurasi alur kerja di Dataform untuk menjadwalkan dan mengonfigurasi eksekusi 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 run.
Kemudian, selama proses 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 jalankan 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 Anda, atau Anda dapat memasukkan akun layanan lain secara manual. Secara default, konfigurasi alur kerja menggunakan akun layanan yang sama dengan repositorinya.
Kredensial akun layanan adalah metode otorisasi default untuk pembuatan dan eksekusi konfigurasi alur kerja terjadwal.
Kredensial pengguna Akun Google (Pratinjau)
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 eksekusi.
Membuat konfigurasi alur kerja
Untuk membuat konfigurasi alur kerja Dataform, ikuti langkah-langkah berikut:
- Di repositori Anda, buka Rilis & Penjadwalan.
- Di bagian Workflow configurations, klik Create.
Di panel Buat konfigurasi alur kerja, di kolom ID Konfigurasi, masukkan ID unik untuk konfigurasi alur kerja.
ID hanya boleh berisi angka, huruf, tanda hubung, dan garis bawah.
Di menu Konfigurasi rilis, pilih konfigurasi rilis kompilasi.
Di bagian Authentication, beri otorisasi konfigurasi alur kerja dengan kredensial pengguna Akun Google Anda atau akun layanan.
- Untuk menggunakan kredensial pengguna Akun Google Anda (Pratinjau), pilih Jalankan dengan kredensial pengguna saya.
- Untuk menggunakan akun layanan kustom, pilih Jalankan dengan akun layanan yang dipilih, lalu pilih akun layanan yang terkait dengan project yang dapat Anda akses. Google Cloud Jika Anda tidak memilih akun layanan, konfigurasi alur kerja akan menggunakan akun layanan repositori.
Opsional: Di kolom Schedule frequency, masukkan frekuensi eksekusi dalam format unix-cron.
Untuk memverifikasi bahwa Dataform menjalankan hasil kompilasi terbaru dalam konfigurasi rilis yang sesuai, berikan jeda minimal satu jam antara waktu pembuatan hasil kompilasi dan waktu eksekusi terjadwal.
Opsional: Di menu Zona waktu, pilih zona waktu untuk menjalankan.
Zona waktu default adalah UTC.
Pilih tindakan alur kerja yang akan dijalankan:
- Untuk menjalankan seluruh alur kerja, klik Semua tindakan.
- Untuk menjalankan tindakan yang dipilih dalam alur kerja, klik Pemilihan tindakan, lalu pilih tindakan.
- Untuk menjalankan tindakan dengan tag yang dipilih, klik Pemilihan tag, 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 membangun ulang semua tabel dari awal, pilih opsi Jalankan dengan refresh penuh.
Tanpa opsi ini, Dataform akan memperbarui tabel inkremental tanpa membangunnya kembali dari awal.
Opsional: Tetapkan prioritas tugas kueri BigQuery dengan opsi Jalankan sebagai tugas interaktif dengan prioritas tinggi (default). Secara default, BigQuery menjalankan kueri sebagai tugas kueri interaktif, yang dimaksudkan untuk mulai berjalan secepat mungkin. Menghapus opsi ini akan menjalankan kueri sebagai tugas kueri batch, yang memiliki prioritas lebih rendah.
Klik Buat. Jika Anda memilih Jalankan dengan kredensial pengguna saya untuk metode autentikasi, Anda harus mengizinkan Akun Google Anda (Pratinjau).
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.
Anda hanya perlu memberikan izin ke pipeline BigQuery satu kali.
Untuk mencabut izin yang Anda berikan, ikuti langkah-langkah berikut:
- Buka halaman Akun Google Anda.
- Klik BigQuery Pipelines.
- 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:
- Di repositori Anda, buka Rilis & Penjadwalan.
- Di samping konfigurasi alur kerja yang ingin Anda edit, klik menu Lainnya, lalu klik Edit.
- Di panel Edit konfigurasi alur kerja, edit setelan konfigurasi alur kerja, lalu klik Simpan.
Menghapus konfigurasi alur kerja
Untuk menghapus konfigurasi alur kerja, ikuti langkah-langkah berikut:
- Di repositori Anda, buka Rilis & Penjadwalan.
- Di samping konfigurasi alur kerja yang ingin Anda hapus, klik menu Lainnya, lalu klik Hapus.
- Pada dialog Hapus konfigurasi rilis, klik Hapus.
Menjadwalkan eksekusi dengan Workflows dan Cloud Scheduler
Bagian ini menunjukkan cara menjadwalkan eksekusi alur kerja Dataform menggunakan Workflows dan Cloud Scheduler.
Tentang operasi alur kerja terjadwal
Anda dapat menetapkan frekuensi eksekusi alur kerja Dataform dengan membuat tugas Cloud Scheduler yang memicu alur kerja Workflows. Workflows mengeksekusi layanan dalam alur kerja orkestrasi yang Anda tentukan.
Alur kerja menjalankan alur kerja Dataform Anda dalam proses dua langkah. Pertama, kode repositori Dataform Anda akan diambil dari penyedia Git Anda dan dikompilasi menjadi hasil kompilasi. Kemudian, alat ini menggunakan hasil kompilasi untuk membuat alur kerja Dataform dan mengeksekusinya pada frekuensi yang Anda tetapkan.
Membuat alur kerja orkestrasi terjadwal
Untuk menjadwalkan eksekusi alur kerja Dataform, gunakan Workflows untuk membuat alur kerja orkestrasi dan menambahkan tugas Cloud Scheduler sebagai pemicu.
Workflows menggunakan akun layanan untuk memberi alur kerja akses ke resourceGoogle Cloud . Buat akun layanan dan berikan izin berikut kepadanya:
- Peran Editor Dataform
(
roles/dataform.editor). - Peran Pengguna Akun Layanan
(
roles/iam.serviceAccountUser) di akun layanan kustom yang digunakan di Dataform. - Izin minimum yang diperlukan untuk mengelola alur kerja orkestrasi Anda. Untuk mengetahui informasi selengkapnya, lihat Memberikan izin alur kerja untuk mengakses resource Google Cloud .
- Peran Editor Dataform
(
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/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}Ganti kode berikut:
- PROJECT_ID: ID Google Cloud project Anda.
- REPOSITORY_LOCATION: lokasi repositori Dataform Anda.
- REPOSITORY_ID: nama repositori Dataform Anda.
- GIT_COMMITISH: cabang Git tempat Anda ingin menjalankan kode Dataform. Untuk repositori yang baru dibuat, ganti dengan
main.
Jadwalkan alur kerja orkestrasi menggunakan Cloud Scheduler.
Menyesuaikan permintaan hasil kompilasi pembuatan 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/v1beta1/" + repository + "/compilationResults"}
auth:
type: OAuth2
body:
gitCommitish: GIT_COMMITISH
codeCompilationConfig:
schemaSuffix: dev
Anda juga dapat meneruskan setelan tambahan sebagai argumen runtime dalam permintaan jalankan 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 mengeksekusi 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/v1beta1/" + 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 jalankan Workflows dan mengakses argumen tersebut menggunakan variabel. Untuk mengetahui informasi selengkapnya, lihat Meneruskan argumen runtime dalam permintaan eksekusi.
Menjadwalkan eksekusi dengan Cloud Composer
Anda dapat menggunakan Cloud Composer 2 untuk menjadwalkan eksekusi Dataform. Dataform tidak mendukung Cloud Composer 1.
Untuk mengelola jadwal untuk menjalankan Dataform dengan Cloud Composer 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. Hal ini mencakup 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.
Instal paket google-cloud-dataform PyPi
Jika Anda menggunakan Cloud Composer 2 versi 2.0.25 dan yang lebih baru, paket ini sudah diinstal sebelumnya di lingkungan Anda. Anda tidak perlu menginstalnya.
Jika Anda menggunakan versi Cloud Composer 2 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 Cloud Composer 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 di repositori Git jarak jauh dari versi kode yang ingin Anda gunakan—misalnya, cabang atau SHA Git.
Contoh kode berikut menunjukkan DAG Airflow yang melakukan hal berikut:
- Membuat hasil kompilasi Dataform.
- Memulai pemanggilan alur kerja Dataform asinkron.
- Melakukan polling status alur kerja Anda hingga memasuki status yang diharapkan
dengan menggunakan
DataformWorkflowInvocationStateSensor.
from datetime import datetime
from google.cloud.dataform_v1beta1 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: projectID 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 di repositori Git jarak jauh dari versi kode yang ingin Anda gunakan—misalnya, cabang atau SHA Git.
- COMPILATION_RESULT: nama hasil kompilasi yang ingin Anda gunakan untuk pemanggilan alur kerja ini.
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 dipilih ke kolomcode_compilation_configdalam 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 di repositori Git jarak jauh dari versi kode yang ingin Anda gunakan—misalnya, cabang atau SHA Git.
- PARAMETER: parameter
CodeCompilationConfigyang 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 dipilih ke kolominvocation_configdalam 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
InvocationConfigyang 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 eksekusi dengan pemicu Cloud Build
Jika ingin melampaui jadwal berbasis waktu dalam konfigurasi rilis, Anda dapat menggunakan pemicu Cloud Build untuk membuat pipeline berbasis peristiwa. Pendekatan ini otomatis mengompilasi kode Anda setiap kali commit baru dikirim ke cabang Git dan segera memicu pemanggilan alur kerja Dataform untuk memperbarui data Anda.
Menyiapkan resource
Di Google Cloud project Anda, aktifkan Dataform dan Cloud Build API:
Pastikan Anda memiliki:
Akun layanan kustom yang akan digunakan untuk kompilasi. Catat alamat email akun layanan, misalnya,
dataform-compiler@PROJECT_NUMBER.iam.gserviceaccount.com.Konfigurasi rilis di repositori Dataform Anda. Catat ID konfigurasi rilis.
Konfigurasi alur kerja di repositori Dataform yang menggunakan konfigurasi rilis Anda. Catat ID konfigurasi alur kerja.
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 repositori individual, lihat
Mengontrol akses ke repositori individual.
Berikan
peran Pengguna Akun Layanan
(roles/iam.serviceAccountUser)
di akun layanan kustom konfigurasi alur kerja ke akun layanan pemicu Cloud Build. Untuk mengetahui informasi selengkapnya tentang persyaratan ini, lihat Menggunakan mode berperan ketat.
Agar Cloud Build dapat menggunakan akun layanan kustom Anda, Anda harus memberikan izin kepada agen layanan Cloud Build untuk bertindak sebagai akun tersebut. Untuk memberikan izin peniruan identitas kepada agen layanan Cloud Build, lakukan hal berikut:
Di console Google Cloud , buka halaman Akun Layanan.
Pilih akun layanan kustom Anda.
Buka tab Principals with access.
Klik Berikan Akses.
Di kolom New principals, masukkan alamat email agen layanan Cloud Build, yang harus dalam format ini:
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.comGanti
PROJECT_NUMBERdengan ID angka project Google Cloud Anda. Anda dapat menemukan ID project Google Cloud di dasbor konsolGoogle Cloud . Untuk mengetahui informasi selengkapnya, lihat Menemukan nama, nomor, dan ID project.Di menu Select a role, pilih Service Account User.
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 untuk 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 Anda, lakukan hal berikut:
Di Konsol Google Cloud , buka halaman Pemicu Cloud Build.
Jika Anda belum menghubungkan repositori Git, klik Hubungkan repositori dan ikuti langkah-langkahnya.
Klik Create trigger.
Masukkan nama untuk pemicu.
Pilih region untuk pemicu.
Pilih peristiwa untuk pemicu.
Di bagian Sumber, tetapkan repositori ke repositori Git yang terhubung.
Setel cabang ke cabang utama repositori Anda.
Di bagian Configuration, pilih file konfigurasi Cloud Build, yang dapat berupa file YAML atau JSON.
Tetapkan lokasi file ke
/cloudbuild.yamlatau jalur ke file Anda.Di bagian Variabel substitusi, 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
Di bagian Service Account, pilih akun layanan kustom Anda.
Klik Buat.
Untuk mengetahui informasi selengkapnya, lihat Membuat pemicu build.
Menguji pemicu
- Lakukan commit dan kirim file
cloudbuild.yamlke cabang yang dipantau pemicu Anda. Untuk melihat build Cloud Build, buka halaman Build History di konsol Google Cloud .
Jika build berhasil, buka halaman Dataform.
Pilih repositori Anda.
Klik Rilis & penjadwalan, lalu pilih konfigurasi rilis Anda.
Dalam daftar Hasil kompilasi manual / API, cari entri baru. Kompilasi berhasil terbaru harus ditandai sebagai Hasil kompilasi aktif untuk konfigurasi rilis.
Klik Workflow execution logs.
Anda akan melihat pemanggilan alur kerja baru yang diluncurkan menggunakan konfigurasi alur kerja yang Anda pilih.
Langkah berikutnya
- Untuk mempelajari cara mengonfigurasi konfigurasi rilis kompilasi Dataform, lihat Membuat konfigurasi rilis.
- Untuk mempelajari lebih lanjut siklus proses kode di Dataform, lihat Pengantar siklus proses kode di Dataform.
- Untuk mempelajari Dataform API lebih lanjut, lihat Dataform API.
- Untuk mempelajari lingkungan Cloud Composer lebih lanjut, lihat Ringkasan Cloud Composer.
- Untuk mempelajari harga Workflows lebih lanjut, lihat Harga Workflows.