Menggunakan BigQuery DataFrames
BigQuery DataFrames menyediakan DataFrame Pythonic dan API
machine learning (ML) yang didukung oleh mesin BigQuery.
BigQuery DataFrames adalah paket open source. Anda dapat menjalankan
pip install --upgrade bigframes
untuk menginstal versi terbaru.
BigQuery DataFrames menyediakan tiga library:
bigframes.pandas
menyediakan pandas API yang dapat Anda gunakan untuk menganalisis dan memanipulasi data di BigQuery. Banyak beban kerja yang dapat dimigrasikan dari pandas ke bigframe hanya dengan mengubah beberapa impor.bigframes.pandas
API dapat diskalakan untuk mendukung pemrosesan terabyte data BigQuery, dan API ini menggunakan mesin kueri BigQuery untuk melakukan penghitungan.bigframes.bigquery
menyediakan banyak fungsi SQL BigQuery yang mungkin tidak memiliki fungsi yang setara di pandas.bigframes.ml
menyediakan API yang mirip dengan scikit-learn API untuk ML. Kemampuan ML di BigQuery DataFrames memungkinkan Anda memproses data terlebih dahulu, lalu melatih model pada data tersebut. Anda juga dapat merangkai tindakan ini untuk membuat pipeline data.
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:
-
BigQuery Job User (
roles/bigquery.jobUser
) -
BigQuery Read Session User (
roles/bigquery.readSessionUser
) -
Menggunakan BigQuery DataFrames di notebook BigQuery:
-
BigQuery User (
roles/bigquery.user
) -
Pengguna Runtime Notebook (
roles/aiplatform.notebookRuntimeUser
) -
Pembuat Kode (
roles/dataform.codeCreator
)
-
BigQuery User (
-
Menggunakan fungsi jarak jauh BigQuery DataFrames:
-
BigQuery Data Editor (
roles/bigquery.dataEditor
) -
BigQuery Connection Admin (
roles/bigquery.connectionAdmin
) -
Cloud Functions Developer (
roles/cloudfunctions.developer
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Storage Object Viewer (
roles/storage.objectViewer
)
-
BigQuery Data Editor (
-
Menggunakan model jarak jauh BigQuery DataFrames ML:
BigQuery Connection Admin (
roles/bigquery.connectionAdmin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Selain itu, saat menggunakan fungsi jarak jauh BigQuery DataFrames atau
model jarak jauh BigQuery DataFrames ML, Anda memerlukan
peran Project IAM Admin (roles/resourcemanager.projectIamAdmin
)
jika menggunakan koneksi BigQuery default, atau
peran Browser (roles/browser
)
jika menggunakan koneksi yang telah dikonfigurasi sebelumnya. Persyaratan ini dapat dihindari dengan
menetapkan opsi bigframes.pandas.options.bigquery.skip_bq_connection_check
ke True
. Dalam hal ini, koneksi (default atau yang telah dikonfigurasi sebelumnya) digunakan
seperti 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. - Jika Anda menggunakan model jarak jauh BigQuery DataFrames ML, akun layanan memiliki peran Pengguna Vertex AI (
roles/aiplatform.user
) di project.
Saat Anda melakukan autentikasi pengguna akhir di lingkungan interaktif seperti notebook, REPL Python, atau command line, BigQuery DataFrames akan meminta autentikasi, jika diperlukan. Jika tidak, lihat cara menyiapkan kredensial default aplikasi untuk berbagai lingkungan.
Mengonfigurasi opsi penginstalan
Setelah menginstal BigQuery DataFrames, Anda dapat menentukan opsi berikut.
Lokasi dan project
Anda harus menentukan lokasi dan project tempat Anda ingin menggunakan BigQuery DataFrames.
Anda dapat menentukan lokasi dan project di notebook dengan cara berikut:
Lokasi pemrosesan data
BigQuery DataFrames dirancang untuk skala, yang
dicapai dengan menyimpan data dan pemrosesan di layanan
BigQuery. Namun, Anda dapat memasukkan data ke dalam memori mesin klien dengan memanggil .to_pandas()
pada objek DataFrame atau Series. Jika
Anda memilih untuk melakukannya, batasan memori mesin klien
akan berlaku.
Lokasi sesi
BigQuery DataFrames menggunakan objek sesi lokal secara internal untuk mengelola metadata. Sesi ini terikat dengan
lokasi. DataFrame BigQuery menggunakan multi-region US
sebagai lokasi default, tetapi Anda dapat menggunakan session_options.location
untuk menetapkan lokasi yang berbeda. Setiap kueri dalam sesi dijalankan di lokasi tempat sesi dibuat.
BigQuery DataFrames otomatis mengisi
bf.options.bigquery.location
dengan lokasi tabel jika
pengguna memulai dengan read_gbq/read_gbq_table/read_gbq_query()
dan
menentukan tabel, baik secara langsung maupun dalam pernyataan SQL.
Jika ingin mereset lokasi objek DataFrame atau Series
yang dibuat, Anda dapat menutup sesi dengan menjalankan
bigframes.pandas.close_session()
. Setelah itu, Anda dapat menggunakan kembali
bigframes.pandas.options.bigquery.location
untuk menentukan lokasi
lain.
read_gbq()
mengharuskan Anda menentukan lokasi jika set data yang Anda kirimkan kueri tidak berada di multi-region US
. Jika mencoba membaca tabel
dari lokasi lain, Anda akan mendapatkan pengecualian NotFound
.
Bermigrasi ke BigQuery DataFrames versi 2.0
BigQuery DataFrames versi 2.0 meningkatkan keamanan dan performa BigQuery DataFrames API, menambahkan fitur baru, dan memperkenalkan perubahan yang menyebabkan gangguan. Dokumen ini menjelaskan perubahan dan memberikan panduan migrasi. Anda dapat menerapkan rekomendasi ini sebelum menginstal versi 2.0 menggunakan BigQuery DataFrames versi 1.x terbaru.
BigQuery DataFrames versi 2.0 memiliki manfaat berikut:
- Kueri yang lebih cepat dan lebih sedikit tabel dibuat saat Anda menjalankan kueri yang menampilkan
hasil ke klien, karena
allow_large_results
secara default ditetapkan keFalse
. Hal ini dapat mengurangi biaya penyimpanan, terutama jika Anda menggunakan penagihan byte fisik. - Keamanan yang ditingkatkan secara default di fungsi jarak jauh yang di-deploy oleh BigQuery DataFrames.
Menginstal BigQuery DataFrames versi 2.0
Untuk menghindari perubahan yang merusak, sematkan ke versi BigQuery DataFrames tertentu dalam file requirements.txt
(misalnya, bigframes==1.42.0
) atau file pyproject.toml
(misalnya, dependencies = ["bigframes = 1.42.0"]
). Jika sudah siap untuk mencoba versi terbaru, Anda dapat menjalankan pip install --upgrade bigframes
untuk menginstal BigQuery DataFrames versi terbaru.
Menggunakan opsi allow_large_results
BigQuery memiliki batas ukuran respons maksimum untuk tugas kueri.
Mulai BigQuery DataFrames versi 2.0, BigQuery DataFrames menerapkan batas ini secara default dalam metode yang menampilkan hasil ke klien, seperti peek()
, to_pandas()
, dan to_pandas_batches()
. Jika tugas menampilkan
hasil yang besar, Anda dapat menetapkan allow_large_results
ke True
di
objek BigQueryOptions
untuk menghindari perubahan yang merusak. Opsi ini ditetapkan ke
False
secara default di BigQuery DataFrames versi 2.0.
import bigframes.pandas as bpd bpd.options.bigquery.allow_large_results = True
Anda dapat mengganti opsi allow_large_results
menggunakan
parameter allow_large_results
di to_pandas()
dan metode lainnya. Contoh:
bf_df = bpd.read_gbq(query) # ... other operations on bf_df ... pandas_df = bf_df.to_pandas(allow_large_results=True)
Menggunakan dekorator @remote_function
BigQuery DataFrames versi 2.0 membuat beberapa perubahan pada perilaku default dekorator @remote_function
.
Argumen kata kunci diterapkan untuk parameter yang ambigu
Untuk mencegah penerusan nilai ke parameter yang tidak diinginkan, DataFrame BigQuery versi 2.0 dan yang lebih baru menerapkan penggunaan argumen kata kunci untuk parameter berikut:
bigquery_connection
reuse
name
packages
cloud_function_service_account
cloud_function_kms_key_name
cloud_function_docker_repository
max_batching_rows
cloud_function_timeout
cloud_function_max_instances
cloud_function_vpc_connector
cloud_function_memory_mib
cloud_function_ingress_settings
Saat menggunakan parameter ini, berikan nama parameter. Contoh:
@remote_function( name="my_remote_function", ... ) def my_remote_function(parameter: int) -> str: return str(parameter)
Menetapkan akun layanan
Mulai versi 2.0, BigQuery DataFrames tidak lagi menggunakan akun layanan Compute Engine secara default untuk fungsi Cloud Run yang di-deploy. Untuk membatasi izin fungsi yang Anda deploy,
- Buat akun layanan dengan izin minimal.
- Berikan email akun layanan ke parameter
cloud_function_service_account
dari dekorator@remote_function
.
Contoh:
@remote_function( cloud_function_service_account="my-service-account@my-project.s3ns-system.iam.gserviceaccount.com", ... ) def my_remote_function(parameter: int) -> str: return str(parameter)
Jika ingin menggunakan akun layanan Compute Engine, Anda dapat menetapkan
parameter cloud_function_service_account
dari dekorator @remote_function
ke "default"
. Contoh:
# This usage is discouraged. Use only if you have a specific reason to use the # default Compute Engine service account. @remote_function(cloud_function_service_account="default", ...) def my_remote_function(parameter: int) -> str: return str(parameter)
Menetapkan setelan traffic masuk
Mulai versi 2.0, BigQuery DataFrames menetapkan setelan masuk fungsi Cloud Run yang di-deploy ke "internal-only"
. Sebelumnya, setelan ingress ditetapkan ke
"all"
secara default. Anda dapat mengubah setelan traffic masuk dengan menetapkan
parameter cloud_function_ingress_settings
dekorator @remote_function
.
Contoh:
@remote_function(cloud_function_ingress_settings="internal-and-gclb", ...) def my_remote_function(parameter: int) -> str: return str(parameter)
Menggunakan endpoint kustom
Pada versi BigQuery DataFrames sebelum 2.0, jika suatu region tidak mendukung endpoint layanan regional dan bigframes.pandas.options.bigquery.use_regional_endpoints = True
, BigQuery DataFrames akan kembali ke endpoint lokasi. BigQuery DataFrames versi 2.0
menghapus perilaku penggantian ini. Untuk terhubung ke
endpoint lokasi di versi 2.0, tetapkan
opsi bigframes.pandas.options.bigquery.client_endpoints_override
. Misalnya:
import bigframes.pandas as bpd bpd.options.bigquery.client_endpoints_override = { "bqclient": "https://LOCATION-bigquery.googleapis.com", "bqconnectionclient": "LOCATION-bigqueryconnection.googleapis.com", "bqstoragereadclient": "LOCATION-bigquerystorage.googleapis.com", }
Ganti LOCATION dengan nama lokasi BigQuery yang ingin Anda hubungkan.
Menggunakan modul bigframes.ml.llm
Di BigQuery DataFrames versi 2.0, model_name
default untuk
GeminiTextGenerator
telah diperbarui menjadi "gemini-2.0-flash-001"
. Sebaiknya
pasok model_name
secara langsung untuk menghindari kerusakan jika
model default berubah pada masa mendatang.
import bigframes.ml.llm model = bigframes.ml.llm.GeminiTextGenerator(model_name="gemini-2.0-flash-001")
Input dan output
Dengan menggunakan library bigframes.pandas
, Anda dapat mengakses data dari berbagai
sumber, termasuk file CSV lokal, file Cloud Storage, DataFrame pandas
, model BigQuery, dan fungsi BigQuery. Kemudian, Anda dapat memuat data tersebut ke dalam DataFrame BigQuery DataFrames. Anda juga dapat membuat tabel BigQuery dari DataFrame BigQuery.
Memuat data dari tabel atau kueri BigQuery
Anda dapat membuat DataFrame dari tabel atau kueri BigQuery dengan cara berikut:
Memuat data dari file CSV
Anda dapat membuat DataFrame dari file CSV lokal atau Cloud Storage dengan cara berikut:
Jenis data
BigQuery DataFrames mendukung jenis data numpy dan pandas berikut:
BigQuery | BigQuery DataFrames dan pandas |
---|---|
ARRAY |
pandas.ArrowDtype(pa.list_()) |
BOOL |
pandas.BooleanDtype() |
DATE |
pandas.ArrowDtype(pa.date32()) |
DATETIME |
pandas.ArrowDtype(pa.timestamp("us")) |
FLOAT64 |
pandas.Float64Dtype() |
GEOGRAPHY |
Hanya didukung oleh |
INT64 |
pandas.Int64Dtype() |
JSON |
pandas.ArrowDtype(pa.json_(pa.string()) di pandas versi
3.0 atau yang lebih baru dan pyarrow versi 19.0 atau yang lebih baru. Jika tidak, kolom JSON akan
ditampilkan sebagai pandas.ArrowDtype(db_dtypes.JSONArrowType()) . |
STRING |
pandas.StringDtype(storage="pyarrow") |
STRUCT |
pandas.ArrowDtype(pa.struct()) |
TIME |
pandas.ArrowDtype(pa.time64("us")) |
TIMESTAMP |
pandas.ArrowDtype(pa.timestamp("us", tz="UTC")) |
DataFrame BigQuery tidak mendukung jenis data BigQuery berikut:
NUMERIC
BIGNUMERIC
INTERVAL
RANGE
Semua jenis data BigQuery lainnya ditampilkan sebagai jenis objek.
Manipulasi data
Bagian berikut menjelaskan kemampuan manipulasi data untuk
DataFrame BigQuery. Anda dapat menemukan fungsi yang dijelaskan dalam
library bigframes.bigquery
.
pandas API
Fitur penting dari BigQuery DataFrames adalah
bigframes.pandas
API
dirancang agar mirip dengan API di library pandas. Dengan desain ini, Anda dapat menggunakan
pola sintaksis yang sudah dikenal untuk tugas manipulasi data. Operasi yang ditentukan melalui
BigQuery DataFrames API dijalankan di sisi server, yang beroperasi langsung
pada data yang disimpan dalam BigQuery dan menghilangkan kebutuhan untuk
mentransfer set data dari BigQuery.
Untuk memeriksa API pandas yang didukung oleh BigQuery DataFrames, lihat API pandas yang didukung.
Memeriksa dan memanipulasi data
Anda dapat menggunakan bigframes.pandas
API untuk melakukan operasi pemeriksaan dan
penghitungan data. Contoh kode berikut menggunakan library bigframes.pandas
untuk memeriksa kolom body_mass_g
, menghitung rata-rata body_mass
, dan menghitung rata-rata body_mass
menurut species
:
Library BigQuery
Library BigQuery menyediakan fungsi SQL BigQuery yang mungkin tidak memiliki padanan pandas. Bagian berikut menampilkan beberapa contoh.
Memproses nilai array
Anda dapat menggunakan fungsi bigframes.bigquery.array_agg()
di
library bigframes.bigquery
untuk menggabungkan nilai setelah operasi groupby
:
Anda juga dapat menggunakan fungsi array array_length()
dan array_to_string()
.
Membuat seri struct
Anda dapat menggunakan fungsi bigframes.bigquery.struct()
di
library bigframes.bigquery
untuk membuat deret struct baru dengan subkolom untuk
setiap kolom dalam DataFrame:
Mengonversi stempel waktu ke Unix epoch
Anda dapat menggunakan fungsi bigframes.bigquery.unix_micros()
di library bigframes.bigquery
untuk mengonversi stempel waktu menjadi mikrodetik Unix:
Anda juga dapat menggunakan fungsi waktu unix_seconds()
dan unix_millis()
.
Menggunakan fungsi skalar SQL
Anda dapat menggunakan fungsi bigframes.bigquery.sql_scalar()
di
library bigframes.bigquery
untuk mengakses sintaksis SQL arbitrer yang mewakili
ekspresi kolom tunggal:
Fungsi Python kustom
BigQuery DataFrames memungkinkan Anda mengubah fungsi Python kustom menjadi artefak BigQuery yang dapat Anda jalankan di objek BigQuery DataFrames dalam skala besar. Dukungan ekstensi ini memungkinkan Anda melakukan operasi di luar yang dapat dilakukan dengan BigQuery DataFrames dan SQL API, sehingga Anda berpotensi memanfaatkan library open source. Dua varian mekanisme ekstensi ini dijelaskan di bagian berikut.
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 kumpulan lengkap parameter yang didukung, lihat udf.
Pembersihan
Selain membersihkan artefak cloud langsung di konsol Trusted Cloud atau dengan alat lain, Anda dapat membersihkan UDF BigQuery DataFrames yang dibuat dengan argumen nama eksplisit menggunakan perintah bigframes.pandas.get_global_session().bqclient.delete_routine(routine_id)
.
Persyaratan
Untuk menggunakan UDF BigQuery DataFrames, aktifkan BigQuery API di project Anda. Jika Anda memberikan parameter bigquery_connection
dalam project, Anda juga harus mengaktifkan BigQuery Connection API.
Batasan
- Kode dalam UDF harus mandiri, artinya, kode 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 dieksekusi di cloud.
- Menjalankan ulang kode definisi UDF setelah perubahan kecil pada kode fungsi—misalnya, mengganti nama variabel atau menyisipkan baris baru—akan menyebabkan UDF dibuat ulang, meskipun perubahan ini tidak berpengaruh pada perilaku fungsi.
- Kode pengguna dapat dilihat oleh pengguna dengan akses baca di rutinitas BigQuery, jadi Anda harus menyertakan konten sensitif hanya dengan hati-hati.
- Sebuah 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:
- Fungsi Cloud Run.
- Koneksi BigQuery.
Secara default, koneksi bernama
bigframes-default-connection
akan 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.
Koneksi BigQuery dibuat di lokasi yang sama dengan sesi DataFrame BigQuery, menggunakan nama yang Anda berikan dalam definisi fungsi kustom. Untuk melihat dan mengelola koneksi, lakukan tindakan berikut:
Di Trusted Cloud konsol, buka halaman BigQuery.
Pilih project tempat Anda membuat fungsi jarak jauh.
Di panel Penjelajah, luaskan project, lalu luaskan Koneksi eksternal.
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, DataFrame BigQuery akan menerapkan nama default yang dimulai dengan awalan bigframes
. Untuk melihat dan mengelola fungsi jarak jauh yang dibuat di set data yang ditentukan pengguna, lakukan tindakan berikut:
Di Trusted Cloud konsol, buka halaman BigQuery.
Pilih project tempat Anda membuat fungsi jarak jauh.
Di panel Explorer, luaskan project, luaskan set data tempat Anda membuat fungsi jarak jauh, lalu luaskan Routines.
Untuk melihat dan mengelola fungsi Cloud Run, lakukan hal berikut:
Buka halaman Cloud Run.
Pilih project tempat Anda membuat fungsi.
Filter berdasarkan Jenis Deployment Fungsi dalam daftar layanan yang tersedia.
Untuk mengidentifikasi fungsi yang dibuat oleh BigQuery DataFrame, cari nama fungsi dengan awalan
bigframes
.
Pembersihan
Selain membersihkan artefak cloud secara langsung di konsol Trusted Cloud atau dengan alat lain, Anda dapat membersihkan 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 perintahbigframes.pandas.clean_up_by_session_id(session_id)
.
Anda juga dapat membersihkan fungsi jarak jauh BigQuery yang dibuat dengan argumen nama eksplisit dan fungsi Cloud Run terkait menggunakan perintah bigframes.pandas.get_global_session().bqclient.delete_routine(routine_id)
.
Persyaratan
Untuk menggunakan fungsi jarak jauh BigQuery DataFrames, Anda harus mengaktifkan API berikut:
- BigQuery API (
bigquery.googleapis.com
) - BigQuery Connection API (
bigqueryconnection.googleapis.com
) - Cloud Functions API (
cloudfunctions.googleapis.com
) - Cloud Run Admin API (
run.googleapis.com
) - Artifact Registry API (
artifactregistry.googleapis.com
) - Cloud Build API (
cloudbuild.googleapis.com
) - Compute Engine API (
compute.googleapis.com
) Cloud Resource Manager API (
cloudresourcemanager.googleapis.com
)Anda dapat menghindari persyaratan ini dengan menetapkan opsi
bigframes.pandas.options.bigquery.skip_bq_connection_check
keTrue
. Dalam hal ini, koneksi (baik default maupun pra-dikonfigurasi) akan digunakan apa adanya tanpa memeriksa keberadaan koneksi atau memverifikasi izinnya.
Batasan
- Fungsi jarak jauh memerlukan waktu sekitar 90 detik untuk dapat digunakan saat Anda pertama kali membuatnya. Dependensi paket tambahan dapat menambah latensi.
- Menjalankan ulang kode definisi fungsi jarak jauh setelah perubahan kecil di dalam dan di sekitar kode fungsi—misalnya, mengganti nama variabel, menyisipkan baris baru, atau menyisipkan sel baru di notebook—mungkin menyebabkan fungsi jarak jauh dibuat ulang, meskipun perubahan ini tidak berpengaruh pada perilaku fungsi.
- Kode pengguna dapat dilihat oleh pengguna dengan akses baca di fungsi Cloud Run, jadi Anda hanya boleh menyertakan konten sensitif dengan hati-hati.
- Project dapat memiliki maksimal 1.000 fungsi Cloud Run sekaligus di suatu region. Untuk mengetahui informasi selengkapnya, lihat Kuota.
ML dan AI
Bagian berikut menjelaskan kemampuan ML dan AI untuk
DataFrame BigQuery. Kemampuan ini menggunakan library bigframes.ml
.
Lokasi ML
Library bigframes.ml
mendukung lokasi yang sama dengan BigQuery ML. Prediksi model BigQuery ML dan fungsi ML lainnya didukung di semua region BigQuery. Dukungan untuk
pelatihan model bervariasi menurut wilayah. Untuk mengetahui informasi selengkapnya, lihat
Lokasi BigQuery ML.
Melakukan prapemrosesan data
Buat pengubah untuk menyiapkan data agar dapat digunakan dalam estimator (model) dengan menggunakan modul bigframes.ml.preprocessing dan modul bigframes.ml.compose. DataFrame BigQuery menawarkan transformasi berikut:
Gunakan class KBinsDiscretizer dalam modul
bigframes.ml.preprocessing
untuk mengelompokkan data berkelanjutan ke dalam interval.Gunakan class LabelEncoder dalam modul
bigframes.ml.preprocessing
untuk menormalisasi label target sebagai nilai bilangan bulat.Gunakan class MaxAbsScaler dalam modul
bigframes.ml.preprocessing
untuk menskalakan setiap fitur ke rentang[-1, 1]
berdasarkan nilai absolut maksimumnya.Gunakan class MinMaxScaler di modul
bigframes.ml.preprocessing
untuk menstandarkan fitur dengan menskalakan setiap fitur ke rentang[0, 1]
.Gunakan class StandardScaler di modul
bigframes.ml.preprocessing
untuk menstandarkan fitur dengan menghapus rata-rata dan penskalaan ke varian unit.Gunakan class OneHotEncoder dalam modul
bigframes.ml.preprocessing
untuk mengubah nilai kategoris menjadi format numerik.Gunakan class ColumnTransformer di modul
bigframes.ml.compose
untuk menerapkan pengubah ke kolom DataFrames.
Melatih model
Anda dapat membuat estimator untuk melatih model di BigQuery DataFrames.
Model pengelompokan
Anda dapat membuat estimator untuk model pengelompokan menggunakan modul bigframes.ml.cluster.
- Gunakan class KMeans untuk membuat model pengelompokan K-means. Gunakan model ini untuk segmentasi data. Misalnya, mengidentifikasi segmen pelanggan. K-means adalah teknik unsupervised learning, sehingga pelatihan model tidak memerlukan label atau data terpisah untuk pelatihan atau evaluasi.
Anda dapat menggunakan modul bigframes.ml.cluster
untuk membuat estimator untuk
model pengelompokan.
Contoh kode berikut menunjukkan penggunaan class bigframes.ml.cluster KMeans
untuk membuat model pengelompokan k-means untuk segmentasi data:
Model dekomposisi
Anda dapat membuat estimator untuk model dekomposisi menggunakan modul bigframes.ml.decomposition.
- Gunakan class PCA untuk membuat model analisis komponen utama (PCA). Gunakan model ini untuk menghitung komponen utama dan menggunakannya untuk melakukan perubahan dasar pada data. Analisis ini memberikan pengurangan dimensi dengan memproyeksikan setiap titik data ke hanya beberapa komponen utama pertama guna mendapatkan data dimensi yang lebih rendah sekaligus mempertahankan variasi data sebanyak mungkin.
Model ensemble
Anda dapat membuat estimator untuk model ensemble menggunakan modul bigframes.ml.ensemble.
Gunakan class RandomForestClassifier untuk membuat model pengklasifikasi random forest. Gunakan model ini untuk membuat beberapa pohon keputusan metode pembelajaran untuk klasifikasi.
Gunakan class RandomForestRegressor untuk membuat model regresi random forest. Gunakan model ini untuk membuat beberapa pohon keputusan metode pembelajaran untuk regresi.
Gunakan class XGBClassifier untuk membuat model pengklasifikasi boosted tree gradien. Gunakan model ini untuk membuat beberapa pohon keputusan metode pembelajaran secara tambahan untuk klasifikasi.
Gunakan class XGBRegressor untuk membuat model regresi boosted tree gradien. Gunakan model ini untuk membuat beberapa pohon keputusan metode pembelajaran secara tambahan untuk regresi.
Model peramalan
Anda dapat membuat estimator untuk model perkiraan menggunakan modul bigframes.ml.forecasting.
- Gunakan class ARIMAPlus untuk membuat model perkiraan deret waktu.
Model yang diimpor
Anda dapat membuat estimator untuk model yang diimpor menggunakan modul bigframes.ml.imported.
Gunakan class ONNXModel untuk mengimpor model Open Neural Network Exchange (ONNX).
Gunakan class TensorFlowModel untuk mengimpor model TensorFlow.
Gunakan class XGBoostModel untuk mengimpor model XGBoostModel.
Model linear
Buat estimator untuk model linear menggunakan modul bigframes.ml.linear_model.
Gunakan class LinearRegression untuk membuat model regresi linear. Gunakan model ini untuk perkiraan. Misalnya, memperkirakan penjualan suatu item pada hari tertentu.
Gunakan class LogisticRegression untuk membuat model regresi logistik. Gunakan model ini untuk klasifikasi dua atau beberapa nilai yang mungkin, seperti apakah inputnya
low-value
,medium-value
, atauhigh-value
.
Contoh kode berikut menunjukkan penggunaan bigframes.ml
untuk melakukan
hal berikut:
- Memuat data dari BigQuery
- Membersihkan dan menyiapkan data pelatihan
- Membuat dan menerapkan model regresi bigframes.ml.LinearRegression
Model Bahasa Besar
Anda dapat membuat estimator untuk LLM menggunakan modul bigframes.ml.llm.
Gunakan class GeminiTextGenerator untuk membuat model generator teks Gemini. Gunakan model ini untuk tugas pembuatan teks.
Gunakan modul
bigframes.ml.llm
untuk membuat estimator model bahasa besar (LLM) jarak jauh.
Contoh kode berikut menunjukkan penggunaan class GeminiTextGenerator
bigframes.ml.llm
untuk membuat model Gemini guna pembuatan kode:
Model jarak jauh
Untuk menggunakan model jarak jauh BigQuery DataFrames ML (bigframes.ml.remote
atau bigframes.ml.llm
), Anda harus mengaktifkan API berikut:
Cloud Resource Manager API (
cloudresourcemanager.googleapis.com
)Anda dapat menghindari persyaratan ini dengan menetapkan opsi
bigframes.pandas.options.bigquery.skip_bq_connection_check
keTrue
. Dalam hal ini, koneksi (baik default maupun pra-dikonfigurasi) akan digunakan apa adanya tanpa memeriksa keberadaan koneksi atau memverifikasi izinnya.
Membuat model jarak jauh di BigQuery DataFrames akan membuat
koneksi BigQuery.
Secara default, koneksi dengan nama bigframes-default-connection
akan digunakan. Anda
dapat menggunakan koneksi BigQuery yang telah dikonfigurasi sebelumnya jika mau,
dan dalam hal ini pembuatan koneksi akan dilewati. Akun layanan
untuk koneksi default diberi
peran Vertex AI User (roles/aiplatform.user
) di project.
Membuat pipeline
Anda dapat membuat pipeline ML menggunakan modul bigframes.ml.pipeline. Pipeline memungkinkan Anda menyusun beberapa langkah ML untuk divalidasi silang secara bersamaan sekaligus menetapkan parameter yang berbeda. Hal ini menyederhanakan kode Anda, dan memungkinkan Anda men-deploy langkah prapemrosesan data dan estimator secara bersamaan.
Gunakan class Pipeline untuk membuat pipeline transformasi dengan estimator akhir.
Memilih model
Gunakan modul bigframes.ml.model_selection untuk membagi set data pelatihan dan pengujian, serta memilih model terbaik:
Gunakan fungsi
train_test_split
untuk membagi data menjadi set pelatihan dan pengujian (evaluasi), seperti yang ditunjukkan dalam contoh kode berikut:X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
Gunakan class
KFold
dan metodeKFold.split
untuk membuat set pelatihan dan pengujian multi-lipatan guna melatih dan mengevaluasi model, seperti yang ditunjukkan dalam contoh kode berikut. Fitur ini sangat berguna untuk set data berukuran kecil.kf = KFold(n_splits=5) for i, (X_train, X_test, y_train, y_test) in enumerate(kf.split(X, y)): # Train and evaluate models with training and testing sets
Gunakan fungsi
cross_validate
untuk membuat set pelatihan dan pengujian multi-lipatan secara otomatis, melatih dan mengevaluasi model, serta mendapatkan hasil dari setiap lipatan, seperti yang ditunjukkan dalam contoh kode berikut:scores = cross_validate(model, X, y, cv=5)
Pengoptimalan performa
Bagian ini menyajikan cara mengoptimalkan performa DataFrame BigQuery.
Mode pengurutan sebagian
BigQuery DataFrame menyediakan fitur mode pengurutan. Tetapkan properti ordering_mode
ke partial
untuk menghasilkan kueri yang lebih efisien.
Mode pengurutan partial
kontras dengan mode strict
default,
yang membuat pengurutan total di semua baris. Pengurutan total membuat
DataFrame BigQuery lebih kompatibel dengan pandas dengan menyediakan
akses berbasis urutan ke baris dengan properti DataFrame.iloc
. Namun,
urutan total dan indeks berurutan default pada urutan tersebut berarti
bahwa filter kolom maupun filter baris tidak mengurangi jumlah byte
yang dipindai, kecuali jika filter tersebut diterapkan sebagai parameter ke
fungsi read_gbq
dan read_gbq_table
. Untuk memberikan pengurutan total
di semua baris dalam DataFrame, BigQuery DataFrames membuat
hash dari semua baris. Hal ini dapat menyebabkan pemindaian data lengkap yang mengabaikan filter baris
dan kolom.
Menetapkan properti ordering_mode
ke partial
akan menghentikan
DataFrame BigQuery agar tidak menghasilkan pengurutan total di semua
baris. Mode pengurutan sebagian juga menonaktifkan fitur yang memerlukan
pengurutan total di semua baris, seperti properti DataFrame.iloc
.
Mode pengurutan parsial menetapkan class
DefaultIndexKind
ke indeks null, bukan ke indeks berurutan berdasarkan pengurutan.
Saat memfilter DataFrame dengan properti ordering_mode
yang ditetapkan ke partial
,
BigQuery DataFrames tidak perlu lagi menghitung baris mana yang
tidak ada dalam indeks berurutan, sehingga menghasilkan kueri yang lebih cepat dan
lebih efisien. BigQuery DataFrames API masih merupakan pandas API yang sudah dikenal, seperti pengalaman default dengan mode pengurutan yang ketat.
Namun, mode pengurutan parsial akan berbeda dengan perilaku pandas umum. Misalnya, mode pengurutan parsial tidak melakukan join implisit menurut indeks.
Dengan mode pengurutan parsial dan ketat, Anda membayar resource BigQuery yang Anda gunakan. Namun, menggunakan mode pengurutan sebagian dapat mengurangi biaya saat menggunakan tabel berkelompok besar dan tabel berpartisi, karena filter baris pada kolom cluster dan partisi mengurangi jumlah byte yang diproses.
Penggunaan
Untuk menggunakan pengurutan sebagian, tetapkan properti ordering_mode
ke partial
sebelum
melakukan operasi lain dengan DataFrame BigQuery, seperti
yang ditunjukkan dalam contoh kode berikut:
Karena tidak ada indeks berurutan dengan mode pengurutan parsial, DataFrame BigQuery yang tidak terkait tidak digabungkan secara implisit.
Sebagai gantinya, Anda harus memanggil metode DataFrame.merge
secara eksplisit untuk menggabungkan
dua DataFrame BigQuery yang berasal dari ekspresi tabel
yang berbeda.
Fitur Series.unique()
dan Series.drop_duplicates()
tidak
kompatibel dengan mode pengurutan sebagian. Sebagai gantinya, gunakan metode groupby
untuk menemukan nilai unik dengan cara ini:
Dengan mode pengurutan parsial, output fungsi DataFrame.head(n)
dan Series.head(n)
tidak idempoten di seluruh
semua pemanggilan. Untuk mendownload sampel data arbitrer yang kecil, gunakan
metode DataFrame.peek()
atau Series.peek()
.
Untuk tutorial mendetail tentang cara menggunakan properti ordering_mode = "partial"
, lihat notebook BigQuery DataFrames ini yang menunjukkan penggunaan mode pengurutan parsial.
Pemecahan masalah
Karena DataFrame dalam mode pengurutan parsial tidak selalu memiliki pengurutan atau indeks, Anda mungkin mengalami masalah berikut saat menggunakan beberapa metode yang kompatibel dengan pandas.
Error pesanan diperlukan
Beberapa fitur memerlukan pengurutan, seperti fungsi DataFrame.head()
dan
DataFrame.iloc
. Untuk daftar fitur yang memerlukan
pengurutan, lihat kolom Memerlukan pengurutan di API pandas
yang didukung.
Jika tidak ada pengurutan pada objek, operasi akan gagal dengan
pesan OrderRequiredError
seperti berikut:
OrderRequiredError: Op iloc requires an ordering. Use .sort_values or .sort_index to provide an ordering.
Seperti yang dijelaskan pesan error, Anda dapat memberikan pengurutan menggunakan metode DataFrame.sort_values()
untuk mengurutkan menurut satu atau beberapa kolom. Operasi lain, seperti operasi
DataFrame.groupby()
, secara implisit memberikan pengurutan total atas grup menurut kunci.
Jika pengurutan tidak dapat ditentukan sebagai pengurutan total yang sepenuhnya stabil
di semua baris, operasi berikutnya mungkin memperingatkan Anda dengan
pesan AmbiguousWindowWarning
seperti berikut:
AmbiguousWindowWarning: Window ordering may be ambiguous, this can cause unstable results.
Jika beban kerja Anda dapat mengakomodasi hasil non-deterministik atau Anda dapat
memverifikasi secara manual bahwa pengurutan yang Anda berikan adalah pengurutan total, Anda
dapat memfilter pesan AmbiguousWindowWarning
dengan cara ini:
Error indeks null
Beberapa fitur memerlukan indeks, seperti properti DataFrame.unstack()
dan
Series.interpolate()
. Untuk daftar fitur yang memerlukan
indeks, lihat kolom Requires index di API pandas
yang didukung.
Saat Anda menggunakan operasi yang memerlukan indeks dengan mode pengurutan
sebagian, operasi akan menampilkan pesan NullIndexError
seperti
berikut:
NullIndexError: DataFrame cannot perform interpolate as it has no index. Set an index using set_index.
Seperti yang dijelaskan pesan error, Anda dapat memberikan indeks menggunakan metode DataFrame.set_index()
untuk mengurutkan menurut satu atau beberapa kolom. Operasi lain, seperti operasi
DataFrame.groupby()
, secara implisit memberikan indeks di seluruh grup berdasarkan kunci, kecuali jika
parameter as_index=False
ditetapkan.
Visualisasi
bigframes.pandas
API adalah gateway ke ekosistem alat
Python lengkap. API ini mendukung operasi statistik lanjutan, dan Anda dapat memvisualisasikan agregasi yang dihasilkan dari BigQuery DataFrames.
Anda juga dapat beralih dari DataFrame BigQuery DataFrames ke
DataFrame pandas
dengan operasi sampling bawaan.
Langkah berikutnya
- Pelajari cara membuat kode BigQuery DataFrames dengan Gemini.
- Pelajari cara menganalisis download paket dari PyPI dengan DataFrame BigQuery.
- Lihat kode sumber, notebook contoh, dan contoh BigQuery DataFrames di GitHub.
- Jelajahi referensi BigQuery DataFrames API.