Memuat data dengan operasi lintas-cloud
Sebagai administrator atau analis BigQuery, Anda dapat memuat data dari bucket Amazon Simple Storage Service (Amazon S3) atau Azure Blob Storage ke tabel BigQuery. Anda dapat menggabungkan data yang ditransfer dengan data yang ada di regionGoogle Cloud atau memanfaatkan fitur BigQuery seperti BigQuery ML. Anda juga dapat membuat replika tampilan terwujud dari sumber eksternal tertentu untuk membuat data tersebut tersedia di BigQuery.
Anda dapat mentransfer data ke BigQuery dengan cara berikut:
Transfer data dari file di Amazon S3 dan Azure Blob Storage ke tabel BigQuery, menggunakan pernyataan
LOAD DATA
.Filter data dari file di Amazon S3 atau Blob Storage sebelum mentransfer hasil ke tabel BigQuery menggunakan pernyataan
CREATE TABLE AS SELECT
. Untuk menambahkan data ke tabel tujuan, gunakan pernyataanINSERT INTO SELECT
. Manipulasi data diterapkan pada tabel eksternal yang mereferensikan data dari Amazon S3 atau Blob Storage.Buat replika tampilan yang di-materialisasi dari data eksternal Amazon S3, Apache Iceberg, atau Salesforce Data Cloud dalam set data BigQuery sehingga data tersedia secara lokal di BigQuery.
Kuota dan batas
Untuk mengetahui informasi tentang kuota dan batas, lihat kuota dan batas tugas kueri.
Sebelum memulai
Untuk memberi Google Cloud akses baca yang diperlukan untuk memuat atau memfilter data di cloud lain, minta administrator Anda untuk membuat koneksi dan membagikannya kepada Anda. Untuk mengetahui informasi tentang cara membuat koneksi, lihat Menghubungkan ke Amazon S3 atau Blob Storage.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna memuat data menggunakan transfer lintas-cloud,
minta administrator untuk memberi Anda
peran IAM BigQuery Data Editor (roles/bigquery.dataEditor
)
pada set data.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk memuat data menggunakan transfer lintas cloud. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk memuat data menggunakan transfer lintas-cloud:
-
bigquery.tables.create
-
bigquery.tables.get
-
bigquery.tables.updateData
-
bigquery.tables.update
-
bigquery.jobs.create
-
bigquery.connections.use
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Untuk mengetahui informasi selengkapnya tentang peran IAM di BigQuery, lihat Peran dan izin IAM BigQuery.
Harga
Anda akan dikenai biaya untuk byte yang ditransfer di berbagai cloud menggunakan
pernyataan LOAD
. Untuk mengetahui informasi harga, lihat bagian Transfer Data Lintas Cloud Omni di harga BigQuery Omni.
Anda akan ditagih untuk byte yang ditransfer di berbagai cloud menggunakan
pernyataan CREATE TABLE AS SELECT
atau
pernyataan INSERT INTO SELECT
dan untuk kapasitas komputasi.
Pernyataan LOAD
dan CREATE TABLE AS SELECT
memerlukan slot di
region BigQuery Omni guna memindai file Amazon S3 dan Blob Storage untuk memuatnya. Untuk mengetahui informasi selengkapnya, lihat harga BigQuery Omni.
Untuk replika tampilan terwujud dari sumber data eksternal, biaya juga dapat mencakup harga tampilan terwujud.
Praktik terbaik untuk opsi pemuatan dan filter
- Hindari memuat beberapa file yang berukuran kurang dari 5 MB. Sebagai gantinya, buat tabel eksternal untuk file Anda dan ekspor hasil kueri ke Amazon S3 atau Blob Storage untuk membuat file yang lebih besar. Metode ini membantu meningkatkan waktu transfer data Anda. Untuk mengetahui informasi tentang batas hasil kueri maksimum, lihat Ukuran hasil kueri maksimum BigQuery Omni.
- Jika data sumber Anda berada dalam file yang dikompresi gzip, maka saat membuat tabel eksternal, tetapkan
opsi
external_table_options.compression
keGZIP
.
Muat data
Anda dapat memuat data ke BigQuery dengan
pernyataan LOAD DATA [INTO|OVERWRITE]
.
Batasan
- Koneksi dan set data tujuan harus termasuk dalam project yang sama. Pemuatan data di seluruh project tidak didukung.
LOAD DATA
hanya didukung saat Anda mentransfer data dari Amazon Simple Storage Service (Amazon S3) atau Azure Blob Storage ke region BigQuery yang ditempatkan bersama. Untuk mengetahui informasi selengkapnya, lihat Lokasi.- Anda dapat mentransfer data dari region
US
mana pun ke multi-regionUS
. Anda juga dapat mentransfer dari regionEU
mana pun ke multi-regionEU
.
- Anda dapat mentransfer data dari region
Contoh
Contoh 1
Contoh berikut memuat file parquet bernama sample.parquet
dari bucket Amazon S3
ke dalam tabel test_parquet
dengan skema deteksi otomatis:
LOAD DATA INTO mydataset.testparquet FROM FILES ( uris = ['s3://test-bucket/sample.parquet'], format = 'PARQUET' ) WITH CONNECTION `aws-us-east-1.test-connection`
Contoh 2
Contoh berikut memuat file CSV dengan awalan sampled*
dari
Blob Storage ke tabel test_csv
dengan partisi kolom
yang telah ditentukan berdasarkan waktu:
LOAD DATA INTO mydataset.test_csv (Number INT64, Name STRING, Time DATE) PARTITION BY Time FROM FILES ( format = 'CSV', uris = ['azure://test.blob.core.windows.net/container/sampled*'], skip_leading_rows=1 ) WITH CONNECTION `azure-eastus2.test-connection`
Contoh 3
Contoh berikut menimpa tabel test_parquet
yang ada dengan
data dari file bernama sample.parquet
dengan skema deteksi otomatis:
LOAD DATA OVERWRITE mydataset.testparquet FROM FILES ( uris = ['s3://test-bucket/sample.parquet'], format = 'PARQUET' ) WITH CONNECTION `aws-us-east-1.test-connection`
Data filter
Anda dapat memfilter data sebelum mentransfernya ke BigQuery menggunakan
pernyataan CREATE TABLE AS SELECT
dan pernyataan INSERT INTO SELECT
.
Batasan
Jika hasil kueri
SELECT
melebihi 60 GiB dalam byte logis, maka kueri akan gagal. Tabel tidak dibuat dan data tidak ditransfer. Untuk mempelajari cara mengurangi ukuran data yang dipindai, lihat Mengurangi data yang diproses dalam kueri.Tabel sementara tidak didukung.
Mentransfer format data geospasial Well-known binary (WKB) tidak didukung.
Pernyataan
INSERT INTO SELECT
tidak mendukung pentransferan data ke tabel yang dikelompokkan.Dalam pernyataan
INSERT INTO SELECT
, jika tabel tujuan sama dengan tabel sumber dalam kueriSELECT
, maka pernyataanINSERT INTO SELECT
tidak akan mengubah baris apa pun di tabel tujuan. Tabel tujuan tidak diubah karena BigQuery tidak dapat membaca data lintas region.CREATE TABLE AS SELECT
danINSERT INTO SELECT
hanya didukung saat Anda mentransfer data dari Amazon S3 atau Blob Storage ke region BigQuery yang ditempatkan bersama. Untuk mengetahui informasi selengkapnya, lihat Lokasi.- Anda dapat mentransfer data dari region
US
mana pun ke multi-regionUS
. Anda juga dapat mentransfer dari regionEU
mana pun ke multi-regionEU
.
- Anda dapat mentransfer data dari region
Contoh
Contoh 1
Misalkan Anda memiliki tabel BigLake bernama myawsdataset.orders
yang
mereferensikan data dari Amazon S3.
Anda ingin mentransfer data dari tabel tersebut ke
tabel BigQuery myotherdataset.shipments
di multi-region AS.
Pertama, tampilkan informasi tentang tabel myawsdataset.orders
:
bq show myawsdataset.orders;
Outputnya mirip dengan yang berikut ini:
Last modified Schema Type Total URIs Expiration ----------------- -------------------------- ---------- ------------ ----------- 31 Oct 17:40:28 |- l_orderkey: integer EXTERNAL 1 |- l_partkey: integer |- l_suppkey: integer |- l_linenumber: integer |- l_returnflag: string |- l_linestatus: string |- l_commitdate: date
Selanjutnya, tampilkan informasi tentang tabel myotherdataset.shipments
:
bq show myotherdataset.shipments
Outputnya mirip dengan yang berikut ini. Beberapa kolom dihilangkan untuk menyederhanakan output.
Last modified Schema Total Rows Total Bytes Expiration Time Partitioning Clustered Fields Total Logical ----------------- --------------------------- ------------ ------------- ------------ ------------------- ------------------ --------------- 31 Oct 17:34:31 |- l_orderkey: integer 3086653 210767042 210767042 |- l_partkey: integer |- l_suppkey: integer |- l_commitdate: date |- l_shipdate: date |- l_receiptdate: date |- l_shipinstruct: string |- l_shipmode: string
Sekarang, dengan pernyataan CREATE TABLE AS SELECT
, Anda dapat memuat data secara
selektif ke tabel myotherdataset.orders
di multi-region AS:
CREATE OR REPLACE TABLE myotherdataset.orders PARTITION BY DATE_TRUNC(l_commitdate, YEAR) AS SELECT * FROM myawsdataset.orders WHERE EXTRACT(YEAR FROM l_commitdate) = 1992;
Anda kemudian dapat melakukan operasi gabungan dengan tabel yang baru dibuat:
SELECT orders.l_orderkey, orders.l_orderkey, orders.l_suppkey, orders.l_commitdate, orders.l_returnflag, shipments.l_shipmode, shipments.l_shipinstruct FROM myotherdataset.shipments JOIN `myotherdataset.orders` as orders ON orders.l_orderkey = shipments.l_orderkey AND orders.l_partkey = shipments.l_partkey AND orders.l_suppkey = shipments.l_suppkey WHERE orders.l_returnflag = 'R'; -- 'R' means refunded.
Jika data baru tersedia, tambahkan data tahun 1993 ke tabel tujuan
menggunakan pernyataan INSERT INTO SELECT
:
INSERT INTO myotherdataset.orders SELECT * FROM myawsdataset.orders WHERE EXTRACT(YEAR FROM l_commitdate) = 1993;
Contoh 2
Contoh berikut menyisipkan data ke dalam tabel berpartisi berdasarkan waktu penyerapan:
CREATE TABLE mydataset.orders(id String, numeric_id INT64) PARTITION BY _PARTITIONDATE;
Setelah membuat tabel berpartisi, Anda dapat memasukkan data ke tabel berpartisi berdasarkan waktu penyerapan:
INSERT INTO mydataset.orders( _PARTITIONTIME, id, numeric_id) SELECT TIMESTAMP("2023-01-01"), id, numeric_id, FROM mydataset.ordersof23 WHERE numeric_id > 4000000;
Replika tampilan terwujud
Replika tampilan terwujud adalah replikasi data Amazon Simple Storage Service (Amazon S3), Apache Iceberg, atau Salesforce Data Cloud eksternal dalam set data BigQuery sehingga data tersedia secara lokal di BigQuery. Hal ini dapat membantu Anda menghindari biaya keluar data dan meningkatkan performa kueri. BigQuery memungkinkan Anda membuat tampilan terwujud pada tabel yang mendukung cache metadata BigLake melalui data Amazon Simple Storage Service (Amazon S3), Apache Iceberg, atau Salesforce Data Cloud.
Replika tampilan terwujud memungkinkan Anda menggunakan data tampilan terwujud Amazon S3, Iceberg, atau Data Cloud dalam kueri sekaligus menghindari biaya keluar data dan meningkatkan performa kueri. Replika tampilan terwujud melakukan hal ini dengan mereplikasi data Amazon S3, Iceberg, atau Data Cloud ke set data di region BigQuery yang didukung, sehingga data tersedia secara lokal di BigQuery.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
- Pastikan Anda memiliki izin Identity and Access Management (IAM) yang diperlukan untuk melakukan tugas di bagian ini.
-
bigquery.tables.create
-
bigquery.tables.get
-
bigquery.tables.getData
-
bigquery.tables.replicateData
-
bigquery.jobs.create
- Buat set data di region yang mendukung Amazon S3
- Buat tabel sumber di set data yang Anda buat pada langkah sebelumnya. Tabel sumber dapat berupa salah satu jenis tabel berikut:
- Tabel BigLake Amazon S3 yang mengaktifkan penyimpanan dalam cache metadata dan tidak menggunakan format file Iceberg.
- Tabel eksternal Apache Iceberg.
- Tabel Data Cloud.
Di konsol Google Cloud , buka halaman BigQuery.
Di panel Explorer, buka project dan set data tempat Anda ingin membuat replika tampilan yang di-materialisasi, lalu klik > Create table.
View actionsDi bagian Sumber pada dialog Buat tabel, lakukan hal berikut:
- Untuk Buat tabel dari, pilih Tabel/tampilan yang ada.
- Untuk Project, masukkan project tempat tabel atau tampilan sumber berada.
- Untuk Set data, masukkan set data tempat tabel atau tampilan sumber berada.
- Untuk Tampilan, masukkan tabel atau tampilan sumber yang Anda replikasi. Jika Anda memilih tampilan, tampilan tersebut harus berupa tampilan yang diotorisasi, atau jika tidak, semua tabel yang digunakan untuk membuat tampilan tersebut harus berada di set data tampilan.
Opsional: Untuk Maksimal tidak berlaku lagi tampilan terwujud lokal, masukkan nilai
max_staleness
untuk tampilan terwujud lokal Anda.Di bagian Destination pada dialog Create table, lakukan hal berikut:
- Untuk Project, masukkan project tempat Anda ingin membuat replika tampilan terwujud.
- Untuk Set data, masukkan set data tempat Anda ingin membuat replika tampilan terwujud.
- Untuk Nama tampilan terwujud replika, masukkan nama untuk replika Anda.
Opsional: Tentukan tag dan opsi lanjutan untuk replika tampilan terwujud. Jika Anda tidak menentukan set data untuk Set Data Tampilan Materialisir Lokal, set data akan otomatis dibuat di project dan region yang sama dengan data sumber dan diberi nama
bq_auto_generated_local_mv_dataset
. Jika Anda tidak menentukan nama untuk Nama Tampilan Material Lokal, maka nama tersebut akan otomatis dibuat di project dan region yang sama dengan data sumber dan diberi prefiksbq_auto_generated_local_mv_
.Klik Create table.
- Buat tampilan terwujud di atas tabel dasar dalam set data yang Anda buat. Anda juga dapat membuat tampilan terwujud dalam set data lain yang berada di region Amazon S3.
- Otorisasi tampilan terwujud pada set data yang berisi tabel sumber yang digunakan dalam kueri yang membuat tampilan terwujud.
- Jika Anda mengonfigurasi pemuatan ulang cache metadata manual untuk tabel sumber, jalankan
prosedur sistem
BQ.REFRESH_EXTERNAL_METADATA_CACHE
untuk memuat ulang cache metadata. - Jalankan
prosedur sistem
BQ.REFRESH_MATERIALIZED_VIEW
untuk memuat ulang tampilan terwujud. Buat replika tampilan terwujud menggunakan pernyataan
CREATE MATERIALIZED VIEW AS REPLICA OF
:CREATE MATERIALIZED VIEW PROJECT_ID.BQ_DATASET.REPLICA_NAME OPTIONS(replication_interval_seconds=REPLICATION_INTERVAL) AS REPLICA OF PROJECT_ID.S3_DATASET.MATERIALIZED_VIEW_NAME;
Ganti kode berikut:
PROJECT_ID
: nama project tempat Anda ingin membuat replika tampilan terwujud—misalnya,myproject
.BQ_DATASET
: nama set data BigQuery tempat Anda ingin membuat replika tampilan yang di-materialisasi—misalnya,bq_dataset
. Set data harus berada di region BigQuery yang dipetakan ke region tampilan terwujud sumber.REPLICA_NAME
: nama replika tampilan terwujud yang ingin Anda buat—misalnya,my_mv_replica
.REPLICATION_INTERVAL
: menentukan seberapa sering data direplikasi dari tampilan terwujud sumber ke replika, dalam detik. Harus berupa nilai antara 60 dan 3.600, inklusif. Nilai defaultnya adalah 300 (5 menit).S3_DATASET
: nama set data yang berisi tampilan terwujud sumber—misalnya,s3_dataset
.MATERIALIZED_VIEW_NAME
: nama tampilan terwujud yang akan direplikasi—misalnya,my_mv
.
Contoh berikut membuat replika tampilan terwujud bernama
mv_replica
dibq_dataset
:CREATE MATERIALIZED VIEW `myproject.bq_dataset.mv_replica` OPTIONS( replication_interval_seconds=600 ) AS REPLICA OF `myproject.s3_dataset.my_s3_mv`
- Untuk mengetahui keaktualan replika tampilan terwujud, lihat kolom Terakhir diubah di panel Detail replika tampilan terwujud.
- Untuk mengetahui keaktualan tampilan terwujud sumber, lihat kolom Terakhir diubah di panel Detail tampilan terwujud.
- Untuk keaktualan cache metadata tabel Amazon S3, Iceberg, atau Data Cloud sumber, lihat kolom Keterlambatan maksimum di panel Detail tampilan terwujud.
northamerica-northeast1
northamerica-northeast2
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west2
us-west3
us-west4
northamerica-northeast1
northamerica-northeast2
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west2
us-west3
us-west4
europe-central2
europe-north1
europe-southwest1
europe-west1
europe-west2
europe-west3
europe-west4
europe-west6
europe-west8
europe-west9
europe-west10
asia-east1
asia-east2
asia-northeast1
asia-northeast2
asia-northeast3
asia-south1
asia-south2
asia-southeast1
australia-southeast1
australia-southeast2
- Anda tidak dapat membuat replika tampilan terwujud untuk tampilan terwujud yang didasarkan pada tabel yang menggunakan keamanan tingkat baris atau keamanan tingkat kolom.
- Anda tidak dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) dengan tampilan terwujud sumber atau replika tampilan terwujud.
- Anda hanya dapat membuat replika tampilan terwujud untuk tampilan terwujud yang didasarkan pada tabel apa pun yang menggunakan penayangan cache metadata.
- Anda hanya dapat membuat satu replika tampilan terwujud untuk tampilan terwujud sumber tertentu.
- Anda hanya dapat membuat replika tampilan terwujud untuk tampilan terwujud yang sah.
- Pelajari tentang BigQuery ML.
- Pelajari tentang BigQuery Omni.
- Pelajari cara menjalankan kueri.
- Pelajari cara menyiapkan Kontrol Layanan VPC untuk BigQuery Omni.
- Pelajari cara menjadwalkan dan mengelola tugas pemuatan berulang dari Amazon S3 ke BigQuery dan Blob Storage ke BigQuery.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk melakukan tugas di bagian ini, minta administrator Anda untuk memberi Anda peran IAM BigQuery Admin (roles/bigquery.admin
).
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk melakukan tugas dalam bagian ini. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk melakukan tugas dalam bagian ini:
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Untuk mengetahui informasi selengkapnya tentang IAM BigQuery, lihat Peran dan izin IAM BigQuery.
Menyiapkan set data untuk replika tampilan terwujud
Sebelum membuat replika tampilan yang di-materialisasi, Anda harus menyelesaikan tugas berikut:
Membuat replika tampilan terwujud
Pilih salah satu opsi berikut:
Konsol
Tampilan terwujud lokal baru dibuat (jika tidak ditentukan) dan diizinkan dalam set data sumber. Kemudian, replika tampilan terwujud dibuat di set data tujuan.
SQL
Setelah Anda membuat replika tampilan terwujud, proses replikasi akan melakukan polling
pada tampilan terwujud sumber untuk mengetahui perubahan dan mereplikasi data ke replika
tampilan terwujud, dengan memperbarui data pada interval yang Anda tentukan dalam opsi
replication_interval_seconds
atau max_staleness
. Jika Anda membuat kueri replika sebelum pengisian ulang pertama selesai, Anda akan mendapatkan error backfill in progress
. Anda dapat membuat kueri data di replika tampilan terwujud setelah replikasi pertama selesai.
Keaktualan data
Setelah Anda membuat replika tampilan terwujud, proses replikasi akan
melakukan polling pada tampilan terwujud sumber untuk mengetahui perubahan dan mereplikasi data ke
replika tampilan terwujud. Data direplikasi pada interval yang Anda tentukan
dalam opsi replication_interval_seconds
dari
pernyataan CREATE MATERIALIZED VIEW AS REPLICA OF
.
Selain interval replikasi, keaktualan data replika tampilan terwujud juga dipengaruhi oleh seberapa sering tampilan terwujud sumber dimuat ulang, dan seberapa sering cache metadata tabel Amazon S3, Iceberg, atau Data Cloud yang digunakan oleh tampilan terwujud dimuat ulang.
Anda dapat memeriksa keaktualan data untuk replika tampilan terwujud dan resource yang menjadi dasarnya menggunakan konsol Google Cloud :
Region replika tampilan terwujud yang didukung
Gunakan pemetaan lokasi dalam tabel berikut saat membuat replika tampilan terwujud:
Lokasi tampilan terwujud sumber | Lokasi replika tampilan terwujud |
---|---|
aws-us-east-1 |
US
multi-region,
atau salah satu region berikut:
|
aws-us-west-2 |
US
multi-region,
atau salah satu region berikut:
|
aws-eu-west-1 |
EU
multi-region,
atau salah satu region berikut:
|
aws-ap-northeast-2 |
Salah satu
wilayah berikut:
|
aws-ap-southeast-2 |
Salah satu
wilayah berikut:
|
Batasan replika tampilan terwujud
Harga replika tampilan terwujud
Penggunaan replika tampilan terwujud menimbulkan biaya komputasi, transfer data keluar, dan penyimpanan.