আর্থ ইঞ্জিন এবং BigQuery

এই দস্তাবেজটি দক্ষ ভূ-স্থানিক বিশ্লেষণের জন্য Google আর্থ ইঞ্জিন (EE) কে BigQuery (BQ) এর সাথে একীভূত করার বিষয়ে নির্দেশিকা প্রদান করে। এটি দুটি প্ল্যাটফর্মের মধ্যে ডেটা স্থানান্তর, কর্মক্ষমতা বিবেচনা, সীমাবদ্ধতা এবং খরচের প্রভাবকে কভার করে।

BigQuery কি?

BigQuery হল Google-এর সম্পূর্ণরূপে পরিচালিত, সার্ভারহীন ডেটা গুদাম যা পেটাবাইট ডেটার উপর মাপযোগ্য বিশ্লেষণ সক্ষম করে৷ এটি উচ্চ-গতির এসকিউএল কোয়েরিতে এক্সেল এবং ভূ-স্থানিক ডেটা সমর্থন করে।

কখন আমি BigQuery বা আর্থ ইঞ্জিন ব্যবহার করব?

BigQuery আর্থ ইঞ্জিন
ডেটা টাইপ প্রাথমিকভাবে কাঠামোগত, বিশ্লেষণাত্মক ভেক্টর ডেটা। GEOGRAPHY ডেটাতে ভূ-স্থানিক ক্রিয়াকলাপ সমর্থন করে। প্রাথমিকভাবে রাস্টার ডেটা, তবে ভেক্টর ডেটাও সমর্থন করে।
প্রক্রিয়াকরণ এসকিউএল-ভিত্তিক ক্যোয়ারী, বড় আকারের একত্রিতকরণ এবং যোগদানের জন্য অপ্টিমাইজ করা হয়েছে। বিকিউ মেশিন লার্নিংয়ের সাথে গভীর একীকরণ। উন্নত জিওস্পেশিয়াল অ্যালগরিদম এবং মেশিন লার্নিং সহ রাস্টার প্রক্রিয়াকরণ এবং বিশ্লেষণের জন্য জাভাস্ক্রিপ্ট এবং পাইথন API।
স্কেল পেটাবাইট-স্কেল স্টোরেজ এবং বিশ্লেষণ। ট্যাবুলার ডেটা প্রসেসিং এর উপর ফোকাস করুন। পেটাবাইট-স্কেল স্টোরেজ এবং বিশ্লেষণ। ভেক্টর ডেটা প্রসেসিং স্কেলের সীমাবদ্ধতা সহ ভূ-স্থানিক বিশ্লেষণে ফোকাস করুন।
কেস ব্যবহার করুন ডেটা গুদামজাতকরণ, ব্যবসায়িক বুদ্ধিমত্তা, বড় ভেক্টর ডেটাসেটের ভূ-স্থানিক বিশ্লেষণ। ভূ-স্থানিক বিশ্লেষণ, রিমোট সেন্সিং, পরিবেশগত পর্যবেক্ষণ, রাস্টার ডেটার উপর মেশিন লার্নিং।

ভেক্টর এবং রাস্টার ডেটা

ভেক্টর ডেটা হল পৃথিবীর পৃষ্ঠের বিন্দু, রেখা এবং বহুভুজ। BigQuery-এ, ভেক্টর ডেটা GEOGRAPHY ডেটা টাইপ ব্যবহার করে সংরক্ষণ করা হয়; আর্থ ইঞ্জিনে, এগুলি হল ee.Geometry বস্তু।

রাস্টার ডেটা পিক্সেলের প্রজেক্টেড গ্রিড। আর্থ ইঞ্জিন বড় রাস্টার ডেটাসেট পরিচালনা এবং প্রক্রিয়াকরণের জন্য অপ্টিমাইজ করা হয়েছে।

উভয় সিস্টেম ব্যবহারের সুবিধা

