Menggunakan DataFrame BigQuery
BigQuery DataFrames menyediakan Pythonic DataFrame dan machine learning (ML) API
yang didukung oleh mesin BigQuery. DataFrames BigQuery adalah paket {i>open source<i}.
Anda dapat menjalankan pip install --upgrade bigframes
untuk menginstal versi terbaru.
BigQuery DataFrames menyediakan dua library:
bigframes.pandas
, yang menyediakan API yang kompatibel dengan pandas untuk analisis.bigframes.ml
, yang menyediakan API seperti scikit-learn untuk machine learning (ML).
Izin yang diperlukan
- Anda harus memiliki peran BigQuery Job User dan BigQuery Read Session User untuk menggunakan BigQuery DataFrames.
- Saat Anda melakukan autentikasi pengguna akhir di lingkungan interaktif seperti notebook, Python REPL, atau command line, BigQuery DataFrames akan meminta autentikasi jika diperlukan. Jika tidak, lihat cara menyiapkan kredensial default aplikasi untuk berbagai lingkungan.
- Persyaratan Identity and Access Management (IAM) tambahan berlaku untuk penggunaan fungsi jarak jauh dan model jarak jauh ML.
-
Untuk menggunakan DataFrames BigQuery di notebook BigQuery, Anda memerlukan peran IAM berikut:
Opsi
Setelah penginstalan, Anda harus menentukan lokasi dan project tempat Anda ingin menggunakan BigQuery DataFrames. Anda dapat menentukan lokasi dan proyek di {i>notebook<i} Anda dengan cara berikut:Jika bf.options.bigquery.project
tidak ditetapkan, variabel lingkungan $GOOGLE_CLOUD_PROJECT
akan digunakan, yang ditetapkan dalam runtime notebook yang menayangkan
notebook BigQuery Studio dan Vertex AI.
Lokasi pemrosesan data
BigQuery DataFrames dirancang untuk penskalaan, 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, pembatasan memori
mesin klien Anda akan berlaku.
Lokasi sesi
BigQuery DataFrames menggunakan objek sesi lokal untuk secara internal guna mengelola metadata. Sesi
ini terikat dengan lokasi.
BigQuery DataFrames 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.
DataFrames BigQuery
mengisi bf.options.bigquery.location
secara otomatis 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 dikueri tidak berada dalam multi-region US
. Jika mencoba membaca tabel dari lokasi lain, Anda akan mendapatkan pengecualian NotFound
.
Jenis data
BigQuery DataFrames mendukung dtype numpy dan pandas berikut:
BigQuery | BigQuery DataFrames dan pandas |
---|---|
BOOL |
pandas.BooleanDtype() |
DATE |
pandas.ArrowDtype(pa.date32()) |
DATETIME |
pandas.ArrowDtype(pa.timestamp("us")) |
FLOAT64 |
pandas.Float64Dtype() |
GEOGRAPHY |
Didukung oleh |
INT64 |
pandas.Int64Dtype() |
STRING |
pandas.StringDtype(storage="pyarrow") |
STRUCT |
pandas.ArrowDtype(pa.struct()) |
TIME |
pandas.ArrowDtype(pa.time64("us")) |
TIMESTAMP |
pandas.ArrowDtype(pa.timestamp("us", tz="UTC")) |
BigQuery DataFrames tidak mendukung jenis data BigQuery berikut:
ARRAY
NUMERIC
BIGNUMERIC
INTERVAL
RANGE
JSON
Semua jenis data BigQuery lainnya ditampilkan sebagai jenis objek.
Menggunakan library bigframes.pandas
Library bigframes.pandas
menyediakan API mirip pandas
yang dapat Anda gunakan untuk menganalisis dan memanipulasi data di BigQuery. bigframes.pandas
API bersifat skalabel untuk mendukung pemrosesan data BigQuery berukuran terabyte, dan menggunakan mesin kueri BigQuery untuk melakukan penghitungan.
bigframes.pandas
API memberikan kemampuan
berikut:
Input dan output
Anda dapat mengakses data dari berbagai sumber, termasuk file CSV lokal,
file Cloud Storage, pandas
DataFrames, model BigQuery, dan
fungsi BigQuery, serta memuatnya ke dalam DataFrame BigQuery. Anda juga dapat membuat
tabel BigQuery dari DataFrames BigQuery.
Manipulasi data
Anda dapat menggunakan Python, bukan SQL, untuk pengembangan. Anda dapat mengembangkan semua
manipulasi data BigQuery di Python, sehingga tidak perlu berganti
bahasa dan mencoba menangkap pernyataan SQL sebagai string teks. bigframes.pandas
API menawarkan lebih dari 750 fungsi pandas
.
Ekosistem dan visualisasi python
bigframes.pandas
API adalah gerbang menuju ekosistem alat Python yang lengkap. API ini mendukung operasi statistik lanjutan, dan Anda dapat memvisualisasikan agregasi yang dihasilkan dari DataFrame BigQuery. Anda juga dapat
beralih dari DataFrame BigQuery DataFrame ke DataFrame pandas
dengan
operasi pengambilan sampel bawaan.
Fungsi Python kustom
BigQuery DataFrames memungkinkan Anda mengubah fungsi skalar kustom menjadi fungsi jarak jauh BigQuery . Membuat fungsi jarak jauh di DataFrame BigQuery akan membuat:
Koneksi BigQuery. Secara default, koneksi nama
bigframes-default-connection
digunakan. Anda dapat menggunakan koneksi BigQuery yang telah dikonfigurasi sebelumnya jika ingin, dalam hal ini pembuatan koneksi akan dilewati.Akun layanan untuk koneksi default diberi peran IAM berikut:
- Invoker Cloud Run (
roles/run.invoker
) - Pengguna Vertex AI (
roles/aiplatform.user
)
- Invoker Cloud Run (
Fungsi jarak jauh BigQuery yang menggunakan cloud function (1) menggunakan koneksi BigQuery (2).
Untuk contohnya, lihat Membuat fungsi jarak jauh.
Koneksi BigQuery dibuat di lokasi yang sama dengan sesi DataFrames BigQuery, menggunakan nama yang Anda berikan dalam definisi fungsi kustom. Untuk melihat dan mengelola koneksi, lakukan hal berikut:
Pilih project tempat Anda membuat fungsi jarak jauh.
Di panel Explorer, perluas proyek tersebut lalu perluas koneksi Eksternal.
Fungsi jarak jauh BigQuery dibuat dalam set data yang Anda tentukan, atau dalam jenis khusus set data tersembunyi yang disebut dalam kode sebagai set data anonim. Untuk melihat dan mengelola fungsi jarak jauh yang dibuat dalam set data yang disediakan pengguna, lakukan hal berikut:
Pilih project tempat Anda membuat fungsi jarak jauh.
Di panel Explorer, luaskan project tersebut, luaskan set data tempat Anda membuat fungsi jarak jauh, lalu luaskan Rutinitas.
Untuk melihat dan mengelola fungsi Cloud Functions, gunakan halaman Functions dan gunakan pemilih project untuk memilih project tempat Anda membuat fungsi. Untuk memudahkan identifikasi, nama fungsi yang dibuat oleh DataFrames BigQuery diawali dengan bigframes
.
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
)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 atau yang sudah dikonfigurasi sebelumnya) digunakan apa adanya tanpa memeriksa keberadaan koneksi atau memverifikasi izinnya.
Untuk menggunakan fungsi jarak jauh BigQuery DataFrames, Anda harus diberi peran IAM berikut dalam project:
Editor Data BigQuery (
roles/bigquery.dataEditor
)Admin Koneksi BigQuery (
roles/bigquery.connectionAdmin
)Developer Cloud Functions (
roles/cloudfunctions.developer
)Service Account User (
roles/iam.serviceAccountUser
)Storage Object Viewer (
roles/storage.objectViewer
)Admin IAM Project (
roles/resourcemanager.projectIamAdmin
) jika menggunakan koneksi BigQuery default, atau Browser (peran/browser) jika menggunakan koneksi yang telah dikonfigurasi sebelumnya. Persyaratan ini dapat dihindari dengan menetapkan opsibigframes.pandas.options.bigquery.skip_bq_connection_check
keTrue
, dalam hal ini koneksi (default atau yang telah dikonfigurasi sebelumnya) akan digunakan apa adanya tanpa pemeriksaan keberadaan atau izin apa pun. Jika Anda menggunakan koneksi yang telah dikonfigurasi dan melewati pemeriksaan koneksi, pastikan koneksi dibuat di lokasi yang tepat dan akun layanannya memiliki peran Cloud Run Invoker (roles/run.invoker
) pada project.
Batasan
Fungsi jarak jauh memerlukan waktu sekitar 90 detik agar tersedia saat Anda pertama kali membuatnya.
Perubahan sepele dalam notebook, seperti menyisipkan sel baru atau mengganti nama variabel, dapat menyebabkan fungsi jarak jauh dibuat ulang, meskipun perubahan ini tidak terkait dengan kode fungsi jarak jauh.
BigQuery DataFrames tidak membedakan data pribadi apa pun yang Anda sertakan dalam kode fungsi jarak jauh. Kode fungsi jarak jauh diserialisasi sebagai kotak buram untuk men-deploy-nya sebagai fungsi Cloud Functions.
Fungsi Cloud Functions (generasi ke-2), koneksi BigQuery, dan fungsi jarak jauh BigQuery yang dibuat oleh BigQuery DataFrames tetap ada di Google Cloud. Jika tidak ingin menyimpan resource ini, Anda harus menghapusnya secara terpisah menggunakan antarmuka Cloud Functions atau BigQuery yang sesuai.
Sebuah project dapat memiliki hingga 1.000 fungsi Cloud Functions (generasi ke-2) sekaligus. Lihat kuota Cloud Functions untuk mengetahui semua batas.
bigframes.pandas
contoh
Contoh berikut menunjukkan cara umum untuk menggunakan bigframes.pandas
.
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:
Memeriksa dan memanipulasi data
Anda dapat menggunakan bigframes.pandas
untuk melakukan operasi penghitungan dan
pemeriksaan data.
Contoh kode berikut menunjukkan penggunaan bigframes.pandas
untuk
memeriksa kolom body_mass_g
, menghitung rata-rata
body_mass
, dan menghitung rata-rata body_mass
dengan
species
:
Menggunakan library bigframes.ml
Kemampuan ML dalam DataFrame BigQuery memungkinkan Anda melakukan prapemrosesan data, lalu melatih model pada data tersebut. Anda juga dapat menggabungkan tindakan ini untuk membuat pipeline data.
Lokasi ML
bigframes.ml
mendukung lokasi yang sama dengan BigQuery ML.
Prediksi model ML BigQuery dan fungsi ML lainnya didukung di semua region BigQuery. Dukungan untuk pelatihan model bervariasi menurut region. Untuk informasi
selengkapnya, lihat
Lokasi BigQuery ML.
Melakukan prapemrosesan data
Buat transformer untuk menyiapkan data yang akan digunakan dalam estimator (model) dengan menggunakan modul bigframes.ml.preprocessing dan modul bigframes.ml.compose. BigQuery DataFrames menawarkan transformasi berikut:
Gunakan class KBinsDiscretizer dalam modul
bigframes.ml.preprocessing
untuk mengelompokkan data berkelanjutan ke dalam beberapa 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]
menurut nilai absolut maksimumnya.Gunakan class MinMaxScaler dalam 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 varians unit.Gunakan class OneHotEncoder dalam modul
bigframes.ml.preprocessing
untuk mengubah nilai kategori ke dalam format numerik.Gunakan class ColumnTransformer dalam modul
bigframes.ml.compose
untuk menerapkan transformer ke kolom DataFrames.
Melatih model
Membuat estimator untuk melatih model di DataFrames BigQuery.
Model pengelompokan
Buat estimator untuk pengelompokan model menggunakan modul bigframes.ml.cluster.
- Gunakan class K-means untuk membuat model pengelompokan K-means. Gunakan model-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
dalam
membuat model pengelompokan k-means untuk segmentasi data:
Model dekomposisi
Buat estimator untuk model dekomposisi dengan menggunakan modul bigframes.ml.decompose.
- 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. Cara ini memberikan pengurangan dimensi dengan memproyeksikan setiap titik data hanya ke beberapa komponen utama pertama untuk mendapatkan data dimensi yang lebih rendah sekaligus mempertahankan variasi data sebanyak mungkin.
Model ensemble
Buat estimator untuk model ensemble dengan menggunakan modul bigframes.ml.ensemble.
Gunakan class RandomForestClassifier untuk membuat model pengklasifikasi hutan acak. Gunakan model ini untuk membuat beberapa pohon keputusan metode pembelajaran untuk klasifikasi.
Gunakan class RandomForestRegressor untuk membuat model regresi hutan acak. Gunakan model ini untuk membuat beberapa pohon keputusan metode pembelajaran untuk regresi.
Gunakan class XGBClassifier untuk membuat model pengklasifikasi pohon yang ditingkatkan gradien. Gunakan model ini untuk secara tambahan membuat beberapa pohon keputusan metode pembelajaran untuk klasifikasi.
Gunakan class XGBRegressor untuk membuat model regresi pohon yang didorong gradien. Gunakan model ini untuk secara tambahan membuat beberapa pohon keputusan metode pembelajaran untuk regresi.
Model perkiraan
Buat estimator untuk memperkirakan model dengan menggunakan modul bigframes.ml.forecasting.
- Gunakan class ARIMAPlus untuk membuat model perkiraan deret waktu.
Model yang diimpor
Buat 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 membuat 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, misalnya apakah inputnya adalah
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 (LLM)
Buat estimator untuk LLM dengan menggunakan modul bigframes.ml.llm.
Gunakan class GeminiTextGenerator untuk membuat model generator teks Gemini. Gunakan model-model ini untuk tugas pembuatan teks.
Gunakan class PaLM2TextGenerator untuk membuat model generator teks PaLM2. Gunakan model-model ini untuk tugas pembuatan teks.
Gunakan class PaLM2TextEmbeddingGenerator untuk membuat model generator penyematan teks PaLM2. Gunakan model ini untuk tugas pembuatan penyematan teks.
Anda dapat menggunakan modul bigframes.ml.llm
guna membuat estimator untuk model bahasa besar (LLM) jarak jauh.
Contoh kode berikut menunjukkan penggunaan class bigframes.ml.llm
GeminiTextGenerator
dalam membuat model Gemini untuk 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:
- BigQuery API (
bigquery.googleapis.com
) - BigQuery Connection API (
bigqueryconnection.googleapis.com
) - Vertex AI API API (
aiplatform.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 atau yang sudah dikonfigurasi sebelumnya) digunakan apa adanya tanpa memeriksa keberadaan koneksi atau memverifikasi izinnya.
dan Anda harus diberi peran IAM berikut:
- Editor Data BigQuery (
roles/bigquery.dataEditor
) - Admin Koneksi BigQuery (
roles/bigquery.connectionAdmin
) - Service Account User (
roles/iam.serviceAccountUser
) di akun layananPROJECT_NUMBER-compute@developer.gserviceaccount.com
- Admin IAM Project (
roles/resourcemanager.projectIamAdmin
) jika menggunakan koneksi BigQuery default, atau Browser (peran/browser) jika menggunakan koneksi yang telah dikonfigurasi sebelumnya. Persyaratan ini dapat dihindari dengan menyetel opsibigframes.pandas.options.bigquery.skip_bq_connection_check
keTrue
, dalam hal ini koneksi (default atau yang telah dikonfigurasi sebelumnya) akan digunakan apa adanya tanpa pemeriksaan izin atau keberadaan apa pun. Jika Anda menggunakan koneksi yang telah dikonfigurasi dan melewati pemeriksaan koneksi, pastikan koneksi dibuat di lokasi yang tepat dan akun layanannya memiliki peran Vertex AI User (roles/aiplatform.user
) pada project.
Membuat pipeline
Buat pipeline ML menggunakan modul bigframes.ml.pipeline. Pipeline memungkinkan Anda menyusun beberapa langkah ML untuk divalidasi silang secara bersamaan sambil menetapkan parameter yang berbeda. Hal ini menyederhanakan kode Anda, dan memungkinkan Anda men-deploy langkah pra-pemrosesan data dan estimator bersama-sama.
Gunakan class pipeline untuk membuat pipeline transformasi dengan estimator akhir.