Menyesuaikan fungsi Python untuk BigQuery DataFrames

Dengan BigQuery DataFrames, Anda dapat mengubah fungsi Python kustom menjadi artefak BigQuery yang dapat Anda jalankan pada objek BigQuery DataFrames dalam skala besar. Dukungan ekstensibilitas ini memungkinkan Anda melakukan operasi di luar yang dapat dilakukan dengan BigQuery DataFrames dan SQL API, sehingga Anda berpotensi memanfaatkan library open source.

Ada dua varian mekanisme ekstensibilitas ini: fungsi yang ditentukan pengguna dan fungsi jarak jauh.

Peran yang diperlukan

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

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.

Fungsi yang ditentukan pengguna (UDF)

Dengan UDF (Pratinjau), Anda dapat mengubah fungsi Python kustom menjadi UDF Python. Untuk contoh penggunaan, lihat Membuat UDF Python persisten.

Membuat UDF di BigQuery DataFrames akan membuat rutinitas BigQuery sebagai UDF Python di set data yang ditentukan. Untuk mengetahui set lengkap parameter yang didukung, lihat bigframes.pandas.udf.

Persyaratan

Untuk menggunakan UDF DataFrame BigQuery, aktifkan BigQuery API di project Anda. Jika Anda memberikan parameter bigquery_connection di project, Anda juga harus mengaktifkan BigQuery Connection API.

Pembersihan

Selain menghapus artefak cloud langsung di konsol Google Cloud atau dengan alat lain, Anda dapat menghapus UDF DataFrame BigQuery yang dibuat dengan argumen nama eksplisit menggunakan perintah bigframes.pandas.get_global_session().bqclient.delete_routine(routine_id).

Batasan

  • Kode dalam UDF harus mandiri, artinya, kode tersebut tidak boleh berisi referensi ke impor atau variabel yang ditentukan di luar isi fungsi.
  • Kode dalam UDF harus kompatibel dengan Python 3.11, karena itulah lingkungan tempat kode dijalankan di cloud.
  • Menjalankan ulang kode definisi UDF setelah perubahan kecil dalam kode fungsi—misalnya, mengganti nama variabel atau menyisipkan baris baru—menyebabkan UDF dibuat ulang, meskipun perubahan ini tidak signifikan terhadap perilaku fungsi.
  • Kode pengguna dapat dilihat oleh pengguna dengan akses baca pada rutin BigQuery, jadi Anda harus menyertakan konten sensitif dengan hati-hati.
  • Project dapat memiliki hingga 1.000 fungsi Cloud Run sekaligus di lokasi BigQuery.

UDF BigQuery DataFrames men-deploy fungsi Python BigQuery yang ditentukan pengguna, dan batasan terkait berlaku.

Fungsi jarak jauh

BigQuery DataFrames memungkinkan Anda mengubah fungsi skalar kustom menjadi fungsi jarak jauh BigQuery. Untuk contoh penggunaan, lihat Membuat fungsi jarak jauh. Untuk mengetahui kumpulan lengkap parameter yang didukung, lihat remote_function.

Membuat fungsi jarak jauh di BigQuery DataFrames akan membuat hal berikut:

  • Cloud Run function.
  • Koneksi BigQuery.

    Secara default, koneksi bernama bigframes-default-connection digunakan. Anda dapat menggunakan koneksi BigQuery yang telah dikonfigurasi sebelumnya jika mau, sehingga pembuatan koneksi akan dilewati. Akun layanan untuk koneksi default diberi peran Cloud Run (roles/run.invoker).

  • Fungsi jarak jauh BigQuery yang menggunakan fungsi Cloud Run yang telah dibuat dengan koneksi BigQuery.

Persyaratan

Untuk menggunakan fungsi jarak jauh DataFrame BigQuery, Anda harus mengaktifkan API berikut:

Saat menggunakan fungsi jarak jauh BigQuery DataFrame, Anda memerlukan peran Project IAM Admin (roles/resourcemanager.projectIamAdmin) jika Anda menggunakan koneksi BigQuery default, atau peran Browser (roles/browser) jika Anda menggunakan koneksi yang telah dikonfigurasi sebelumnya. Anda dapat menghindari persyaratan ini dengan menyetel opsi bigframes.pandas.options.bigquery.skip_bq_connection_check ke True, yang dalam hal ini koneksi (default atau yang telah dikonfigurasi sebelumnya) digunakan apa adanya tanpa pemeriksaan izin atau keberadaan. Jika Anda menggunakan koneksi yang telah dikonfigurasi sebelumnya dan melewati pemeriksaan koneksi, verifikasi hal berikut:

  • Koneksi dibuat di lokasi yang tepat.
  • Jika Anda menggunakan fungsi jarak jauh BigQuery DataFrames, akun layanan memiliki peran Cloud Run Invoker (roles/run.invoker) di project.

