Memuat data dari ekspor Datastore
BigQuery mendukung pemuatan data dari ekspor Datastore yang dibuat menggunakan layanan impor dan ekspor yang dikelola Datastore. Anda dapat menggunakan layanan impor dan ekspor terkelola untuk mengekspor entity Datastore ke bucket Cloud Storage. Anda kemudian dapat memuat ekspor ke BigQuery sebagai tabel.
Untuk mempelajari cara membuat file ekspor Datastore, lihat Mengekspor dan mengimpor entity dalam dokumentasi Datastore. Untuk informasi tentang penjadwalan ekspor, lihat Menjadwalkan ekspor.
Anda dapat mengontrol properti mana yang harus dimuat BigQuery dengan menyiapkan
properti projectionFields
API atau dengan menggunakan flag --projection_fields
pada alat command line bq.
Jika memilih untuk melewati proses pemuatan, Anda dapat membuat kueri ekspor secara langsung dengan menyiapkannya sebagai sumber data eksternal. Untuk informasi selengkapnya, lihat Sumber data eksternal.
Saat Anda memuat data dari Cloud Storage ke tabel BigQuery, set data yang berisi tabel harus berada di region atau multi-region yang sama dengan bucket Cloud Storage.
Batasan
Saat memuat data ke BigQuery dari ekspor Datastore, perhatikan batasan berikut:
- Anda tidak dapat menggunakan karakter pengganti di Cloud Storage URI saat menentukan file ekspor Datastore.
- Anda hanya dapat menentukan satu Cloud Storage URI saat memuat data dari ekspor Datastore.
- Anda tidak dapat menambahkan data ekspor Datastore ke tabel yang ada dengan skema yang ditentukan.
- Agar ekspor Datastore dapat dimuat dengan benar, entity dalam data ekspor harus memiliki skema yang konsisten dengan kurang dari 10.000 nama properti yang unik.
- Data yang diekspor tanpa menentukan filter entity tidak dapat dimuat ke BigQuery. Permintaan ekspor harus menyertakan satu atau beberapa nama jenis dalam filter entity.
- Ukuran kolom maksimum untuk ekspor Datastore adalah 64 KB. Saat Anda memuat ekspor Datastore, kolom yang berukuran lebih dari 64 KB akan terpotong.
Sebelum memulai
Berikan peran Identity and Access Management (IAM) yang memberi pengguna izin yang diperlukan untuk melakukan setiap tugas dalam dokumen ini.
Izin yang diperlukan
Untuk memuat data ke BigQuery, Anda memerlukan izin IAM untuk menjalankan tugas pemuatan dan memuat data ke dalam tabel dan partisi BigQuery. Jika memuat data dari Cloud Storage, Anda juga memerlukan izin IAM untuk mengakses bucket yang berisi data Anda.
Izin untuk memuat data ke BigQuery
Untuk memuat data ke dalam tabel atau partisi BigQuery baru, atau menambahkan atau menimpa tabel atau partisi yang sudah ada, Anda memerlukan izin IAM berikut:
bigquery.tables.create
bigquery.tables.updateData
bigquery.tables.update
bigquery.jobs.create
Setiap peran IAM yang telah ditetapkan berikut mencakup izin yang diperlukan untuk memuat data ke dalam tabel atau partisi BigQuery:
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
(termasuk izinbigquery.jobs.create
)bigquery.user
(termasuk izinbigquery.jobs.create
)bigquery.jobUser
(termasuk izinbigquery.jobs.create
)
Selain itu, jika memiliki izin bigquery.datasets.create
, Anda dapat membuat dan
memperbarui tabel menggunakan tugas pemuatan dalam set data yang Anda buat.
Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM di BigQuery, lihat Peran dan izin yang telah ditetapkan.
Izin untuk memuat data dari Cloud Storage
Untuk mendapatkan izin yang Anda perlukan untuk memuat data dari bucket Cloud Storage,
minta administrator Anda untuk memberi Anda
peran IAM Storage Admin (roles/storage.admin
) di bucket.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.
Peran yang telah ditentukan ini berisi izin yang diperlukan untuk memuat data dari bucket Cloud Storage. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk memuat data dari bucket Cloud Storage:
-
storage.buckets.get
-
storage.objects.get
-
storage.objects.list (required if you are using a URI wildcard)
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran yang telah ditetapkan sebelumnya lainnya.
Memuat data layanan ekspor Datastore
Untuk memuat data dari file metadata ekspor Datastore:
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
- Di panel Explorer, luaskan project Anda, lalu pilih set data.
- Di bagian Dataset info, klik Create table.
- Di panel Create table, tentukan detail berikut:
- Di bagian Source, pilih Google Cloud Storage dalam daftar Create table from.
Kemudian, lakukan hal berikut:
- Pilih file dari bucket Cloud Storage, atau masukkan
Cloud Storage URI.
Anda tidak dapat menyertakan beberapa URI
di Konsol Google Cloud, tetapi karakter pengganti
bisa didukung. Bucket Cloud Storage harus berada di lokasi yang sama
dengan set data yang berisi tabel yang ingin Anda buat, tambahkan, atau
timpa.
URI untuk file ekspor Datastore Anda harus diakhiri denganKIND_NAME.export_metadata
atauexport[NUM].export_metadata
. Misalnya, dalamdefault_namespace_kind_Book.export_metadata
,Book
adalah nama jenis, dandefault_namespace_kind_Book
adalah nama file yang dihasilkan oleh Datastore. - Untuk File format, pilih Cloud Datastore Backup.
- Pilih file dari bucket Cloud Storage, atau masukkan
Cloud Storage URI.
Anda tidak dapat menyertakan beberapa URI
di Konsol Google Cloud, tetapi karakter pengganti
bisa didukung. Bucket Cloud Storage harus berada di lokasi yang sama
dengan set data yang berisi tabel yang ingin Anda buat, tambahkan, atau
timpa.
- Di bagian Destination, tentukan detail berikut:
- Untuk Dataset, pilih set data tempat Anda ingin membuat tabel.
- Di kolom Table, masukkan nama tabel yang ingin Anda buat.
- Pastikan kolom Table type disetel ke Native table.
- Di bagian Schema, Anda tidak perlu melakukan tindakan apa pun. Skema diinferensikan untuk ekspor Datastore.
- Opsional: Tentukan Partition and cluster settings. Untuk mengetahui informasi selengkapnya, lihat Membuat tabel berpartisi serta Membuat dan menggunakan tabel yang dikelompokkan.
- Klik Advanced options, lalu lakukan tindakan berikut:
- Untuk Write preference, biarkan Write if empty dipilih. Opsi ini akan membuat tabel baru dan memuat data Anda ke dalamnya.
- Jika Anda ingin mengabaikan nilai dalam baris yang tidak ada dalam skema tabel, pilih Unknown values.
- Untuk Encryption, klik Customer-managed key untuk menggunakan kunci Cloud Key Management Service. Jika Anda membiarkan setelan Google-managed key, BigQuery akan mengenkripsi data dalam penyimpanan. Untuk mengetahui informasi tentang opsi yang tersedia, lihat Opsi Datastore.
- Klik Buat tabel.
bq
Gunakan perintah bq load
dengan source_format
ditetapkan ke DATASTORE_BACKUP
.
Berikan flag --location
dan tetapkan nilai ke location Anda.
bq --location=LOCATION load \
--source_format=FORMAT \
DATASET.TABLE \
PATH_TO_SOURCE
Ganti kode berikut:
LOCATION
: lokasi Anda. Flag--location
bersifat opsional. Misalnya, jika menggunakan BigQuery di wilayah Tokyo, Anda dapat menetapkan nilai flag keasia-northeast1
. Anda dapat menetapkan nilai default untuk lokasi menggunakan file.bigqueryrc.FORMAT
:DATASTORE_BACKUP
.DATASET
: set data yang berisi tabel tempat Anda memuat data.TABLE
: tabel tempat Anda memuat data. Jika tidak ada, tabel akan dibuat.PATH_TO_SOURCE
: Cloud Storage URI.
Misalnya, perintah berikut memuat file ekspor Datastore
gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata
ke tabel bernama book_data
.
mybucket
dan mydataset
dibuat di lokasi multi-region US
.
bq --location=US load \
--source_format=DATASTORE_BACKUP \
mydataset.book_data \
gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata
API
Tetapkan properti berikut untuk memuat data ekspor Datastore menggunakan API.
Buat tugas pemuatan yang mengarah ke data sumber di Cloud Storage.
Tentukan lokasi Anda di properti
location
di bagianjobReference
pada resource tugas.URI sumber harus sepenuhnya memenuhi syarat, dalam format gs://[BUCKET]/[OBJECT]. Nama file (objek) harus diakhiri dengan
[KIND_NAME].export_metadata
. Hanya satu URI yang diizinkan untuk ekspor Datastore, dan Anda tidak dapat menggunakan karakter pengganti.Tentukan format data dengan menetapkan properti configuration.load.sourceFormat ke
DATASTORE_BACKUP
.
Menambahkan ke atau menimpa tabel dengan data Datastore
Saat memuat data ekspor Datastore ke BigQuery, Anda Anda dapat membuat tabel baru untuk menyimpan data, atau menimpa tabel yang sudah ada. Anda tidak dapat menambahkan data ekspor Datastore ke tabel yang ada.
Jika Anda mencoba menambahkan data ekspor Datastore ke tabel yang ada,
error berikut akan muncul: Cannot append a datastore backup to a table
that already has a schema. Try using the WRITE_TRUNCATE write disposition to
replace the existing table
.
Untuk menimpa tabel yang ada dengan data ekspor Datastore:
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
- Di panel Explorer, luaskan project Anda, lalu pilih set data.
- Di bagian Dataset info, klik Create table.
- Di panel Create table, tentukan detail berikut:
- Di bagian Source, pilih Google Cloud Storage dalam daftar Create table from.
Kemudian, lakukan hal berikut:
- Pilih file dari bucket Cloud Storage, atau masukkan
Cloud Storage URI.
Anda tidak dapat menyertakan beberapa URI
di Konsol Google Cloud, tetapi karakter pengganti
bisa didukung. Bucket Cloud Storage harus berada di lokasi yang sama
dengan set data yang berisi tabel yang ingin Anda buat, tambahkan, atau
timpa.
URI untuk file ekspor Datastore Anda harus diakhiri denganKIND_NAME.export_metadata
atauexport[NUM].export_metadata
. Misalnya, dalamdefault_namespace_kind_Book.export_metadata
,Book
adalah nama jenis, dandefault_namespace_kind_Book
adalah nama file yang dihasilkan oleh Datastore. - Untuk File format, pilih Cloud Datastore Backup.
- Pilih file dari bucket Cloud Storage, atau masukkan
Cloud Storage URI.
Anda tidak dapat menyertakan beberapa URI
di Konsol Google Cloud, tetapi karakter pengganti
bisa didukung. Bucket Cloud Storage harus berada di lokasi yang sama
dengan set data yang berisi tabel yang ingin Anda buat, tambahkan, atau
timpa.
- Di bagian Destination, tentukan detail berikut:
- Untuk Dataset, pilih set data tempat Anda ingin membuat tabel.
- Di kolom Table, masukkan nama tabel yang ingin Anda buat.
- Pastikan kolom Table type disetel ke Native table.
- Di bagian Schema, Anda tidak perlu melakukan tindakan apa pun. Skema diinferensikan untuk ekspor Datastore.
- Opsional: Tentukan Partition and cluster settings. Untuk mengetahui informasi selengkapnya, lihat Membuat tabel berpartisi serta Membuat dan menggunakan tabel yang dikelompokkan. Anda tidak dapat mengonversi tabel menjadi tabel berpartisi atau tabel yang dikelompokkan dengan menambahkan atau menimpanya. Konsol Google Cloud tidak mendukung penambahan ke atau penimpaan tabel berpartisi atau tabel yang dikelompokkan dalam tugas pemuatan.
- Klik Advanced options, lalu lakukan tindakan berikut:
- Untuk Write preference, pilih Append to table atau Overwrite table.
- Jika Anda ingin mengabaikan nilai dalam baris yang tidak ada dalam skema tabel, pilih Unknown values.
- Untuk Encryption, klik Customer-managed key untuk menggunakan kunci Cloud Key Management Service. Jika Anda membiarkan setelan Google-managed key, BigQuery akan mengenkripsi data dalam penyimpanan. Untuk mengetahui informasi tentang opsi yang tersedia, lihat Opsi Datastore.
- Klik Buat tabel.
bq
Gunakan perintah bq load
dengan flag --replace
dan dengan source_format
ditetapkan ke DATASTORE_BACKUP
. Berikan flag --location
dan tetapkan nilainya menjadi
lokasi Anda.
bq --location=LOCATION load \
--source_format=FORMAT \
--replace \
DATASET.TABLE \
PATH_TO_SOURCE
Ganti kode berikut:
LOCATION
: lokasi Anda. Flag--location
bersifat opsional. Misalnya, jika menggunakan BigQuery di wilayah Tokyo, Anda dapat menetapkan nilai flag keasia-northeast1
. Anda dapat menetapkan nilai default untuk lokasi menggunakan file.bigqueryrc.FORMAT
:DATASTORE_BACKUP
.DATASET
: set data yang berisi tabel tempat Anda memuat data.TABLE
: tabel yang Anda timpa.PATH_TO_SOURCE
: Cloud Storage URI.
Misalnya, perintah berikut memuat file ekspor Datastore
gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata
dan menimpa tabel bernama
book_data
:
bq load --source_format=DATASTORE_BACKUP \
--replace \
mydataset.book_data \
gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata
API
Tetapkan properti berikut untuk memuat data dari API.
Buat tugas pemuatan yang mengarah ke data sumber di Cloud Storage.
Tentukan lokasi Anda di properti
location
di bagianjobReference
pada resource tugas.URI sumber harus sepenuhnya memenuhi syarat, dalam format gs://[BUCKET]/[OBJECT]. Nama file (objek) harus diakhiri dengan
[KIND_NAME].export_metadata
. Hanya satu URI yang diizinkan untuk ekspor Datastore, dan Anda tidak dapat menggunakan karakter pengganti.Tentukan format data dengan menetapkan properti configuration.load.sourceFormat ke
DATASTORE_BACKUP
.Tentukan disposisi tulis dengan menetapkan properti configuration.load.writeDisposition ke
WRITE_TRUNCATE
.
Opsi Datastore
Untuk mengubah cara BigQuery mengurai data ekspor Datastore, tentukan opsi berikut:
Opsi konsol | flag alat bq | Properti BigQuery API | Deskripsi |
---|---|---|---|
Tidak tersedia | --projection_fields |
projectionFields | Daftar yang dipisahkan koma yang menunjukkan properti entity yang akan dimuat ke BigQuery dari ekspor Datastore. Nama properti peka huruf besar/kecil dan harus berupa properti tingkat teratas. Jika tidak ada properti yang ditentukan, BigQuery akan memuat semua properti. Jika properti bernama tidak ditemukan dalam ekspor Datastore, error tidak valid akan ditampilkan dalam hasil tugas. Nilai defaultnya adalah ''. |
Konversi jenis data
BigQuery mengonversi data dari setiap entity di file ekspor Datastore menjadi jenis data BigQuery. Tabel berikut menjelaskan konversi di antara jenis data.
Jenis data Datastore | Jenis data BigQuery |
---|---|
Array | ARRAY |
Blob | BYTES |
Boolean | BOOLEAN |
Tanggal dan waktu | TIMESTAMP |
Entity tersemat | RECORD |
Angka floating-point | FLOAT |
Titik geografis |
[{"lat","DOUBLE"}, {"long","DOUBLE"}] |
Bilangan Bulat | INTEGER |
Kunci | RECORD |
Null | STRING |
String teks | STRING (dipotong menjadi 64 KB) |
Properti kunci Datastore
Setiap entity dalam Datastore memiliki kunci unik yang berisi
informasi seperti namespace dan jalur. BigQuery membuat
jenis data RECORD
untuk kunci tersebut, dengan kolom bertingkat untuk setiap bagian
informasi, seperti yang dijelaskan dalam tabel berikut.
Properti kunci | Deskripsi | Jenis data BigQuery |
---|---|---|
__key__.app |
Nama aplikasi Datastore. | STRING |
__key__.id |
ID entity, atau null jika __key__.name
ditetapkan. |
INTEGER |
__key__.kind |
Jenis entity. | STRING |
__key__.name |
Nama entity, atau null jika __key__.id
ditetapkan. |
STRING |
__key__.namespace |
Jika aplikasi Datastore menggunakan namespace kustom, namespace entity tersebut. Selain itu, namespace default direpresentasikan oleh string kosong. | STRING |
__key__.path |
Jalur ancestral entity,
yang diratakan, yang terdiri dari urutan pasangan jenis-ID dari root entity
ke entity itu sendiri. Contoh: "Country", "USA", "PostalCode",
10011, "Route", 1234 . |
STRING |