Dokumen ini memperkenalkan Anda pada konsep dan proses Dataform.
Dataform adalah layanan bagi analis data untuk mengembangkan, menguji, mengontrol versi, dan menjadwalkan alur kerja yang kompleks untuk transformasi data di BigQuery.
Dataform memungkinkan Anda mengelola transformasi data dalam proses Ekstraksi, Pemuatan, dan Transformasi (ELT) untuk integrasi data. Setelah data mentah diekstrak dari sistem sumber dan dimuat ke BigQuery, Dataform membantu Anda mengubahnya menjadi rangkaian tabel data yang teruji, terdokumentasi, dan terdefinisi dengan baik.
Dataform memungkinkan Anda melakukan tindakan transformasi data berikut:
- Mengembangkan dan menjalankan alur kerja untuk transformasi data.
- Berkolaborasi dengan anggota tim dalam pengembangan alur kerja melalui Git.
- Mengelola sejumlah besar tabel dan dependensinya.
- Mendeklarasikan data sumber dan mengelola dependensi tabel.
- Melihat visualisasi diagram dependensi alur kerja Anda.
- Mengelola data dengan kode SQL di repositori pusat.
- Menggunakan kembali kode dengan JavaScript.
- Menguji kebenaran data dengan pengujian kualitas pada tabel sumber dan output.
- Mengontrol versi kode SQL.
- Mendokumentasikan tabel data di dalam kode SQL.
Proses transformasi data di Dataform
Alur kerja transformasi data untuk Dataform adalah sebagai berikut:
- Dataform memungkinkan Anda membuat repositori untuk mengelola kode.
- Dataform memungkinkan Anda membuat ruang kerja untuk pengembangan.
- Dataform memungkinkan Anda mengembangkan alur kerja di ruang kerja pengembangan.
- Dataform mengompilasi inti Dataform ke SQL.
- Dataform menjalankan diagram dependensi.
Dataform memungkinkan Anda membuat repositori untuk mengelola kode
Di repositori Dataform, Anda menggunakan inti Dataform, ekstensi SQL, untuk menulis file SQLX tempat Anda menentukan alur kerja. Repositori Dataform mendukung kontrol versi. Anda dapat menautkan repositori Dataform ke penyedia Git pihak ketiga.
Dataform memungkinkan Anda membuat ruang kerja untuk pengembangan
Anda dapat membuat ruang kerja pengembangan di dalam repositori Dataform untuk pengembangan inti Dataform. Di ruang kerja pengembangan, Anda dapat membuat perubahan pada repositori, mengompilasi, menguji, dan mengirimkannya ke repositori utama melalui Git.
Dataform memungkinkan Anda mengembangkan inti Dataform di ruang kerja pengembangan
Di ruang kerja pengembangan, Anda dapat menentukan dan mendokumentasikan tabel, dependensinya, dan logika transformasi untuk membangun alur kerja. Anda juga dapat mengonfigurasi tindakan di JavaScript.
Dataform mengompilasi inti Dataform
Selama kompilasi, Dataform melakukan tugas berikut:
- Mengompilasi inti Dataform ke dalam alur kerja SQL Standar.
- Menambahkan pernyataan SQL boilerplate, seperti
CREATE TABLEatauINSERT, ke kode secara inline dengan konfigurasi kueri Anda. - Mentranspilasi (mengompilasi sumber ke sumber) JavaScript ke SQL.
- Menyelesaikan dependensi dan memeriksa error, termasuk dependensi yang tidak ada atau melingkar.
- Membangun diagram dependensi semua tindakan yang akan dijalankan di BigQuery.
Kompilasi Dataform bersifat hermetik untuk memverifikasi konsistensi kompilasi, yang berarti kode yang sama akan dikompilasi ke hasil kompilasi SQL yang sama setiap kali. Dataform mengompilasi kode Anda di lingkungan sandbox tanpa akses internet. Tidak ada tindakan tambahan, seperti memanggil API eksternal, yang tersedia selama kompilasi.
Untuk melakukan debug secara real-time, Anda dapat memeriksa alur kerja project yang dikompilasi dalam diagram interaktif di ruang kerja pengembangan.
Dataform menjalankan diagram dependensi
Di BigQuery, Dataform melakukan tugas berikut:
- Menjalankan perintah SQL, mengikuti urutan diagram dependensi.
- Menjalankan kueri pernyataan terhadap tabel dan tampilan untuk memeriksa kebenaran data.
- Menjalankan operasi SQL lain yang Anda tentukan.
Setelah eksekusi, Anda dapat menggunakan tabel dan tampilan untuk semua tujuan analisis.
Anda dapat melihat log untuk melihat tabel yang dibuat, apakah pernyataan lulus atau gagal, berapa lama waktu yang dibutuhkan setiap tindakan untuk diselesaikan, dan informasi lainnya. Anda juga dapat melihat kode SQL persis yang dijalankan di BigQuery.
Fitur Dataform
Dengan Dataform, Anda dapat mengembangkan dan men-deploy tabel, tabel inkremental, atau tampilan ke BigQuery. Dataform menawarkan lingkungan web untuk aktivitas berikut:
- Pengembangan alur kerja
- Koneksi dengan GitHub, GitLab, Azure DevOps Services, dan Bitbucket
- Continuous integration dan deployment berkelanjutan
- Eksekusi alur kerja
Bagian berikut menjelaskan fitur utama Dataform.
Repositori
Setiap project Dataform disimpan di repositori. Repositori Dataform berisi kumpulan file konfigurasi JSON, file SQLX, dan file JavaScript.
Repositori Dataform berisi jenis file berikut:
File konfigurasi
File JSON atau SQLX konfigurasi memungkinkan Anda mengonfigurasi alur kerja. File ini berisi konfigurasi umum, jadwal eksekusi, atau skema untuk membuat tabel dan tampilan baru.
Definisi
Definisi adalah file SQLX dan JavaScript yang menentukan tabel, tampilan, dan operasi SQL tambahan yang akan dijalankan di BigQuery.
Sertakan
Sertakan file JavaScript tempat Anda dapat menentukan variabel dan fungsi yang akan digunakan dalam project.
Setiap repositori Dataform harus terhubung ke akun layanan kustom. Anda memilih akun layanan kustom saat Anda membuat repositori. Anda dapat mengedit akun layanan nanti.
Kontrol versi
Dataform menggunakan sistem kontrol versi Git untuk menyimpan catatan setiap perubahan yang dibuat pada file project dan mengelola versi file.
Setiap repositori Dataform dapat mengelola repositori Git-nya sendiri, atau terhubung ke repositori Git pihak ketiga jarak jauh. Anda dapat menghubungkan repositori Dataform ke repositori GitHub, GitLab, Azure DevOps Services, atau Bitbucket.
Pengguna mengontrol versi kode alur kerja mereka di dalam ruang kerja Dataform. Di ruang kerja Dataform, Anda dapat menarik perubahan dari repositori, melakukan commit semua atau perubahan yang dipilih, dan mengirimkannya ke cabang Git repositori.
Pengembangan alur kerja
Di Dataform, Anda membuat perubahan pada file dan direktori di dalam a ruang kerja pengembangan. Ruang kerja pengembangan adalah salinan virtual yang dapat diedit dari konten repositori Git. Dataform mempertahankan status file di ruang kerja pengembangan Anda antar-sesi.
Di ruang kerja pengembangan, Anda dapat mengembangkan tindakan alur kerja menggunakan inti Dataform dengan SQLX dan JavaScript, atau secara eksklusif dengan JavaScript. Anda dapat memformat kode JavaScript atau inti Dataform secara otomatis.
Setiap elemen alur kerja Dataform, seperti tabel atau pernyataan, sesuai dengan tindakan yang dilakukan Dataform di BigQuery. Misalnya, file definisi tabel adalah tindakan membuat atau memperbarui tabel di BigQuery.
Di ruang kerja Dataform, Anda dapat mengembangkan tindakan alur kerja berikut:
- Deklarasi data sumber
- Tabel dan tampilan
- Tabel inkremental
- Partisi dan cluster tabel
- Dependensi antar-tindakan
- Dokumentasi tabel
- Operasi SQL kustom
- Label BigQuery
- Tag kebijakan BigQuery
- Tag Dataform
- Pengujian kualitas data, yang disebut pernyataan
Anda dapat menggunakan JavaScript untuk menggunakan kembali kode alur kerja Dataform dengan cara berikut:
- Di seluruh file dengan enkapsulasi kode
- Di seluruh repositori dengan menyertakan
- Di seluruh repositori dengan paket
Dataform mengompilasi kode alur kerja di ruang kerja Anda secara real-time. Di ruang kerja, Anda dapat melihat kueri yang dikompilasi dan detail tindakan di setiap file. Anda juga dapat melihat status kompilasi dan error di file yang diedit atau di repositori.
Untuk menguji output kueri SQL yang dikompilasi sebelum menjalankannya ke BigQuery, Anda dapat menjalankan pratinjau kueri di ruang kerja Dataform.
Untuk memeriksa seluruh alur kerja yang ditentukan di ruang kerja, Anda dapat melihat diagram interaktif yang dikompilasi yang menampilkan semua tindakan yang dikompilasi dalam alur kerja dan hubungan di antara tindakan tersebut.
Kompilasi alur kerja
Dataform menggunakan setelan kompilasi default, yang dikonfigurasi dalam file setelan alur kerja, untuk mengompilasi kode alur kerja di ruang kerja Anda ke SQL secara real-time, sehingga membuat hasil kompilasi ruang kerja.
Anda dapat mengganti setelan kompilasi untuk menyesuaikan cara Dataform mengompilasi alur kerja Anda menjadi hasil kompilasi.
Dengan penggantian kompilasi ruang kerja, Anda dapat mengonfigurasi penggantian kompilasi untuk semua ruang kerja di repositori. Anda dapat menetapkan penggantian ruang kerja dinamis untuk membuat hasil kompilasi kustom untuk setiap ruang kerja, sehingga mengubah ruang kerja menjadi lingkungan pengembangan yang terisolasi. Anda dapat mengganti Google Cloud project tempat Dataform menjalankan konten ruang kerja, menambahkan awalan ke nama semua tabel yang dikompilasi, dan menambahkan akhiran ke skema default.
Dengan konfigurasi rilis, Anda dapat mengonfigurasi template setelan kompilasi untuk membuat hasil kompilasi repositori Dataform. Dalam konfigurasi rilis, Anda dapat mengganti Google Cloud project tempat Dataform menjalankan hasil kompilasi, menambahkan awalan ke nama semua tabel yang dikompilasi, menambahkan akhiran ke skema default, dan menambahkan variabel kompilasi. Anda juga dapat menetapkan frekuensi pembuatan hasil kompilasi. Untuk menjadwalkan operasi hasil kompilasi yang dibuat dalam konfigurasi rilis yang dipilih, Anda dapat membuat konfigurasi alur kerja.
Alur kerja berjalan
Selama alur kerja berjalan, Dataform menjalankan hasil kompilasi alur kerja untuk membuat atau memperbarui aset di BigQuery.
Untuk membuat atau memperbarui tabel dan tampilan yang ditentukan dalam alur kerja di BigQuery, Anda dapat memulai alur kerja secara manual di ruang kerja pengembangan atau menjadwalkan operasi.
Anda dapat menjadwalkan operasi Dataform di BigQuery dengan cara berikut:
- Membuat konfigurasi alur kerja untuk menjadwalkan operasi hasil kompilasi yang dibuat dalam konfigurasi rilis
- Menjadwalkan operasi dengan Managed Service untuk Apache Airflow
- Menjadwalkan operasi dengan Workflows dan Cloud Scheduler
Anda juga dapat mengotomatiskan operasi dengan pemicu Cloud Build.
Untuk melakukan debug error, Anda dapat memantau operasi dengan cara berikut:
- Melihat log eksekusi Dataform mendetail
- Melihat log audit untuk Dataform
- Melihat log Cloud Logging untuk Dataform
Inti Dataform
Inti Dataform adalah meta-bahasa open source untuk membuat tabel dan alur kerja SQL. Inti Dataform memperluas SQL dengan menyediakan sistem pengelolaan dependensi, pengujian kualitas data otomatis, dan dokumentasi data.
Anda dapat menggunakan inti Dataform untuk tujuan berikut:
- Menentukan tabel, tampilan, tampilan terwujud, atau tabel inkremental.
- Menentukan logika transformasi data.
- Mendeklarasikan data sumber dan mengelola dependensi tabel.
- Mendokumentasikan deskripsi tabel dan kolom di dalam kode.
- Menggunakan kembali fungsi dan variabel di berbagai kueri.
- Menulis pernyataan data untuk memverifikasi konsistensi data.
Di Dataform, Anda menggunakan inti Dataform untuk mengembangkan alur kerja dan men-deploy aset ke BigQuery.
Inti Dataform adalah bagian dari framework pemodelan data Dataform open source yang juga mencakup Dataform CLI. Anda dapat mengompilasi dan menjalankan inti Dataform secara lokal melalui Dataform CLI di luar Google Cloud.
Untuk menggunakan inti Dataform, Anda menulis file SQLX. Setiap file SQLX berisi kueri yang menentukan relasi database yang dibuat dan diperbarui Dataform di dalam BigQuery.
Dataform mengompilasi kode inti Dataform Anda secara real-time untuk membuat hasil kompilasi SQL yang dapat Anda jalankan di BigQuery.
Kompilasi Dataform bersifat hermetik untuk memverifikasi konsistensi kompilasi, yang berarti kode yang sama akan dikompilasi ke hasil kompilasi SQL yang sama setiap kali. Dataform mengompilasi kode Anda di lingkungan sandbox tanpa akses internet. Tidak ada tindakan tambahan, seperti memanggil API eksternal, yang tersedia selama kompilasi.
Blok konfigurasi file SQLX
File SQLX terdiri dari blok konfigurasi dan isi. Semua properti konfigurasi, dan blok konfigurasi itu sendiri, bersifat opsional. Dengan demikian, file SQL biasa adalah file SQLX valid yang dijalankan Dataform apa adanya.
Di blok konfigurasi, Anda dapat melakukan tindakan berikut:
Menentukan metadata kueri
Anda dapat mengonfigurasi cara Dataform mewujudkan kueri ke BigQuery, misalnya jenis tabel output, database target, atau label menggunakan metadata konfigurasi.
Mendokumentasikan data
Anda dapat mendokumentasikan tabel Anda dan kolomnya langsung di blok konfigurasi. Dokumentasi tabel Anda dikirim langsung ke BigQuery. Anda dapat mengurai dokumentasi ini dan mengirimkannya ke alat lain.
Menentukan pengujian kualitas data
Anda dapat menentukan pengujian kualitas data, yang disebut pernyataan, untuk memeriksa keunikan, nilai null, atau kondisi kustom. Dataform menambahkan pernyataan yang ditentukan dalam blok konfigurasi ke diagram dependensi alur kerja Anda setelah pembuatan tabel. Anda juga dapat menentukan pernyataan di luar blok konfigurasi, dalam file SQLX terpisah.
Contoh kode berikut menunjukkan cara menentukan jenis tabel output, mendokumentasikan tabel, dan menentukan pengujian kualitas di blok konfigurasi file SQLX.
config {
type: "table",
description: "This table joins orders information from OnlineStore & payment information from PaymentApp",
columns: {
order_date: "The date when a customer placed their order",
id: "Order ID as defined by OnlineStore",
order_status: "The status of an order e.g. sent, delivered",
customer_id: "Unique customer ID",
payment_status: "The status of a payment e.g. pending, paid",
payment_method: "How the customer chose to pay",
item_count: "The number of items the customer ordered",
amount: "The amount the customer paid"
},
assertions: {
uniqueKey: ["id"]
}
}
Isi file SQLX
Di isi file SQLX, Anda dapat melakukan tindakan berikut:
- Menentukan tabel dan dependensinya.
- Menentukan operasi SQL tambahan yang akan dijalankan di BigQuery.
- Membuat kode SQL dengan JavaScript.
Menentukan tabel
Untuk menentukan tabel baru, Anda dapat menggunakan pernyataan SQL SELECT dan fungsi ref.
Fungsi ref adalah fungsi bawaan SQLX yang penting untuk pengelolaan dependensi di Dataform. Fungsi ref memungkinkan Anda mereferensikan tabel yang ditentukan dalam project Dataform, bukan hardcode skema dan nama tabel tabel data Anda.
Dataform menggunakan fungsi ref untuk membangun diagram dependensi semua tabel yang akan dibuat atau diperbarui. Setelah mengompilasi, Dataform menambahkan pernyataan boilerplate seperti CREATE, REPLACE, atau INSERT.
Contoh kode berikut menunjukkan cara mereferensikan tabel dalam file SQLX dengan fungsi ref.
config { type: "table" }
SELECT
order_date AS date,
order_id AS order_id,
order_status AS order_status,
SUM(item_count) AS item_count,
SUM(amount) AS revenue
FROM ${ref("store_clean")}
GROUP BY 1, 2, 3
Outputnya mirip dengan hal berikut ini:
CREATE OR REPLACE TABLE Dataform.orders AS
SELECT
order_date AS date,
order_id AS order_id,
order_status AS order_status,
SUM(item_count) AS item_count,
SUM(amount) AS revenue
FROM Dataform_stg.store_clean
GROUP BY 1, 2, 3
Untuk mengetahui informasi selengkapnya tentang pengelolaan dependensi tambahan, misalnya, menjalankan kode secara kondisional, menggunakan fungsi bawaan inti Dataform lainnya, lihat referensi inti Dataform.
Menentukan operasi SQL tambahan
Untuk mengonfigurasi Dataform agar menjalankan satu atau beberapa pernyataan SQL sebelum atau setelah membuat tabel atau tampilan, Anda dapat menentukan operasi pra-kueri dan pasca-kueri.
Contoh kode berikut menunjukkan cara mengonfigurasi izin akses tabel atau tampilan dalam operasi pasca-kueri.
SELECT * FROM ...
post_operations {
GRANT `roles/bigquery.dataViewer` ON TABLE ${self()} TO "group:someusers@dataform.co"
}
Melakukan enkapsulasi kode SQL
Untuk menentukan fungsi yang dapat digunakan kembali untuk membuat bagian kode SQL yang berulang, Anda dapat menggunakan blok JavaScript. Anda hanya dapat menggunakan kembali kode yang ditentukan dalam blok JavaScript di dalam file SQLX tempat blok ditentukan. Untuk menggunakan kembali kode di seluruh repositori, Anda dapat membuat penyertaan.
Untuk mengubah kueri secara dinamis, Anda dapat menggunakan JavaScript inline di mana saja di isi.
Contoh kode berikut menunjukkan cara menentukan blok JavaScript dalam file SQLX dan menggunakannya secara inline di dalam kueri:
js {
const columnName = "foo";
}
SELECT 1 AS ${columnName} FROM "..."
Batasan
Dataform memiliki batasan umum berikut:
Dataform in Google Cloud berjalan pada runtime V8 biasa dan tidak mendukung kemampuan dan modul tambahan yang disediakan oleh Node.js. Jika codebase yang ada memerlukan modul Node.js, Anda harus menghapus dependensi ini.
Project tanpa kolom nama di
package.jsonakan menghasilkan perbedaan padapackage-lock.jsonsetiap kali paket diinstal. Untuk menghindari hasil ini, Anda harus menambahkan propertinamedipackage.json.URL
git+https://untuk dependensi dipackage.jsontidak didukung.Konversi URL tersebut ke URL arsip
https://biasa. Misalnya, konversigit+https://github.com/dataform-co/dataform-segment.git#1.5kehttps://github.com/dataform-co/dataform-segment/archive/1.5.tar.gz.Menjalankan pengujian unit secara manual tidak tersedia.
Penelusuran konten file di ruang kerja pengembangan tidak tersedia.
Mulai dari inti Dataform
3.0.0., Dataform tidak mendistribusikan image Docker. Anda dapat membuat image Docker Dataform sendiri, yang dapat digunakan untuk menjalankan perintah Dataform CLI yang setara. Untuk membuat image Docker Anda sendiri, lihat Membuat container aplikasi di dokumentasi Docker.Metode Dataform API berikut tidak mematuhi panduan AIP.134 dengan memperlakukan entri karakter pengganti
*sebagai permintaan yang buruk dan dengan memperbarui semua kolom, bukan kolom yang ditetapkan, saatfield_maskdihilangkan:Jika alur kerja terjadwal yang dikonfigurasi tidak selesai sebelum awal operasi terjadwal berikutnya, operasi terjadwal berikutnya akan dilewati dan ditandai dengan error.
Langkah berikutnya
- Untuk mempelajari lebih lanjut siklus proses kode di Dataform, lihat Pengantar siklus proses kode di Dataform.
- Untuk mempelajari lebih lanjut repositori Dataform, lihat Pengantar repositori.
- Untuk mempelajari lebih lanjut ruang kerja Dataform, lihat Membuat ruang kerja pengembangan Dataform.
- Untuk mempelajari lebih lanjut pengembangan alur kerja di Dataform, lihat Ringkasan alur kerja.
- Untuk mempelajari lebih lanjut Dataform CLI, lihat Menggunakan Dataform CLI.