Melihat dan mengelola koneksi

Koneksi BigQuery dibuat di lokasi yang sama dengan sesi BigQuery DataFrames, menggunakan nama yang Anda berikan dalam definisi fungsi kustom. Untuk melihat dan mengelola koneksi, lakukan hal berikut:

  1. Di konsol Google Cloud , buka halaman BigQuery.

    Buka BigQuery

  2. Pilih project tempat Anda membuat fungsi jarak jauh.

  3. Di panel kiri, klik Explorer:

    Tombol yang ditandai untuk panel Explorer.

  4. Di panel Explorer, luaskan project, lalu klik Koneksi.

Fungsi jarak jauh BigQuery dibuat di set data yang Anda tentukan, atau dibuat di set data anonim, yang merupakan jenis set data tersembunyi. Jika Anda tidak menetapkan nama untuk fungsi jarak jauh selama pembuatannya, BigQuery DataFrames akan menerapkan nama default yang diawali dengan prefiks bigframes. Untuk melihat dan mengelola fungsi jarak jauh yang dibuat dalam set data yang ditentukan pengguna, lakukan langkah berikut:

  1. Di konsol Google Cloud , buka halaman BigQuery.

    Buka BigQuery

  2. Pilih project tempat Anda membuat fungsi jarak jauh.

  3. Di panel kiri, klik Explorer:

    Tombol yang ditandai untuk panel Explorer.

  4. Di panel Explorer, luaskan project, lalu klik Set Data.

  5. Klik set data tempat Anda membuat fungsi jarak jauh.

  6. Klik tab Rutinitas.

Untuk melihat dan mengelola Cloud Run Functions, lakukan hal berikut:

  1. Buka halaman Cloud Run.

    Buka Cloud Run

  2. Pilih project tempat Anda membuat fungsi.

  3. Dalam daftar layanan yang tersedia, filter menurut Jenis deployment Fungsi.

  4. Untuk mengidentifikasi fungsi yang dibuat oleh BigQuery DataFrame, cari nama fungsi dengan awalan bigframes.

Pembersihan

Selain menghapus artefak cloud secara langsung di konsol Google Cloud atau dengan alat lain, Anda dapat menghapus fungsi jarak jauh BigQuery yang dibuat tanpa argumen nama eksplisit dan fungsi Cloud Run terkait dengan cara berikut:

  • Untuk sesi BigQuery DataFrames, gunakan perintah session.close().
  • Untuk sesi BigQuery DataFrames default, gunakan perintah bigframes.pandas.close_session().
  • Untuk sesi sebelumnya dengan session_id, gunakan perintah bigframes.pandas.clean_up_by_session_id(session_id).

Anda juga dapat menghapus fungsi jarak jauh BigQuery yang dibuat dengan argumen nama eksplisit dan fungsi Cloud Run terkaitnya menggunakan perintah bigframes.pandas.get_global_session().bqclient.delete_routine(routine_id).

Batasan

  • Fungsi jarak jauh memerlukan waktu sekitar 90 detik agar dapat digunakan saat Anda pertama kali membuatnya. Dependensi paket tambahan dapat menambah latensi.
  • Menjalankan ulang kode definisi fungsi jarak jauh setelah perubahan kecil dalam dan di sekitar kode fungsi—misalnya, mengganti nama variabel, menyisipkan baris baru, atau menyisipkan sel baru di notebook—dapat menyebabkan fungsi jarak jauh dibuat ulang, meskipun perubahan ini tidak penting bagi perilaku fungsi.
  • Kode pengguna dapat dilihat oleh pengguna dengan akses baca di Cloud Run Functions, jadi Anda harus menyertakan konten sensitif dengan hati-hati.
  • Project dapat memiliki hingga 1.000 fungsi Cloud Run sekaligus di satu region. Untuk mengetahui informasi selengkapnya, lihat Kuota.

Langkah berikutnya