การสร้างชุดข้อมูลเป็นกระบวนการ 2 ขั้นตอน
ส่งคำขอเพื่อสร้างชุดข้อมูล
ส่งคำขอเพื่ออัปโหลดข้อมูลไปยังชุดข้อมูล
หลังจากอัปโหลดข้อมูลเริ่มต้นแล้ว คุณสามารถอัปโหลดข้อมูลใหม่ไปยังชุดข้อมูลเพื่อสร้างชุดข้อมูลเวอร์ชันใหม่ได้
สร้างชุดข้อมูล
สร้างชุดข้อมูลโดยส่งคำขอ POST ไปยัง
ปลายทางของชุดข้อมูล
https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets
ส่งเนื้อหา JSON ไปยังคำขอเพื่อกำหนดชุดข้อมูล โดยคุณต้องดำเนินการดังนี้
ระบุ
displayNameของชุดข้อมูล ค่าของdisplayNameต้องไม่ซ้ำกันในชุดข้อมูลทั้งหมดตั้งค่า
usageเป็นUSAGE_DATA_DRIVEN_STYLING
เช่น
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"การตอบกลับจะมีรหัสของชุดข้อมูลในรูปแบบ
projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID
พร้อมกับข้อมูลเพิ่มเติม ใช้รหัสชุดข้อมูลเมื่อส่งคำขอให้อัปเดตหรือแก้ไขชุดข้อมูล
{
"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"
}
อัปโหลดข้อมูลไปยังชุดข้อมูล
หลังจากสร้างชุดข้อมูลแล้ว ให้อัปโหลดข้อมูลจาก Google Cloud Storage หรือจากไฟล์ในเครื่องไปยังชุดข้อมูล
การดำเนินการอัปโหลดเป็นแบบไม่พร้อมกัน หลังจากอัปโหลดข้อมูลแล้ว ระบบจะนำเข้าและประมวลผลข้อมูล ซึ่งหมายความว่าคุณต้องส่งคำขอ GET HTTP เพื่อตรวจสอบสถานะของชุดข้อมูลเพื่อดูว่าชุดข้อมูลพร้อมใช้งานแล้วหรือมีข้อผิดพลาดเกิดขึ้นหรือไม่ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ รับสถานะการประมวลผล ข้อมูล
อัปโหลดข้อมูลจาก Cloud Storage
คุณอัปโหลดจาก Cloud Storage ไปยังชุดข้อมูลโดยส่งคำขอ POST ไปยังปลายทางของ
ชุดข้อมูล ซึ่ง
รวมถึงรหัสของชุดข้อมูลด้วย ดังนี้
https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import
ในเนื้อหาคำขอ JSON
ใช้
inputUriเพื่อระบุเส้นทางไฟล์ไปยังทรัพยากรที่มีข้อมูลใน Cloud Storage เส้นทางนี้อยู่ในรูปแบบgs://GCS_BUCKET/FILEผู้ใช้ที่ส่งคำขอต้องมีบทบาทผู้ดูออบเจ็กต์ ของพื้นที่เก็บข้อมูล หรือบทบาทอื่นๆ ที่มีสิทธิ์
storage.objects.getดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการสิทธิ์เข้าถึง Cloud Storage ได้ที่ หัวข้อ ภาพรวมการควบคุมการเข้าถึงใช้
fileFormatเพื่อระบุรูปแบบไฟล์ของข้อมูลเป็น:FILE_FORMAT_GEOJSON(ไฟล์ GeoJSON),FILE_FORMAT_KML(ไฟล์ KML) หรือFILE_FORMAT_CSV(ไฟล์ CSV)
เช่น
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"การตอบกลับจะอยู่ในรูปแบบต่อไปนี้
{
"name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER"
}
อัปโหลดข้อมูลจากไฟล์
หากต้องการอัปโหลดข้อมูลจากไฟล์ ให้ส่งคำขอ HTTP POST ไปยังปลายทางของ
ชุดข้อมูล ซึ่ง
รวมถึงรหัสของชุดข้อมูลด้วย ดังนี้
https://mapsplatformdatasets.googleapis.com/upload/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import
คำขอประกอบด้วยข้อมูลต่อไปนี้
ส่วนหัว
Goog-Upload-Protocolตั้งค่าเป็นmultipartพร็อพเพอร์ตี้
metadataที่ระบุเส้นทางไปยังไฟล์ซึ่งระบุประเภทข้อมูลที่จะอัปโหลดเป็นFILE_FORMAT_GEOJSON(ไฟล์ GeoJSON),FILE_FORMAT_KML(ไฟล์ KML) หรือFILE_FORMAT_CSV(ไฟล์ CSV)เนื้อหาของไฟล์นี้มีรูปแบบดังนี้
{"local_file_source": {"file_format": "FILE_FORMAT_GEOJSON"}}พร็อพเพอร์ตี้
rawdataที่ระบุเส้นทางไปยังไฟล์ GeoJSON, KML หรือ CSV ที่มีข้อมูลที่จะอัปโหลด
คำขอต่อไปนี้ใช้ตัวเลือก curl -F เพื่อระบุเส้นทางไปยังไฟล์ 2 ไฟล์
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"
การตอบกลับจะอยู่ในรูปแบบต่อไปนี้
{
"name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER"
}
รับสถานะการประมวลผลข้อมูล
การดำเนินการอัปโหลดเป็นแบบไม่พร้อมกัน ซึ่งหมายความว่าหลังจากที่การเรียก API เพื่ออัปโหลดข้อมูลไปยังชุดข้อมูลแสดงผลแล้ว คุณต้องโพลชุดข้อมูลเพื่อดูว่าการนำเข้าและการประมวลผลข้อมูลสำเร็จหรือไม่
หากต้องการดู state ของ
ชุดข้อมูล ให้ใช้ รับชุดข้อมูล เช่น ขณะที่ระบบกำลังประมวลผลข้อมูล state จะตั้งค่าเป็น STATE_PROCESSING เมื่อชุดข้อมูลพร้อมใช้งานในแอปแล้ว state จะตั้งค่าเป็น STATE_COMPLETED
เช่น ส่งการเรียก GET ไปยังชุดข้อมูล
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"
หากอัปโหลดสำเร็จ state ของชุดข้อมูลจะเป็น 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 }
เมื่อการประมวลผลข้อมูลล้มเหลว state จะตั้งค่าเป็นค่าอื่นที่ไม่ใช่
STATE_COMPLETED เช่น STATE_PUBLISHING_FAILED หรือสถานะใดก็ตามที่ลงท้ายด้วย
สตริง _FAILED
เช่น คุณอัปโหลดข้อมูลไปยังชุดข้อมูล แล้วส่งคำขอ GET เพื่อรับรายละเอียดชุดข้อมูล การตอบกลับจะมีพร็อพเพอร์ตี้ errorMessage รายการเดียวที่มีคำอธิบายข้อผิดพลาด นอกเหนือจากพร็อพเพอร์ตี้ state
{ "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 }
รับข้อผิดพลาดในการประมวลผลข้อมูล
เมื่อการนำเข้าข้อมูลและการประมวลผลล้มเหลว พร็อพเพอร์ตี้ errorMessage จะมีข้อความเดียวที่อธิบายข้อผิดพลาด อย่างไรก็ตาม ข้อความแสดงข้อผิดพลาดเพียงข้อความเดียวอาจให้ข้อมูลไม่เพียงพอที่จะระบุและแก้ไขปัญหา
หากต้องการรับข้อมูลข้อผิดพลาดที่สมบูรณ์ ให้เรียก
fetchDatasetErrors
API API นี้จะแสดงข้อผิดพลาดในการประมวลผลข้อมูลทั้งหมดที่เชื่อมโยงกับชุดข้อมูล
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"
การตอบกลับจะมีอาร์เรย์ errors อาร์เรย์นี้มีข้อผิดพลาดประเภท
Status
ได้สูงสุด 50 รายการต่อการเรียก และรองรับข้อผิดพลาดทั้งหมดได้สูงสุด 500 รายการ
{ "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)" }, ... ] }
หากมีข้อผิดพลาดมากกว่า 50 รายการ ซึ่งหมายความว่ามีข้อผิดพลาดมากกว่า 1 หน้า การตอบกลับจะมีโทเค็นหน้าในช่อง nextPageToken
ส่งค่าดังกล่าวในพารามิเตอร์การค้นหา pageToken ของการเรียกครั้งถัดไปเพื่อรับข้อผิดพลาดหน้าถัดไป เมื่อ nextPageToken ว่างเปล่า แสดงว่าไม่มีหน้าเว็บเพิ่มเติม
ตัวอย่างเช่น หากต้องการรับข้อผิดพลาดหน้าถัดไปโดยใช้โทเค็นจากการตอบกลับก่อนหน้า ให้ทำดังนี้
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"
โดยค่าเริ่มต้น การตอบกลับจะมีข้อผิดพลาดสูงสุด 50 รายการต่อหน้า ใช้พารามิเตอร์การค้นหา pageSize เพื่อควบคุมขนาดหน้า
อัปโหลดข้อมูลใหม่ไปยังชุดข้อมูล
หลังจากสร้างชุดข้อมูลและอัปโหลดข้อมูลเริ่มต้นเรียบร้อยแล้ว ระบบจะตั้งค่าสถานะของชุดข้อมูลเป็น STATE_COMPLETED ซึ่งหมายความว่าชุดข้อมูลพร้อมใช้งานในแอปแล้ว หากต้องการดู state ของชุดข้อมูล โปรดดูหัวข้อรับ
ชุดข้อมูล
นอกจากนี้ คุณยังอัปโหลดข้อมูลใหม่ไปยังชุดข้อมูลเพื่อสร้างชุดข้อมูลเวอร์ชันใหม่ได้ด้วย หากต้องการอัปโหลดข้อมูลใหม่ ให้ใช้กระบวนการเดียวกับที่คุณใช้ในการอัปโหลดข้อมูล จาก Cloud Storage หรืออัปโหลดข้อมูลจากไฟล์, และระบุข้อมูลใหม่ที่จะอัปโหลด
หากอัปโหลดข้อมูลใหม่สำเร็จ ระบบจะดำเนินการดังนี้
ตั้งค่าสถานะของชุดข้อมูลเวอร์ชันใหม่เป็น
STATE_COMPLETEDเวอร์ชันใหม่จะกลายเป็นเวอร์ชัน "ใช้งานจริง" และเป็นเวอร์ชันที่แอปของคุณใช้
หากเกิดข้อผิดพลาดในการอัปโหลด ระบบจะดำเนินการดังนี้
ตั้งค่าสถานะของชุดข้อมูลเวอร์ชันใหม่เป็นสถานะใดสถานะหนึ่งต่อไปนี้
STATE_IMPORT_FAILEDSTATE_PROCESSING_FAILEDSTATE_PUBLISHING_FAILEDSTATE_DELETION_FAILED
ชุดข้อมูลเวอร์ชันก่อนหน้าที่อัปโหลดสำเร็จจะยังคงเป็นเวอร์ชัน "ใช้งานจริง" และเป็นเวอร์ชันที่แอปของคุณใช้