একটি ডেটাসেট তৈরি করুন

একটি ডেটাসেট তৈরি করা একটি দ্বি-পদক্ষেপ প্রক্রিয়া:

  1. ডেটাসেট তৈরি করার জন্য একটি অনুরোধ করুন।

  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 ক্লাউড স্টোরেজ থেকে বা একটি স্থানীয় ফাইল থেকে ডেটাসেটে ডেটা আপলোড করুন৷

আপলোড অপারেশন অ্যাসিঙ্ক্রোনাস। আপনি ডেটা আপলোড করার পরে, ডেটা ইনজেস্ট এবং প্রক্রিয়া করা হয়। এর মানে হল যে ডেটাসেটটি কখন ব্যবহার করার জন্য প্রস্তুত বা কোন ত্রুটি ছিল তা নির্ধারণ করতে আপনাকে অবশ্যই একটি HTTP GET অনুরোধ করতে হবে। আরও তথ্যের জন্য, ডেটা প্রসেসিং স্টেট পান দেখুন।

ক্লাউড স্টোরেজ থেকে ডেটা আপলোড করুন

আপনি ক্লাউড স্টোরেজ থেকে ডেটাসেট এন্ডপয়েন্টে একটি POST অনুরোধ পাঠিয়ে আপনার ডেটাসেটে আপলোড করেন যাতে ডেটাসেটের আইডিও অন্তর্ভুক্ত থাকে:

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

JSON অনুরোধের বডিতে:

  • ক্লাউড সঞ্চয়স্থানে ডেটা ধারণকারী সম্পদের ফাইল পাথ নির্দিষ্ট করতে inputUri ব্যবহার করুন। এই পথটি gs:// GCS_BUCKET / FILE আকারে রয়েছে।

    যে ব্যবহারকারী অনুরোধ করছেন তার জন্য স্টোরেজ অবজেক্ট ভিউয়ারের ভূমিকা বা অন্য কোনো ভূমিকা প্রয়োজন যাতে storage.objects.get অনুমতি অন্তর্ভুক্ত থাকে। ক্লাউড স্টোরেজে অ্যাক্সেস পরিচালনার বিষয়ে আরও তথ্যের জন্য, অ্যাক্সেস নিয়ন্ত্রণের ওভারভিউ দেখুন।

  • 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"}}
  • আপলোড করার জন্য ডেটা সহ GeoJSON, KML, বা CSV ফাইলের পাথ নির্দিষ্ট করে rawdata বৈশিষ্ট্য।

নিম্নলিখিত অনুরোধ দুটি ফাইলের পাথ নির্দিষ্ট করতে 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_COMPLETED ব্যতীত অন্য কোনো মানতে state সেট করা হয়, যেমন 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 অ্যারে রয়েছে. এই অ্যারেতে প্রতি কলে 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টির বেশি ত্রুটি থাকে, যার অর্থ একের বেশি পৃষ্ঠার ত্রুটি, তাহলে প্রতিক্রিয়াটিতে 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 নির্ধারণ করতে, একটি ডেটাসেট পান দেখুন।

এছাড়াও আপনি ডেটাসেটের একটি নতুন সংস্করণ তৈরি করতে ডেটাসেটে নতুন ডেটা আপলোড করতে পারেন। নতুন ডেটা আপলোড করতে, আপনি ক্লাউড স্টোরেজ থেকে ডেটা আপলোড করতে বা ফাইল থেকে ডেটা আপলোড করতে যেভাবে করেছিলেন একই প্রক্রিয়া ব্যবহার করুন এবং আপলোড করার জন্য নতুন ডেটা নির্দিষ্ট করুন৷

যদি নতুন ডেটা সফলভাবে আপলোড হয়:

  • ডেটাসেটের নতুন সংস্করণের অবস্থা STATE_COMPLETED এ সেট করা আছে।

  • নতুন সংস্করণটি "সক্রিয়" সংস্করণে পরিণত হয় এবং এটি আপনার অ্যাপ দ্বারা ব্যবহৃত সংস্করণ।

আপলোডে কোনো ত্রুটি থাকলে:

  • নতুন ডেটাসেট সংস্করণের অবস্থা নিম্নলিখিত রাজ্যগুলির একটিতে সেট করা হয়েছে:

    • STATE_IMPORT_FAILED
    • STATE_PROCESSING_FAILED
    • STATE_PUBLISHING_FAILED
    • STATE_DELETION_FAILED
  • আগের ডেটাসেট সফল সংস্করণটি "সক্রিয়" সংস্করণ হিসাবে থাকে এবং এটি আপনার অ্যাপ দ্বারা ব্যবহৃত সংস্করণ।