Membuat set data adalah proses dua langkah:
Buat permintaan untuk membuat set data.
Buat permintaan untuk mengupload data ke set data.
Setelah upload data awal, Anda dapat mengupload data baru ke set data untuk membuat set data versi baru.
Membuat set data
Buat set data dengan mengirim permintaan POST
ke
endpoint datasets:
https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets
Teruskan isi JSON ke permintaan yang menentukan set data. Anda harus:
Tentukan
displayName
set data. NilaidisplayName
harus unik untuk semua set data.Tetapkan
usage
keUSAGE_DATA_DRIVEN_STYLING
.
Contoh:
curl -X POST -d '{ "displayName": "My Test Dataset", "usage": "USAGE_DATA_DRIVEN_STYLING" }' \ -H 'X-Goog-User-Project: PROJECT_NUMBER_OR_ID' \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $TOKEN" \ "https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets"
Respons berisi ID set data, dalam bentuk
projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID
beserta informasi tambahan. Gunakan ID set data saat membuat permintaan untuk
memperbarui atau mengubah set data.
{ "name": "projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46", "displayName": "My Test Dataset", "usage": [ "USAGE_DATA_DRIVEN_STYLING" ], "createTime": "2022-08-15T17:50:00.189682Z", "updateTime": "2022-08-15T17:50:00.189682Z" }
Mengunggah data ke {i>dataset<i}
Setelah Anda membuat set data, upload data dari Google Cloud Storage atau dari file lokal ke set data.
Operasi upload bersifat asinkron. Setelah Anda mengupload data, data tersebut akan ditransfer dan diproses. Artinya, Anda harus membuat permintaan GET HTTP untuk memantau status set data guna menentukan kapan set data siap digunakan atau apakah ada error. Untuk mengetahui informasi selengkapnya, lihat Mendapatkan status pemrosesan data.
Mengupload data dari Cloud Storage
Anda mengupload dari Cloud Storage ke set data dengan mengirimkan permintaan POST
ke endpoint set data yang juga menyertakan ID set data:
https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import
Dalam isi permintaan JSON:
Gunakan
inputUri
untuk menentukan jalur file ke resource yang berisi data di Cloud Storage. Jalur ini akan terlihat sepertigs://GCS_BUCKET/FILE
.Pengguna yang mengajukan permintaan memerlukan peran Storage Object Viewer, atau peran lain yang mencakup izin
storage.objects.get
. Untuk mengetahui informasi selengkapnya tentang pengelolaan akses ke Cloud Storage, lihat Ringkasan kontrol akses.Gunakan
fileFormat
untuk menentukan format file data sebagai:FILE_FORMAT_GEOJSON
(file GeoJson),FILE_FORMAT_KML
(file KML), atauFILE_FORMAT_CSV
(file CSV).
Contoh:
curl -X POST -d '{ "gcs_source":{ "inputUri": "gs://my_bucket/my_csv_file", "fileFormat": "FILE_FORMAT_CSV" } }' \ -H 'X-Goog-User-Project: PROJECT_NUMBER_OR_ID' \ -H "content-type: application/json" \ -H "Authorization: Bearer $TOKEN" \ "https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46:import"
Responsnya bisa berupa:
{ "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER" }
Mengupload data dari file
Untuk mengupload data dari file, kirim permintaan POST
HTTP ke endpoint set data yang juga menyertakan ID set data:
https://mapsplatformdatasets.googleapis.com/upload/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import
Permintaan berisi:
Header
Goog-Upload-Protocol
ditetapkan kemultipart
.Properti
metadata
yang menentukan jalur ke file yang menentukan jenis data yang akan diupload, sebagai:FILE_FORMAT_GEOJSON
(file GeoJSON),FILE_FORMAT_KML
(file KML), atauFILE_FORMAT_CSV
(file CSV).Isi file ini memiliki format berikut:
{"local_file_source": {"file_format": "FILE_FORMAT_GEOJSON"}}
Properti
rawdata
yang menentukan jalur ke file GeoJSON, KML, atau CSV yang berisi data yang akan diupload.
Permintaan berikut menggunakan opsi curl -F
untuk menentukan jalur ke dua
file:
curl -X POST \ -H 'X-Goog-User-Project: PROJECT_NUMBER_OR_ID' \ -H "Authorization: Bearer $TOKEN" \ -H "X-Goog-Upload-Protocol: multipart" \ -F "metadata=@csv_metadata_file" \ -F "rawdata=@csv_data_file" \ "https://mapsplatformdatasets.googleapis.com/upload/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46:import"
Responsnya bisa berupa:
{ "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER" }
Mendapatkan status pemrosesan data
Operasi upload bersifat asinkron. Artinya, setelah panggilan API untuk mengupload data ke set data ditampilkan, Anda harus melakukan polling pada set data untuk menentukan apakah penyerapan dan pemrosesan data berhasil atau gagal.
Untuk menentukan state
set data, gunakan Mendapatkan set data. Misalnya, saat data sedang
diproses, state
ditetapkan ke STATE_PROCESSING
. Saat set data siap
digunakan di aplikasi Anda, state
ditetapkan ke STATE_COMPLETED
.
Misalnya, lakukan panggilan GET pada set data:
curl -X GET \ -H "X-Goog-User-Project: PROJECT_NUMBER_OR_ID" \ -H "Authorization: Bearer $TOKEN" \ "https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46"
Agar upload berhasil, state
set data adalah STATE_COMPLETED
:
{ "name": "projects/119757857/datasets/f57074a0-a8b6-403e-9df1-e9fc46", "displayName": "My Test Dataset", "description": " ", "versionId": "837c5a9e-c885-4a5f-a462-7e35673e5218", "usage": [ "USAGE_DATA_DRIVEN_STYLING" ], "localFileSource": { "filename": "Parks_Properties_20240529.csv", "fileFormat": "FILE_FORMAT_CSV" }, "createTime": "2024-05-30T16:41:11.130816Z", "updateTime": "2024-05-30T16:41:14.416130Z", "versionCreateTime": "2024-05-30T16:41:14.416130Z", "status": { "state": "STATE_COMPLETED", }, "sizeBytes": "6916924", "downloadable": true }
Jika pemrosesan data gagal, state
ditetapkan ke nilai selain STATE_COMPLETED
, seperti STATE_PUBLISHING_FAILED
atau status apa pun yang diakhiri dengan string _FAILED
.
Misalnya, Anda mengupload data ke set data, lalu membuat permintaan GET untuk mendapatkan detail set data. Bersama dengan properti state
, respons juga menyertakan satu properti errorMessage
yang berisi deskripsi
error.
{ "name": "projects/119757857/datasets/f57074a0-a8b6-403e-9df1-e9fc46", "displayName": "My Test Dataset", "description": " ", "versionId": "837c5a9e-c885-4a5f-a462-7e35673e5218", "usage": [ "USAGE_DATA_DRIVEN_STYLING" ], "localFileSource": { "filename": "Parks_Properties_20240529.csv", "fileFormat": "FILE_FORMAT_CSV" }, "createTime": "2024-05-30T16:41:11.130816Z", "updateTime": "2024-05-30T16:41:14.416130Z", "versionCreateTime": "2024-05-30T16:41:14.416130Z", "status": { "state": "STATE_PUBLISHING_FAILED", "errorMessage": "INVALID_ARGUMENT: Skipping row because address could not be geocoded: 5521 18 AVENUE (from line 79)" }, "sizeBytes": "6916924", "downloadable": true }
Mendapatkan error pemrosesan data
Saat penyerapan dan pemrosesan data gagal, properti errorMessage
akan berisi
satu pesan yang menjelaskan error tersebut. Namun, satu pesan error tidak
harus memberikan informasi yang cukup untuk mengidentifikasi dan memperbaiki masalah.
Untuk mendapatkan informasi error yang lengkap, panggil
fetchDatasetErrors
API. API ini menampilkan semua error pemrosesan data yang terkait dengan set data:
curl -X GET \ -H "X-Goog-User-Project: PROJECT_NUMBER_OR_ID" \ -H "Authorization: Bearer $TOKEN" \ "https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46:fetchDatasetErrors"
Responsnya berisi array errors
. Array ini berisi hingga 50 error
jenis Status
per panggilan, dan mendukung hingga 500 error secara total:
{ "nextPageToken": "cigKJkIkMTU3MzM0NjQtYzlmMy00YzYxLWIxM2YtYmVkYjFjYjRkYzRj", "errors": [ { "code": 3, "message": "INVALID_ARGUMENT: No address was derived from fields 2. (from line 631)" }, { "code": 3, "message": "INVALID_ARGUMENT: No address was derived from fields 2. (from line 457)" }, { "code": 3, "message": "INVALID_ARGUMENT: No address was derived from fields 2. (from line 31)" }, ... ] }
Jika ada lebih dari 50 error, yang berarti lebih dari satu halaman error, respons akan berisi token halaman di kolom nextPageToken
.
Teruskan nilai tersebut dalam parameter kueri pageToken
dari panggilan berikutnya untuk mendapatkan halaman error berikutnya. Jika nextPageToken
kosong, tidak ada lagi halaman.
Misalnya, untuk mendapatkan halaman error berikutnya menggunakan token dari respons sebelumnya:
curl -X GET \ -H "content-type: application/json" \ -H "X-Goog-User-Project: PROJECT_NUMBER_OR_ID" \ -H "Authorization: Bearer $TOKEN" \ "https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46:fetchDatasetErrors?pageToken=cigKJkIkMTU3MzM0NjQtYzlmMy00YzYxLWIxM2YtYmVkYjFjYjRkYzRj"
Secara default, respons berisi maksimum 50 error per halaman. Gunakan
parameter kueri pageSize
untuk mengontrol ukuran halaman.
Mengunggah data baru ke {i>dataset<i}
Setelah Anda membuat set data dan berhasil mengupload data awal, status set data akan ditetapkan ke STATE_COMPLETED
. Artinya, set data siap
digunakan di aplikasi Anda. Untuk menentukan state
set data, lihat Mendapatkan
set data.
Anda juga dapat mengupload data baru ke set data untuk membuat set data versi baru. Untuk mengupload data baru, gunakan proses yang sama seperti yang Anda lakukan pada Mengupload data dari Cloud Storage atau Mengupload data dari file, dan menentukan data baru yang akan diupload.
Jika data baru berhasil diupload:
Status versi baru set data ditetapkan ke
STATE_COMPLETED
.Versi baru akan menjadi versi "aktif" dan merupakan versi yang digunakan oleh aplikasi Anda.
Jika terjadi error saat mengupload:
Status versi set data baru ditetapkan ke salah satu status berikut:
STATE_IMPORT_FAILED
STATE_PROCESSING_FAILED
STATE_PUBLISHING_FAILED
STATE_DELETION_FAILED
Versi set data sebelumnya yang berhasil akan tetap sebagai versi "aktif" dan merupakan versi yang digunakan oleh aplikasi Anda.