BigQuery-এর স্কেলেবিলিটি আপনাকে বিশাল টেবুলার ডেটাসেটগুলির সাথে কাজ করতে দেয় যা শুধুমাত্র আর্থ ইঞ্জিনের মধ্যে প্রক্রিয়া করা চ্যালেঞ্জিং হতে পারে এবং আর্থ ইঞ্জিন বড়-স্কেল সমৃদ্ধকরণ এবং ভেক্টর-টু-রাস্টার প্রক্রিয়াকরণকে শক্তি দিতে পারে যা BigQuery-তে সম্ভব নয়।

আর্থ ইঞ্জিন BigQuery-এর তুলনায় ভূ-স্থানিক ফাংশন এবং ডেটার বিস্তৃত পরিসরকে সমর্থন করে, কিন্তু BigQuery-এর অন্যান্য সরঞ্জাম এবং পরিষেবাগুলির সাথে আরও সমৃদ্ধ একীকরণ রয়েছে।

আর্থ ইঞ্জিন ডেটা BigQuery-এ সরান

আর্থ ইঞ্জিন অন্যান্য ডেটাসেটের সাথে আরও বিশ্লেষণ এবং একীকরণের জন্য সরাসরি BigQuery-এ ডেটা রপ্তানি করতে পারে।

Export.table.toBigQuery()

Export.table.toBigQuery() ফাংশনটি অ্যাসিঙ্ক্রোনাস এক্সপোর্ট জব ট্রিগার করতে ব্যবহার করুন যা BigQuery-এ আর্থ ইঞ্জিন কম্পিউটেশনের ফলাফল লেখে। এই আর্থ ইঞ্জিনের কাজগুলি ক্লাউড কনসোলে বা আর্থ ইঞ্জিন কোড এডিটরে টাস্ক ভিউ থেকে দেখা এবং নিয়ন্ত্রণ করা যেতে পারে।

জাভাস্ক্রিপ্ট

// Define an Earth Engine feature collection.
var features = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017');

// Export the feature collection to BigQuery.
Export.table.toBigQuery({
  collection: features,
  description: 'export_to_bigquery',
  table: 'my_project.my_dataset.my_table',
  append: true,
  overwrite: false
});
      

পাইথন

# Define an Earth Engine feature collection.
features = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017')

# Export the feature collection to BigQuery.
task = ee.batch.Export.table.toBigQuery(
  collection=features,
  description='export_to_bigquery',
  table='my_project.my_dataset.my_table',
  append=True,
  overwrite=False
)
task.start()
      

আরও তথ্যের জন্য সম্পূর্ণ ফাংশন ডকুমেন্টেশন দেখুন।

সিঙ্ক্রোনাস API

BigQuery-এ সরাসরি ডেটা সিঙ্ক্রোনাসভাবে লেখার জন্য আর্থ ইঞ্জিনের মধ্যে কোনো সরাসরি সংযোগকারী নেই। আপনি BigQuery-এ ডেটা স্ট্রিম করতে আপনার পছন্দের ভাষার (Python, Java, Go, ইত্যাদি) জন্য BigQuery ক্লায়েন্ট লাইব্রেরি ব্যবহার করতে পারেন, অথবা রিয়েল-টাইম বা রিয়েল-টাইম ডেটা স্থানান্তরের জন্য RPC স্টোরেজ API ব্যবহার করতে পারেন।

বিষয় বিস্তারিত
পূর্বশর্ত প্রজেক্টে BigQuery API এবং BigQuery স্টোরেজ API সক্রিয় থাকতে হবে।
অনুমতি আপনার লক্ষ্য BigQuery ডেটাসেটে লেখার অ্যাক্সেস এবং লক্ষ্য প্রকল্পে চাকরি তৈরি করার অনুমতি থাকতে হবে। সুনির্দিষ্ট জন্য প্রয়োজনীয় অনুমতি তালিকা দেখুন. অনুমতি পরিচালনার বিষয়ে বিস্তারিত তথ্যের জন্য BigQuery অ্যাক্সেস কন্ট্রোল ডকুমেন্টেশন পড়ুন।
মূল্য নির্ধারণ আপনি BigQuery-এ রপ্তানি করেন এমন যেকোনো আর্থ ইঞ্জিন ডেটার স্টোরেজ এবং বিশ্লেষণ সহ BigQuery ব্যবহারের জন্য আপনাকে চার্জ দিতে হবে। বিশদ বিবরণের জন্য, আর্থ ইঞ্জিন থেকে BigQuery রপ্তানি মূল্য দেখুন।
সীমা ফলস্বরূপ ডেটা অবশ্যই BigQuery-এর টেবিল মডেলের সাথে মানানসই হবে যার অতিরিক্ত সীমা প্রতি সারিতে 8 MB। BigQuery-এ আর্থ ইঞ্জিন ডেটা রপ্তানি করার জন্য পরিচিত সমস্যার সেটও দেখুন।

