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:

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 ke GZIP.

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-region US. Anda juga dapat mentransfer dari region EU mana pun ke multi-region EU.

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 kueri SELECT, maka pernyataan INSERT 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 dan INSERT 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-region US. Anda juga dapat mentransfer dari region EU mana pun ke multi-region EU.

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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Pastikan Anda memiliki izin Identity and Access Management (IAM) yang diperlukan untuk melakukan tugas di bagian ini.
  7. 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:

    • bigquery.tables.create
    • bigquery.tables.get
    • bigquery.tables.getData
    • bigquery.tables.replicateData
    • bigquery.jobs.create

    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:

    1. Buat set data di region yang mendukung Amazon S3
    2. Buat tabel sumber di set data yang Anda buat pada langkah sebelumnya. Tabel sumber dapat berupa salah satu jenis tabel berikut:

    Membuat replika tampilan terwujud

    Pilih salah satu opsi berikut:

    Konsol

    1. Di konsol Google Cloud , buka halaman BigQuery.

      Buka BigQuery

    2. Di panel Explorer, buka project dan set data tempat Anda ingin membuat replika tampilan yang di-materialisasi, lalu klik View actions > Create table.

    3. Di bagian Sumber pada dialog Buat tabel, lakukan hal berikut:

      1. Untuk Buat tabel dari, pilih Tabel/tampilan yang ada.
      2. Untuk Project, masukkan project tempat tabel atau tampilan sumber berada.
      3. Untuk Set data, masukkan set data tempat tabel atau tampilan sumber berada.
      4. 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.
    4. Opsional: Untuk Maksimal tidak berlaku lagi tampilan terwujud lokal, masukkan nilai max_staleness untuk tampilan terwujud lokal Anda.

    5. Di bagian Destination pada dialog Create table, lakukan hal berikut:

      1. Untuk Project, masukkan project tempat Anda ingin membuat replika tampilan terwujud.
      2. Untuk Set data, masukkan set data tempat Anda ingin membuat replika tampilan terwujud.
      3. Untuk Nama tampilan terwujud replika, masukkan nama untuk replika Anda.
    6. 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 prefiks bq_auto_generated_local_mv_.

    7. Klik Create table.

    Tampilan terwujud lokal baru dibuat (jika tidak ditentukan) dan diizinkan dalam set data sumber. Kemudian, replika tampilan terwujud dibuat di set data tujuan.

    SQL

    1. 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.
    2. Otorisasi tampilan terwujud pada set data yang berisi tabel sumber yang digunakan dalam kueri yang membuat tampilan terwujud.
    3. Jika Anda mengonfigurasi pemuatan ulang cache metadata manual untuk tabel sumber, jalankan prosedur sistem BQ.REFRESH_EXTERNAL_METADATA_CACHE untuk memuat ulang cache metadata.
    4. Jalankan prosedur sistem BQ.REFRESH_MATERIALIZED_VIEW untuk memuat ulang tampilan terwujud.
    5. 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 di bq_dataset:

      CREATE MATERIALIZED VIEW `myproject.bq_dataset.mv_replica`
      OPTIONS(
      replication_interval_seconds=600
      )
      AS REPLICA OF `myproject.s3_dataset.my_s3_mv`

    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 :

    • 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.

    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:
    • northamerica-northeast1
    • northamerica-northeast2
    • us-central1
    • us-east1
    • us-east4
    • us-east5
    • us-south1
    • us-west1
    • us-west2
    • us-west3
    • us-west4
    aws-us-west-2 US multi-region, atau salah satu region berikut:
    • northamerica-northeast1
    • northamerica-northeast2
    • us-central1
    • us-east1
    • us-east4
    • us-east5
    • us-south1
    • us-west1
    • us-west2
    • us-west3
    • us-west4
    aws-eu-west-1 EU multi-region, atau salah satu region berikut:
    • europe-central2
    • europe-north1
    • europe-southwest1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
    • europe-west6
    • europe-west8
    • europe-west9
    • europe-west10
    aws-ap-northeast-2 Salah satu wilayah berikut:
    • asia-east1
    • asia-east2
    • asia-northeast1
    • asia-northeast2
    • asia-northeast3
    • asia-south1
    • asia-south2
    • asia-southeast1
    aws-ap-southeast-2 Salah satu wilayah berikut:
    • australia-southeast1
    • australia-southeast2

    Batasan replika tampilan terwujud

    Harga replika tampilan terwujud

    Penggunaan replika tampilan terwujud menimbulkan biaya komputasi, transfer data keluar, dan penyimpanan.

    Langkah berikutnya