ایجاد مجموعه داده فرایندی دو مرحلهای است:
درخواستی برای ایجاد مجموعه داده ارسال کنید.
درخواستی برای بارگذاری دادهها در مجموعه داده ایجاد کنید.
پساز بارگذاری اولیه دادهها، میتوانید دادههای جدیدی را در مجموعه داده بارگذاری کنید تا نسخه جدیدی از مجموعه داده ایجاد کنید.
ساختن مجموعه داده
با ارسال درخواست 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 یا از فایل محلی در مجموعه داده بارگذاری کنید.
عملیات بارگذاری ناهمگام است. پساز بارگذاری دادهها، دادهها دریافت و پردازش میشوند. یعنی باید درخواست HTTP GET بدهید تا وضعیت مجموعه داده را پایش کنید و ببینید مجموعه داده چه زمانی برای استفاده آماده میشود یا خطایی وجود دارد یا نه. برای اطلاعات بیشتر، دریافت وضعیت پردازش داده را ببینید.
بارگذاری دادهها از Cloud Storage
با ارسال درخواست POST به نقطه پایانی مجموعه دادهها که شامل شناسه مجموعه دادهها نیز میشود، از Cloud Storage به مجموعه دادههایتان بارگذاری میکنید:
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 برای مشخص کردن مسیر دو فایل استفاده میکند:
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"
}
دریافت وضعیت پردازش دادهها
عملیات بارگذاری ناهمزمان است. یعنی پساز اینکه فراخوانی میانای برنامهسازی کاربردی برای بارگذاری دادهها در مجموعه داده برگردانده شد، باید مجموعه داده را نظرسنجی کنید تا مشخص شود که آیا دریافت و پردازش دادهها موفقیتآمیز بوده است یا نه.
برای تعیین 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 تماس بگیرید. این میانای برنامهسازی کاربردی همه خطاهای پردازش داده مرتبط با مجموعه داده را برمیگرداند:
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
در هر تماس است و در مجموع از حداکثر ۵۰۰ خطا پشتیبانی میکند:
{ "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)" }, ... ] }
اگر بیشاز ۵۰ خطا وجود داشته باشد، یعنی بیشاز یک صفحه
خطا وجود داشته باشد، پاسخ حاوی یک کد صفحه در فیلد 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"
بهطور پیشفرض، پاسخ حداکثر حاوی ۵۰ خطا در هر صفحه است. از
پارامتر پُرسمان pageSize برای کنترل اندازه صفحه استفاده کنید.
بارگذاری دادههای جدید در مجموعه داده
پساز ایجاد مجموعه داده و بارگذاری موفقیتآمیز دادههای اولیه، وضعیت مجموعه داده روی STATE_COMPLETED تنظیم میشود. این یعنی مجموعه داده برای استفاده در برنامهتان آماده است. برای تعیین state مجموعه داده، به دریافت مجموعه داده مراجعه کنید.
همچنین میتوانید دادههای جدیدی را در مجموعه داده بارگذاری کنید تا نسخه جدیدی از مجموعه داده ایجاد کنید. برای بارگذاری دادههای جدید، از همان روندی که برای بارگذاری دادهها از Cloud Storage یا بارگذاری دادهها از فایل استفاده کردید استفاده کنید و دادههای جدید را برای بارگذاری مشخص کنید.
اگر دادههای جدید باموفقیت بارگذاری شد:
وضعیت نسخه جدید مجموعه داده روی
STATE_COMPLETEDتنظیم شده است.نسخه جدید به نسخه «فعال» تبدیل میشود و نسخهای است که برنامهتان از آن استفاده میکند.
اگر خطایی در بارگذاری وجود دارد:
وضعیت نسخه مجموعه داده جدید روی یکی از وضعیتهای زیر تنظیم شده است:
STATE_IMPORT_FAILEDSTATE_PROCESSING_FAILEDSTATE_PUBLISHING_FAILEDSTATE_DELETION_FAILED
نسخه موفق قبلی مجموعه داده بهعنوان نسخه «فعال» باقی میماند و نسخهای است که برنامهتان از آن استفاده میکند.