Pengantar rutinitas

Dokumen ini menjelaskan cara memilih rutin, yang merupakan jenis resource yang Anda gunakan untuk membuat fungsi atau prosedur tersimpan di BigQuery.

Rutinitas yang didukung

BigQuery mendukung rutinitas berikut:

Cara memilih rutinitas

Bagian ini menjelaskan faktor-faktor yang perlu dipertimbangkan saat memilih rutinitas dan membandingkan rutinitas berdasarkan tugas.

Faktor yang perlu dipertimbangkan

Untuk memilih rutinitas, pertimbangkan faktor-faktor berikut, yang dijelaskan di bagian untuk setiap jenis rutinitas:

  • Jenis tugas yang akan diterapkan.
  • Bahasa pemrograman yang akan digunakan.
  • Jenis persistensi yang akan diterapkan untuk rutinitas: sementara atau persisten.
  • Jenis penggunaan kembali yang diperlukan untuk rutinitas: di satu atau beberapa kueri.
  • Pertimbangan performa.
  • Mengakses layanan eksternal.
  • Membagikan rutinitas kepada pengguna.

Membandingkan rutinitas menurut tugas

Tabel berikut menunjukkan jenis tugas yang dapat Anda lakukan untuk setiap jenis rutinitas:

Tugas

Jenis resource rutin

Buat fungsi yang melakukan tugas umum di BigQuery.

UDF SQL atau JavaScript

UDAF SQL atau JavaScript

Buat fungsi yang melakukan tugas serbaguna di BigQuery dan yang berkomunikasi dengan sistem eksternal menggunakan koneksi resource Cloud. Cloud de Confiance by S3NS

UDF Python

Buat fungsi yang menggabungkan data.

UDAF

Buat tabel menggunakan parameter.

Fungsi tabel

Membuat fungsi yang menggunakan bahasa, library, atau layanan yang tidak didukung di BigQuery. Fungsi ini terintegrasi langsung dengan Cloud Run Functions dan Cloud Run.

Fungsi jarak jauh

Jalankan beberapa pernyataan dalam satu kueri sebagai kueri multi-pernyataan menggunakan bahasa prosedural. Anda dapat menggunakan kueri multi-pernyataan untuk melakukan hal berikut:

  • Menjalankan beberapa pernyataan secara berurutan, dengan status bersama.
  • Mengotomatiskan tugas pengelolaan seperti membuat atau menghapus tabel.
  • Terapkan logika kompleks menggunakan konstruksi pemrograman seperti IF dan WHILE.

Buat dan panggil prosedur tersimpan untuk Apache Spark di BigQuery.

Prosedur tersimpan

Fungsi yang ditentukan pengguna (UDF)

UDF memungkinkan Anda membuat fungsi menggunakan ekspresi SQL, kode JavaScript, atau kode Python. UDF menerima kolom input, melakukan tindakan pada input, dan menampilkan hasil tindakan tersebut sebagai nilai.

Anda dapat menentukan UDF sebagai persistent atau temporary. Anda dapat menggunakan kembali UDF persisten di beberapa kueri, sedangkan UDF sementara hanya ada dalam cakupan satu kueri.

Anda dapat membuat UDF untuk digunakan dengan rutinitas penyamaran kustom, yang menampilkan nilai kolom setelah menerapkan UDF ke kolom tersebut. Setelah Anda membuat rutinitas penyamaran kustom, rutinitas tersebut akan tersedia sebagai aturan penyamaran di bagian Membuat kebijakan data.

Untuk mengetahui informasi selengkapnya tentang UDF, lihat referensi berikut:

UDF berbasis bahasa

UDF kontribusi komunitas

Selain UDF yang Anda buat, UDF yang dikontribusikan komunitas tersedia di set data publik bigquery-public-data.persistent_udfs dan repositori GitHub bigquery-utils open source.

Fungsi agregat yang ditentukan pengguna (UDAF)

UDAF memungkinkan Anda membuat fungsi agregat menggunakan ekspresi yang berisi kode SQL atau JavaScript. UDAF menerima kolom input, melakukan penghitungan pada sekelompok baris sekaligus, lalu menampilkan hasil penghitungan tersebut sebagai satu nilai.

UDAF tidak dapat mengubah data, berkomunikasi dengan sistem eksternal, atau mengirim log ke Google Cloud Observability atau aplikasi serupa.

Untuk informasi selengkapnya, lihat referensi berikut:

UDAF SQL

UDAF SQL biasanya menggabungkan parameter fungsi di semua baris dalam grup. Namun, Anda dapat menentukan parameter fungsi sebagai non-agregat menggunakan kata kunci NOT AGGREGATE. Parameter fungsi non-agregat adalah parameter fungsi skalar dengan nilai konstanta untuk semua baris dalam grup. UDAF SQL dapat berisi parameter agregat dan non-agregat.

UDAF JavaScript

UDAF JavaScript dapat menyertakan library JavaScript. Isi fungsi JavaScript dapat mencakup kode JavaScript kustom seperti variabel global JavaScript dan fungsi kustom.

Karena fungsi berbasis JavaScript biasanya menggunakan lebih banyak resource, membaca tips performa ini dapat membantu.

UDAF JavaScript memiliki beberapa batasan. Hanya encoding jenis tertentu yang diizinkan, dan ada persyaratan untuk serialisasi dan deserialisasi.

Membandingkan UDF dan UDAF

Memilih UDF daripada memilih UDAF bergantung pada tugas spesifik yang ingin Anda lakukan.

  • Untuk melakukan penghitungan atau transformasi pada setiap nilai data, gunakan UDF.
  • Untuk melakukan hal yang sama pada grup nilai data, gunakan UDAF.