BigQuery থেকে সরাসরি ডেটা লোড করুন

ee.FeatureCollection.loadBigQueryTable() ফাংশন BigQuery টেবিল থেকে সরাসরি ডেটা লোড করে তা BigQuery-এর মধ্যে রূপান্তর না করে।

জাভাস্ক্রিপ্ট

// Load the BigQuery table with a specified geometry column.
var features = ee.FeatureCollection.loadBigQueryTable({
  tablePath: 'my_project.my_dataset.my_table',
  geometryColumn: 'geo'
});

// Map features on the map
Map.addLayer(features);
      

পাইথন

# Load the BigQuery table with a specified geometry column.
features = ee.FeatureCollection.loadBigQueryTable(
    tablePath='my_project.my_dataset.my_table',
    geometryColumn='geo')

print(features.first())
      
বিষয় বিস্তারিত
পূর্বশর্ত প্রজেক্টে BigQuery API এবং BigQuery স্টোরেজ API সক্রিয় থাকতে হবে।
অনুমতি স্ট্যান্ডার্ড ভূমিকা এবং অনুমতিগুলি ছাড়াও, আপনার লক্ষ্য BigQuery টেবিলে পড়ার অ্যাক্সেস এবং লক্ষ্য প্রকল্পে পঠিত সেশন তৈরি করার অনুমতি থাকতে হবে। প্রয়োজন নির্দিষ্ট BigQuery অনুমতিগুলি হল: - bigquery.tables.get - bigquery.tables.getData - bigquery.readSession.create - bigquery.jobs.create অনুমতি পরিচালনার বিষয়ে বিস্তারিত তথ্যের জন্য BigQuery অ্যাক্সেস কন্ট্রোল ডকুমেন্টেশন পড়ুন৷
মূল্য নির্ধারণ আপনি যদি বাণিজ্যিক আর্থ ইঞ্জিন ব্যবহারের জন্য নিবন্ধিত একটি প্রকল্প ব্যবহার করেন, তাহলে BigQuery টেবিল পড়ার সাথে সম্পর্কিত কোনও অতিরিক্ত আর্থ ইঞ্জিন খরচ নেই, তবে আর্থ ইঞ্জিনে ডেটা প্রক্রিয়াকরণের সাথে সম্পর্কিত EECU-সময়ের খরচ আপনাকে বহন করতে হবে। সঠিক মূল্যের স্কিম আপনার আর্থ ইঞ্জিন প্ল্যান দ্বারা নির্ধারিত হয়। আপনি যদি অবাণিজ্যিক ব্যবহারের জন্য নিবন্ধিত একটি প্রকল্প ব্যবহার করেন, তাহলে BigQuery থেকে আর্থ ইঞ্জিনে ডেটা পড়ার জন্য আপনাকে কোনো চার্জ দিতে হবে না। যদিও আপনি BigQuery ব্যবহারের জন্য অর্থপ্রদান করবেন না, একটি বাণিজ্যিক পণ্য হিসাবে BigQuery এর জন্য আপনার প্রকল্পের একটি সংশ্লিষ্ট বিলিং অ্যাকাউন্ট থাকা প্রয়োজন। বিলিং অ্যাকাউন্ট সম্পর্কে আরও জানতে বিলিং সক্ষম, অক্ষম বা পরিবর্তন করার জন্য ডকুমেন্টেশন দেখুন। দ্রষ্টব্য: ব্যক্তিগত প্রিভিউতে আপনাকে BigQuery ডেটা স্ট্রিমিংয়ের জন্যও চার্জ করা হতে পারে।
সীমা বৈশিষ্ট্য সংগ্রহের ফিল্টার BigQuery-এ পাঠানো হয় এবং সেখানে প্রয়োগ করা হয়। BigQuery-এর প্রাপ্ত ফিল্টার ক্লজের জন্য একটি আকারের সীমা রয়েছে। আপনি যদি একটি "ফিল্টার খুব বড়" ত্রুটি বার্তা দেখতে পান, তাহলে ফিল্টারটিকে সরল করার কথা বিবেচনা করুন৷ আর্থ ইঞ্জিনে .filterBounds() কলে ব্যবহৃত একটি জটিল জ্যামিতি হতে পারে এই সীমা অতিক্রম করার একটি সাধারণ উৎস।

