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

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

  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" 
}

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

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

আপলোড অপারেশনটি অ্যাসিঙ্ক্রোনাস। ডেটা আপলোড করার পরে, ডেটা ইনজেক্ট করা হয় এবং প্রক্রিয়াজাত করা হয়। এর অর্থ হল ডেটাসেটটি কখন ব্যবহারের জন্য প্রস্তুত বা কোনও ত্রুটি ছিল কিনা তা নির্ধারণ করার জন্য আপনাকে ডেটাসেটের অবস্থা পর্যবেক্ষণ করার জন্য একটি 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"}}
  • 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 নির্ধারণ করতে, 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 property-এর সাথে, প্রতিক্রিয়াটিতে একটি একক 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 নির্ধারণ করতে, একটি ডেটাসেট পান দেখুন।

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

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

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

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

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

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

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