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

ডেটাসেট তৈরি করা একটি দুই-ধাপের প্রক্রিয়া:

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

  2. ডেটা সেটে ডেটা আপলোড করার জন্য অনুরোধ করুন।

প্রাথমিক ডেটা আপলোডের পরে, আপনি ডেটাসেটের একটি নতুন সংস্করণ তৈরি করতে এতে নতুন ডেটা আপলোড করতে পারেন।

Create the dataset

ডেটাসেটস এন্ডপয়েন্টে একটি 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" 
}

ডেটাসেটে ডেটা আপলোড করুন

ডেটা সেট তৈরি করার পরে, গুগল ক্লাউড স্টোরেজ বা স্থানীয় ফাইল থেকে ডেটা আপলোড করুন।

আপলোড প্রক্রিয়াটি অ্যাসিঙ্ক্রোনাস। ডেটা আপলোড করার পর, তা গ্রহণ ও প্রক্রিয়াজাত করা হয়। এর মানে হলো, ডেটাসেটটি কখন ব্যবহারের জন্য প্রস্তুত বা এতে কোনো ত্রুটি আছে কিনা তা জানতে, আপনাকে অবশ্যই একটি 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 (জিওজেসন ফাইল), FILE_FORMAT_KML (কেএমএল ফাইল), অথবা FILE_FORMAT_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 (জিওজেসন ফাইল), FILE_FORMAT_KML (কেএমএল ফাইল), অথবা FILE_FORMAT_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 জানতে, ‘Get a dataset’ ব্যবহার করুন। উদাহরণস্বরূপ, ডেটা প্রসেস করার সময়, 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 অ্যারেটি থাকে। এই অ্যারেটি প্রতি কলে 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 নির্ধারণ করতে, "Get a dataset" দেখুন।

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

If the new data uploads successfully:

  • ডেটা সেটের নতুন সংস্করণের অবস্থা STATE_COMPLETED হিসেবে সেট করা হয়েছে।

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

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

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

    • STATE_IMPORT_FAILED
    • STATE_PROCESSING_FAILED
    • STATE_PUBLISHING_FAILED
    • STATE_DELETION_FAILED
  • পূর্ববর্তী ডেটা সেটের সফল সংস্করণটিই 'সক্রিয়' সংস্করণ হিসেবে থাকে এবং আপনার অ্যাপ সেই সংস্করণটিই ব্যবহার করে।