আর্থ ইঞ্জিন থেকে BigQuery কোয়েরি চালান

ee.FeatureCollection.runBigQuery() ফাংশন BigQuery কম্পিউটেশনকে ট্রিগার করে একটি SQL কোয়েরি সরাসরি BigQuery টেবিলের বিপরীতে মূল্যায়ন করতে এবং ফলাফলগুলিকে আর্থ ইঞ্জিন FeatureCollection হিসেবে পুনরুদ্ধার করে।

জাভাস্ক্রিপ্ট

// Construct a BigQuery query.
var query = 'SELECT * FROM my_project.my_dataset.my_table WHERE area > 1000';

// Run the query and retrieve the results as a FeatureCollection.
var features = ee.FeatureCollection.runBigQuery(query);

// Print the first feature.
print(features.first());
      

পাইথন

# Construct a BigQuery query.
query = 'SELECT * FROM my_project.my_dataset.my_table WHERE area > 1000'

# Run the query and retrieve the results as a FeatureCollection.
features = ee.FeatureCollection.runBigQuery(query)

# Print the first feature.
print(features.first())
      

খরচ

এই ফাংশনটি ব্যবহার করার জন্য একটি বিলিং অ্যাকাউন্ট প্রয়োজন।

আর্থ ইঞ্জিন

আপনি যদি বাণিজ্যিক আর্থ ইঞ্জিন ব্যবহারের জন্য নিবন্ধিত একটি প্রকল্প ব্যবহার করেন, তাহলে BigQuery টেবিল চালানোর সাথে সম্পর্কিত কোনো অতিরিক্ত আর্থ ইঞ্জিন খরচ নেই, তবে আর্থ ইঞ্জিনে ডেটা প্রক্রিয়াকরণের সাথে সম্পর্কিত EECU-সময়ের খরচ আপনাকে বহন করতে হবে। সঠিক মূল্যের স্কিম আপনার আর্থ ইঞ্জিন প্ল্যান দ্বারা নির্ধারিত হয়।

আপনি যদি অবাণিজ্যিক ব্যবহারের জন্য নিবন্ধিত একটি প্রকল্প ব্যবহার করেন, তাহলে BigQuery থেকে আর্থ ইঞ্জিনে ডেটা পড়ার জন্য আপনাকে কোনো চার্জ দিতে হবে না।

BigQuery

এই পদ্ধতিতে আপনার মূল্য নির্ধারণের পরিকল্পনার উপর ভিত্তি করে (চাহিদা অনুযায়ী বা স্লট সহ) BigQuery চার্জ নেওয়া হয়। আপনার যদি BigQuery রিজার্ভেশন থাকে, তাহলে এই পদ্ধতি ব্যবহার করলে অতিরিক্ত অন-ডিমান্ড চার্জ জেনারেট হবে না।