Misalnya, jika Anda ingin menghitung rata-rata kolom angka, gunakan UDAF. Jika Anda ingin mengonversi kolom string menjadi huruf besar, gunakan UDF.

UDF dan UDAF memiliki kesamaan berikut:

UDF dan UDAF memiliki perbedaan berikut:

Atribut

UDF

UDAF

Definisi

Fungsi yang ditentukan pengguna (UDF) menerima kolom input, melakukan tindakan pada input, dan menampilkan hasil tindakan tersebut sebagai nilai.

Fungsi agregat yang ditentukan pengguna (UDAF) menerima kolom input, melakukan perhitungan pada sekelompok baris sekaligus, lalu menampilkan hasil perhitungan tersebut sebagai satu nilai.

Bahasa yang didukung

SQL, JavaScript, dan Python

SQL dan JavaScript

Persistensi

  • Dapat bersifat sementara atau persisten.
  • Anda dapat menggunakan persistent UDF di beberapa kueri.
  • Anda hanya dapat menggunakan UDF sementara untuk satu kueri.
  • UDF Python hanya dapat bersifat persisten, bukan sementara.
  • Dapat bersifat sementara atau persisten.
  • Anda dapat menggunakan UDAF persisten di beberapa kueri.
  • Anda hanya dapat menggunakan UDAF sementara untuk satu kueri, skrip, sesi, atau prosedur.
  • UDAF persisten aman untuk dipanggil jika dibagikan antarpemilik.

Argumen dan jenis data

UDF menerima nilai parameter yang sesuai dengan jenis data GoogleSQL untuk BigQuery. Beberapa jenis SQL memiliki pemetaan langsung ke jenis JavaScript, tetapi yang lainnya tidak. Lihat jenis yang didukung untuk JavaScript.

Untuk UDF SQL, nilai parameter dapat berupa ANY TYPE, yang dapat cocok dengan lebih dari satu jenis argumen saat fungsi dipanggil.

Hanya UDF JavaScript yang memiliki penentu determinisme yang memberikan petunjuk kepada BigQuery tentang apakah hasil kueri dapat di-cache.

UDAF SQL dan JavaScript menerima nilai parameter yang sesuai dengan jenis data GoogleSQL untuk BigQuery.

Parameter fungsi dapat berupa agregat atau non-agregat.

Penggunaan

UDF biasanya digunakan untuk pembersihan, transformasi, dan validasi data.

UDAF biasanya digunakan untuk menghitung statistik ringkasan, seperti rata-rata, jumlah, dan hitungan.

Fungsi tabel

Fungsi tabel, yang juga disebut fungsi bernilai tabel (TVF), adalah UDF yang menampilkan tabel. Anda dapat menggunakan fungsi tabel di mana pun Anda dapat menggunakan tabel. Fungsi tabel berperilaku mirip dengan tampilan, tetapi fungsi tabel dapat mengambil parameter.

Anda dapat melakukan hal berikut dengan fungsi tabel:

  • Teruskan beberapa parameter.
  • Panggil fungsi tabel dalam konteks apa pun jika tabel tersebut valid.
  • Gabungkan output dari fungsi tabel dengan tabel lain.
  • Gunakan fungsi tabel dalam subkueri.

Untuk mengetahui informasi selengkapnya tentang fungsi tabel, lihat Fungsi tabel, Batasan, dan Kuota dan batas.

Fungsi jarak jauh

Fungsi jarak jauh memungkinkan Anda menerapkan fungsi dalam bahasa selain SQL dan JavaScript, atau memungkinkan Anda menggunakan library atau layanan yang tidak didukung dalam UDF BigQuery.

Fungsi jarak jauh BigQuery mengintegrasikan fungsi GoogleSQL Anda dengan fungsi Cloud Run dan Cloud Run menggunakan bahasa yang didukung, lalu memanggil fungsi tersebut dari kueri GoogleSQL.

Tugas berikut adalah contoh hal yang dapat Anda lakukan dengan fungsi jarak jauh:

Pembuatan fungsi jarak jauh memerlukan langkah-langkah berikut:

  1. Buat endpoint HTTP di Cloud Run Functions atau Cloud Run.
  2. Buat fungsi jarak jauh di BigQuery menggunakan jenis koneksi CLOUD_RESOURCE.
  3. Gunakan fungsi jarak jauh dalam kueri sama seperti UDF lainnya untuk BigQuery.

Untuk mengetahui informasi selengkapnya tentang fungsi jarak jauh, lihat Fungsi jarak jauh, Batasan, dan Kuota dan batas.

Prosedur tersimpan

Prosedur tersimpan SQL adalah kumpulan pernyataan yang dapat dipanggil dari kueri lain atau prosedur tersimpan lainnya. Anda memberi nama dan menyimpan prosedur dalam set data BigQuery.

Prosedur tersimpan mendukung pernyataan bahasa prosedur, yang memungkinkan Anda melakukan berbagai hal seperti menentukan variabel dan menerapkan alur kontrol. Anda dapat mempelajari pernyataan bahasa prosedur lebih lanjut dalam Referensi bahasa prosedur.

Prosedur tersimpan dapat melakukan hal berikut:

  • Mengambil argumen input dan menampilkan nilai sebagai output.
  • Mengakses atau mengubah data di beberapa set data oleh beberapa pengguna.
  • Berisi kueri multi-pernyataan.

Beberapa prosedur tersimpan telah diintegrasikan ke dalam BigQuery dan tidak perlu dibuat. Ini disebut prosedur sistem, dan Anda dapat mempelajarinya lebih lanjut di Referensi prosedur sistem.

Prosedur tersimpan untuk Spark di BigQuery juga didukung. Prosedur ini memiliki kuota dan batas.

Untuk mempelajari lebih lanjut prosedur tersimpan, lihat prosedur tersimpan SQL.