Membuat kueri data Drive
Dokumen ini menjelaskan cara membuat kueri data yang tersimpan dalam tabel eksternal Google Drive.
BigQuery mendukung kueri terhadap file Drive pribadi dan file bersama. Untuk mengetahui informasi selengkapnya tentang Drive, lihat Pelatihan dan bantuan Google Drive.
Anda dapat membuat kueri data Drive dari tabel eksternal permanen atau dari tabel eksternal sementara yang Anda buat saat menjalankan kueri.
Batasan
Untuk batasan yang terkait dengan tabel eksternal, lihat batasan tabel eksternal.
Peran yang diperlukan
Untuk membuat kueri tabel eksternal Drive, pastikan Anda memiliki peran berikut:
- BigQuery Data Viewer (
roles/bigquery.dataViewer
) - BigQuery User (
roles/bigquery.user
)
Bergantung pada izin yang Anda miliki, Anda dapat memberikan peran ini pada diri sendiri atau meminta administrator untuk memberikannya. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Melihat peran yang dapat diberikan pada resource.
Guna melihat izin spesifik BigQuery yang diperlukan untuk membuat kueri tabel eksternal, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
bigquery.jobs.create
bigquery.readsessions.create
(Hanya diperlukan jika Anda membaca data dengan BigQuery Storage Read API)bigquery.tables.get
bigquery.tables.getData
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran yang telah ditetapkan sebelumnya.
Izin Drive
Setidaknya, untuk membuat kueri data eksternal di Drive, Anda harus
diberi akses View
ke file Drive yang ditautkan ke tabel eksternal.
Cakupan untuk instance Compute Engine
Saat membuat instance Compute Engine, Anda dapat menentukan daftar cakupan untuk instance tersebut. Cakupan mengontrol akses instance ke produk Google Cloud, termasuk Drive. Aplikasi yang berjalan di VM menggunakan akun layanan untuk memanggil Google Cloud API.
Jika Anda menyiapkan instance Compute Engine untuk dijalankan
sebagai akun layanan,
dan akun layanan tersebut mengakses tabel eksternal yang ditautkan ke sumber data
Drive, Anda harus menambahkan
Cakupan OAuth untuk Drive
(https://www.googleapis.com/auth/drive.readonly
) ke instance.
Untuk mengetahui informasi cara menerapkan cakupan ke instance Compute Engine, lihat Mengubah akun layanan dan cakupan akses untuk instance. Untuk mengetahui informasi selengkapnya tentang akun layanan Compute Engine, lihat Akun layanan.
Membuat kueri data Drive menggunakan tabel eksternal permanen
Setelah membuat tabel eksternal Drive, Anda dapat membuat kuerinya menggunakan
sintaksis GoogleSQL, sama seperti saat membuat kueri
tabel BigQuery standar. Contoh, SELECT field1, field2
FROM mydataset.my_drive_table;
.
Membuat kueri data Drive menggunakan tabel sementara
Membuat kueri sumber data eksternal menggunakan tabel sementara berguna untuk kueri ad-hoc satu kali atas data eksternal, atau untuk proses ekstrak, transformasi, dan pemuatan (ETL).
Untuk membuat kueri sumber data eksternal tanpa membuat tabel permanen, Anda perlu memberikan definisi tabel untuk tabel sementara, lalu menggunakan definisi tabel tersebut dalam perintah atau panggilan untuk membuat kueri tabel sementara. Anda dapat memberikan definisi tabel dengan salah satu cara berikut:
- File definisi tabel
- Definisi skema inline
- File skema JSON
File definisi tabel atau skema yang disediakan digunakan untuk membuat tabel eksternal sementara, dan kueri dijalankan terhadap tabel eksternal sementara.
Saat menggunakan tabel eksternal sementara, Anda tidak membuat tabel di salah satu set data BigQuery Anda. Karena tidak disimpan secara permanen dalam set data, tabel itu tidak dapat dibagikan kepada orang lain.
Membuat dan melakukan kueri tabel sementara
Anda dapat membuat dan membuat kueri tabel sementara yang ditautkan ke sumber data eksternal menggunakan alat command line bq, API, atau library klien.
bq
Anda membuat kueri tabel sementara yang ditautkan ke sumber data eksternal menggunakan
perintah bq query
dengan flag --external_table_definition
. Saat menggunakan
alat command line bq untuk membuat kueri tabel sementara yang ditautkan ke sumber data eksternal, Anda
dapat mengidentifikasi skema tabel menggunakan:
- File definisi tabel (disimpan di komputer lokal Anda)
- Definisi skema inline
- File skema JSON (disimpan di komputer lokal Anda)
Untuk membuat kueri tabel sementara yang ditautkan ke sumber data eksternal menggunakan file definisi tabel, masukkan perintah berikut.
bq --location=LOCATION query \ --external_table_definition=TABLE::DEFINITION_FILE \ 'QUERY'
Dengan keterangan:
LOCATION
adalah lokasi Anda. Flag--location
bersifat opsional.TABLE
adalah nama tabel sementara yang Anda buat.DEFINITION_FILE
adalah jalur ke file definisi tabel di mesin lokal Anda.QUERY
adalah kueri yang Anda kirimkan ke tabel sementara.
Misalnya, perintah berikut membuat dan membuat kueri tabel sementara
bernama sales
menggunakan file definisi tabel bernama sales_def
.
bq query \
--external_table_definition=sales::sales_def \
'SELECT
Region,Total_sales
FROM
sales'
Untuk membuat kueri tabel sementara yang ditautkan ke sumber data eksternal Anda menggunakan definisi skema inline, masukkan perintah berikut.
bq --location=LOCATION query \ --external_table_definition=TABLE::SCHEMA@SOURCE_FORMAT=DRIVE_URI \ 'QUERY'
Dengan keterangan:
LOCATION
adalah lokasi Anda. Flag--location
bersifat opsional.TABLE
adalah nama tabel sementara yang Anda buat.SCHEMA
adalah definisi skema inline dalam formatFIELD:DATA_TYPE,FIELD:DATA_TYPE
.SOURCE_FORMAT
adalahCSV
,NEWLINE_DELIMITED_JSON
,AVRO
, atauGOOGLE_SHEETS
.DRIVE_URI
adalah URI Drive Anda.QUERY
adalah kueri yang Anda kirimkan ke tabel sementara.
Misalnya, perintah berikut membuat dan membuat kueri tabel sementara
bernama sales
yang ditautkan ke file CSV yang disimpan di Drive dengan
definisi skema berikut: Region:STRING,Quarter:STRING,Total_sales:INTEGER
.
bq --location=US query \
--external_table_definition=sales::Region:STRING,Quarter:STRING,Total_sales:INTEGER@CSV=https://drive.google.com/open?id=1234_AbCD12abCd \
'SELECT
Region,Total_sales
FROM
sales'
Untuk membuat kueri tabel sementara yang ditautkan ke sumber data eksternal Anda menggunakan file skema JSON, masukkan perintah berikut.
bq --location=LOCATION query \ --external_table_definition=SCHEMA_FILE@SOURCE_FORMT=DRIVE_URI \ 'QUERY'
Dengan keterangan:
LOCATION
adalah lokasi Anda. Flag--location
bersifat opsional.SCHEMA_FILE
adalah jalur ke file skema JSON di komputer lokal Anda.SOURCE_FILE
adalahCSV
,NEWLINE_DELIMITED_JSON
,AVRO
, atauGOOGLE_SHEETS
.DRIVE_URI
adalah URI Drive Anda.QUERY
adalah kueri yang Anda kirimkan ke tabel sementara.
Misalnya, perintah berikut membuat dan membuat kueri tabel sementara
bernama sales
yang ditautkan ke file CSV yang disimpan di Drive menggunakan
file skema /tmp/sales_schema.json
.
bq query \
--external_table_definition=sales::/tmp/sales_schema.json@CSV=https://drive.google.com/open?id=1234_AbCD12abCd \
'SELECT
Total_sales
FROM
sales'
API
Buat konfigurasi tugas kueri. Lihat Membuat kueri data untuk mengetahui informasi tentang cara memanggil
jobs.query
danjobs.insert
.Tentukan sumber data eksternal dengan membuat
ExternalDataConfiguration
.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Pemecahan masalah
String error: Resources exceeded during query execution: Google Sheets service
overloaded.
Ini mungkin merupakan error sementara yang dapat diperbaiki dengan menjalankan ulang kueri. Jika error tersebut masih terjadi setelah kueri dijalankan ulang, pertimbangkan untuk menyederhanakan spreadsheet Anda; misalnya, dengan meminimalkan penggunaan formula. Untuk mengetahui informasi selengkapnya, lihat batasan tabel eksternal.
Langkah selanjutnya
- Pelajari cara menggunakan SQL di BigQuery.
- Pelajari tabel eksternal.
- Pelajari kuota BigQuery.