বিষয় বিস্তারিত
পূর্বশর্ত এই ফাংশনটি ব্যবহার করার জন্য একটি বিলিং অ্যাকাউন্ট প্রয়োজন, এবং BigQuery API সক্ষম করা আবশ্যক৷
অনুমতি আর্থ ইঞ্জিন পরিষেবা অ্যাকাউন্টে BigQuery এবং আর্থ ইঞ্জিন উভয়ই ব্যবহার করার প্রয়োজনীয় অনুমতি রয়েছে তা নিশ্চিত করুন। প্রমাণীকরণের জন্য ব্যবহৃত ব্যবহারকারীর শংসাপত্রগুলির bigquery.jobs.create এবং bigquery.jobs.get অনুমতি থাকতে হবে৷ অনুমতি পরিচালনার বিষয়ে বিস্তারিত তথ্যের জন্য BigQuery অ্যাক্সেস কন্ট্রোল ডকুমেন্টেশন পড়ুন।
মূল্য নির্ধারণ এই পদ্ধতিতে আপনার মূল্য নির্ধারণের পরিকল্পনার উপর ভিত্তি করে (চাহিদা অনুযায়ী বা স্লট সহ) BigQuery চার্জ নেওয়া হয়। আপনার যদি BigQuery রিজার্ভেশন থাকে, তাহলে এই পদ্ধতি ব্যবহার করলে অতিরিক্ত অন-ডিমান্ড চার্জ জেনারেট হবে না। আপনি যদি বাণিজ্যিক আর্থ ইঞ্জিন ব্যবহারের জন্য নিবন্ধিত একটি প্রকল্প ব্যবহার করেন, তাহলে BigQuery টেবিল চালানোর সাথে সম্পর্কিত কোনো অতিরিক্ত আর্থ ইঞ্জিন খরচ নেই, তবে আর্থ ইঞ্জিনে ডেটা প্রক্রিয়াকরণের সাথে সম্পর্কিত EECU-সময়ের খরচ আপনাকে বহন করতে হবে। সঠিক মূল্যের স্কিম আপনার আর্থ ইঞ্জিন প্ল্যান দ্বারা নির্ধারিত হয়। আপনি যদি অবাণিজ্যিক ব্যবহারের জন্য নিবন্ধিত একটি প্রকল্প ব্যবহার করেন, তাহলে BigQuery থেকে আর্থ ইঞ্জিনে ডেটা পড়ার জন্য আপনাকে কোনো চার্জ দিতে হবে না।

কর্মক্ষমতা

BigQuery-এ ক্যোয়ারী অপ্টিমাইজেশান ছাড়াও, আর্থ ইঞ্জিনে ফলাফল ফেরত দেওয়ার কার্যকারিতা হল ফলাফলের আকার (অর্থাৎ, BigQuery থেকে পড়া বাইটের পরিমাণ) এবং ফলাফলের জ্যামিতিগুলির জটিলতা।

ফিল্টার

ফিল্টার করার জন্য সেরা অনুশীলন অন্তর্ভুক্ত:

  • তাড়াতাড়ি এবং প্রায়ই ফিল্টার করা: যত তাড়াতাড়ি সম্ভব ডেটা প্রসেসিং পাইপলাইনে ফিল্টার প্রয়োগ করুন, আদর্শভাবে আপনার BigQuery SQL কোয়েরির মধ্যে। এটি আর্থ ইঞ্জিন দ্বারা স্থানান্তরিত এবং প্রক্রিয়াকৃত ডেটার পরিমাণ হ্রাস করে।
  • সিলেক্টিভিটি বাড়ান: ক্রাফট ফিল্টার যা ডেটার একটি ছোট, আরও নির্দিষ্ট উপসেট নির্বাচন করে। অপ্রয়োজনীয় ডেটা পুনরুদ্ধার করে এমন অত্যধিক বিস্তৃত ফিল্টার এড়িয়ে চলুন।
  • ফিল্টারগুলি একত্রিত করুন: ফলাফলগুলিকে কার্যকরভাবে সংকুচিত করতে একত্রে একাধিক ফিল্টার শর্তগুলি ব্যবহার করুন৷
  • সরলীকরণ: যখন সম্ভব, ফিল্টার স্ট্রিং আকারের জন্য 1 MB সীমা অতিক্রম এড়াতে জটিল ফিল্টারগুলিকে সহজ শর্তে ভেঙে দিন।
  • ক্লাস্টারিং: জিওস্পেশিয়াল ক্যোয়ারী ক্লাস্টার করা কলামের চেয়ে বেশি কার্যকরী হতে পারে।
  • BigQuery-এ ফিল্টারিং পছন্দ করুন: ডেটার আকার কমাতে, আর্থ ইঞ্জিনে আরও প্রক্রিয়াকরণের আগে BigQuery-এ প্রাথমিক ফিল্টারিং করা সবসময়ই ভাল। যখন এটি সম্ভব না হয়, BigQuery থেকে ডেটা লোড করার পরে আপনার আর্থ ইঞ্জিন স্ক্রিপ্টের মধ্যে পোস্ট-ফিল্টার হিসাবে অতিরিক্ত ফিল্টার প্রয়োগ করুন।

