สร้างชุดข้อมูล

การสร้างชุดข้อมูลเป็นกระบวนการที่มี 2 ขั้นตอน ดังนี้

  1. ส่งคำขอเพื่อสร้างชุดข้อมูล

  2. ส่งคำขอเพื่ออัปโหลดข้อมูลไปยังชุดข้อมูล

หลังจากการอัปโหลดข้อมูลครั้งแรก คุณสามารถอัปโหลดข้อมูลใหม่ไปยังชุดข้อมูลเพื่อสร้าง ชุดข้อมูลเวอร์ชันใหม่

สร้างชุดข้อมูล

สร้างชุดข้อมูลโดยส่งคำขอ POST ไปยัง ปลายทาง datasets:

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 หรือจากไฟล์ในเครื่องไปยังชุดข้อมูล

การดำเนินการอัปโหลดจะเป็นแบบไม่พร้อมกัน หลังจากที่คุณอัปโหลดข้อมูล ข้อมูลจะ ส่งผ่านและประมวลผล นั่นหมายความว่าคุณต้องสร้างคำขอ HTTP GET เพื่อตรวจสอบ สถานะของชุดข้อมูลเพื่อระบุว่าชุดข้อมูลนั้นพร้อมใช้งานเมื่อใด หรือ เกิดข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่รับการประมวลผลข้อมูล

อัปโหลดข้อมูลจาก Cloud Storage

คุณอัปโหลดจาก Cloud Storage ไปยังชุดข้อมูลโดยส่งคำขอ POST ไปยัง datasets ที่ รวมรหัสของชุดข้อมูล:

https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import

ในเนื้อหาคำขอ JSON:

  • ใช้ inputUri เพื่อระบุเส้นทางของไฟล์ไปยังทรัพยากรที่มีข้อมูล ใน Cloud Storage เส้นทางนี้อยู่ในรูปแบบ gs://GCS_BUCKET/FILE

    ผู้ใช้ที่ส่งคำขอต้องใช้ Storage Object ผู้มีสิทธิ์ดู หรือบทบาทอื่นๆ ที่มีสิทธิ์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 ไปยัง datasets ที่ รวมรหัสของชุดข้อมูล:

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 เพื่อระบุเส้นทางไปยัง ไฟล์:

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 ขอรับรายละเอียดชุดข้อมูล นอกจากพร็อพเพอร์ตี้ state แล้ว การตอบกลับยังมีพร็อพเพอร์ตี้ errorMessage รายการเดียวที่มีคำอธิบาย ของข้อผิดพลาด

{
  "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 อาร์เรย์นี้มีข้อผิดพลาดสูงสุด 50 รายการ ได้แก่ ประเภท Status ต่อการเรียก 1 ครั้ง และรองรับข้อผิดพลาดรวมสูงสุด 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_FAILED
    • STATE_PROCESSING_FAILED
    • STATE_PUBLISHING_FAILED
    • STATE_DELETION_FAILED
  • ชุดข้อมูลเวอร์ชันก่อนหน้าที่สําเร็จจะยังคงเป็น "ใช้งานอยู่" เวอร์ชันและ เวอร์ชันที่แอปของคุณใช้