সিস্টেম-ওয়াইড সীমা

  • 400 GB টেবিলের আকারের সীমা
    • আর্থ ইঞ্জিন 400 GB এর চেয়ে বড় টেবিল পড়ার অনুমতি দেয় না।
  • 10 GB মধ্যবর্তী টেবিলের আকার
    • প্রতিটি প্রশ্নের ফলাফল 10 জিবি পর্যন্ত সীমাবদ্ধ। শুধুমাত্র প্রয়োজনীয় কলামগুলি বেছে নিয়ে আপনার ক্যোয়ারীকে আরও নির্বাচনী করে তুলুন, উদাহরণস্বরূপ LIMIT এবং WHERE ক্লজ যোগ করে৷
    • আর্থ ইঞ্জিন BigQuery-এ স্ক্যান করা ডেটার পরিমাণের উপর একটি সীমা আরোপ করে।
  • রূপান্তরের পরে ফিল্টার স্ট্রিং আকারের জন্য 1 MB সীমা
    • জটিল ফিল্টারের ফলে বড় ফিল্টার স্ট্রিং সীমা ছাড়িয়ে যেতে পারে।
  • টাইমআউট
    • আর্থ ইঞ্জিন ক্যোয়ারীতে টাইমআউট প্রয়োগ করে, যা রাজ্যের উপর নির্ভর করে পরিবর্তিত হতে পারে (যেমন, ব্যাচ, অনলাইন)।
  • BigQuery সীমা

খরচ নিয়ন্ত্রণ

BigQuery এবং আর্থ ইঞ্জিনের মধ্যে ডেটা সরানোর জন্য সাধারণত সরাসরি খরচ হয় না। যাইহোক, স্থানান্তরিত ডেটার আকার BigQuery এবং আর্থ ইঞ্জিন উভয় ক্ষেত্রেই প্রক্রিয়াকরণ খরচ প্রভাবিত করতে পারে।

যদি কোনো প্রশ্ন BigQuery সাইডে প্রসেসিং জড়িত থাকে, তাহলে আপনার BigQuery কনফিগারেশন অনুযায়ী BigQuery চার্জ দিতে হবে।

যদি একটি প্রশ্ন আর্থ ইঞ্জিনের মধ্যে প্রক্রিয়াকরণের সাথে জড়িত থাকে এবং আপনার প্রকল্পটি বাণিজ্যিক ব্যবহারের জন্য নিবন্ধিত হয়, তাহলে আপনার আর্থ ইঞ্জিন বিলিং কনফিগারেশন অনুযায়ী আর্থ ইঞ্জিন EECU-টাইম চার্জ আপনাকে বহন করতে হবে।

লগ এবং ডিবাগিং

অপারেশন পড়ুন

ee.FeatureCollection.loadBigQueryTable() ব্যবহার করে BigQuery থেকে ডেটা পড়ার সময়, সংশ্লিষ্ট অপারেশনটি BigQuery-এ চাকরি হিসেবে স্পষ্টভাবে লগ করা হয় না। এর মানে হল যে আপনি অন্যান্য লগিং বিশদ (যেমন ক্লাউড অডিট লগ) দেখতে পারেন যেগুলির কোন সংশ্লিষ্ট BigQuery রিড জব নেই।

অনুসন্ধানের ইতিহাস

ee.FeatureCollection.runBigQuery() ব্যবহার করে সঞ্চালিত প্রশ্নগুলি আপনার প্রকল্পের BigQuery ক্যোয়ারী ইতিহাসে লগ ইন করা হয়েছে। আপনি ক্লাউড কনসোলে BigQuery UI এর মাধ্যমে আপনার ক্যোয়ারী ইতিহাস অ্যাক্সেস করতে পারেন।