১. ভূমিকা
এই কোডল্যাবে, আপনি গুগল ক্লাউডের ইউনিফাইড ডেটা লেকহাউসের সক্ষমতাগুলো অন্বেষণ করবেন। আপনি বিগলেকের অ্যাপাচি আইসবার্গ রেস্ট ক্যাটালগের মাধ্যমে পরিবেশিত পাবলিক ডেটাসেটগুলোর সাথে কাজ করবেন এবং তারপর স্ট্রাকচার্ড ও আনস্ট্রাকচার্ড উভয় প্রকার ডেটার উপর গুগল ক্লাউডের এআই সক্ষমতা প্রয়োগ করবেন।
আপনি অ্যাপাচি আইসবার্গ ব্যবহার করে ক্লাসিক এনওয়াইসি ট্যাক্সি ডেটাসেটে কোয়েরি করবেন, ডেটার পরিবর্তন নিরীক্ষা করতে টাইম ট্র্যাভেল গভীরভাবে বিশ্লেষণ করবেন, এবং তারপর আপনার ডেটার উপর এআই মডেল চালানোর জন্য বিগকোয়েরি এমএল ও জেমিনি ব্যবহার করবেন।
আপনি যা করবেন
- BigLake-এ হোস্ট করা Apache Iceberg পাবলিক ডেটাসেট কোয়েরি করতে Google Cloud Serverless for Apache Spark ব্যবহার করুন।
- অ্যাপাচি আইসবার্গ ফরম্যাটে কাঠামোগত ডেটা কোয়েরি করুন।
- অ্যাপাচি আইসবার্গে সময় ভ্রমণ প্রদর্শন করুন।
- স্ট্রাকচার্ড ডেটার উপর একটি প্রেডিক্টিভ মডেলকে প্রশিক্ষণ দিতে BigQuery ML ব্যবহার করুন।
- একটি বিগলেক অবজেক্ট টেবিল (অসংগঠিত ডেটা) তৈরি করুন এবং ছবিগুলো বিশ্লেষণ করতে জেমিনি ব্যবহার করুন।
আপনার যা যা লাগবে
- ক্রোমের মতো একটি ওয়েব ব্রাউজার।
- বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট।
প্রত্যাশিত খরচ এবং সময়কাল
- সম্পূর্ণ করতে সময় : প্রায় ৪৫ মিনিট।
- আনুমানিক খরচ : < $২.০০। খরচ কম রাখতে আমরা পাবলিক ডেটাসেট এবং সার্ভারলেস কোয়েরি ব্যবহার করি।
২. সেটআপ এবং প্রয়োজনীয়তা
এই ধাপে, আপনি আপনার পরিবেশ প্রস্তুত করবেন এবং প্রয়োজনীয় API-গুলো সক্রিয় করবেন।
ক্লাউড শেল শুরু করুন
আপনি বেশিরভাগ কমান্ড গুগল ক্লাউড শেল থেকে চালাবেন।
- Google Cloud কনসোলের শীর্ষে থাকা Activate Cloud Shell-এ ক্লিক করুন।
- প্রমাণীকরণ যাচাই করুন:
gcloud auth list - আপনার প্রকল্পটি নিশ্চিত করুন:
gcloud config get project - প্রজেক্টটি সেট করা না থাকলে, আপনার প্রজেক্ট আইডি ব্যবহার করে এটি সেট করুন:
gcloud config set project <YOUR_PROJECT_ID>
এপিআই সক্ষম করুন
BigQuery , Cloud Resource Manager , এবং Vertex AI- এর জন্য প্রয়োজনীয় API-গুলো সক্রিয় করতে নিম্নলিখিত কমান্ডটি চালান:
gcloud services enable \
bigquery.googleapis.com \
aiplatform.googleapis.com \
cloudresourcemanager.googleapis.com
পরিবেশ কনফিগার করুন এবং নির্ভরতা বাকেট তৈরি করুন
- আপনার টার্মিনালে এনভায়রনমেন্ট ভেরিয়েবল সেট করুন:
export PROJECT_ID=$(gcloud config get project) export REGION=us-central1 export DEPS_BUCKET=$PROJECT_ID-deps-bucket - ডিপেন্ডেন্সি ক্লাউড স্টোরেজ বাকেট তৈরি করুন। জব সাবমিশনের সময় পাইস্পার্ক স্ক্রিপ্টগুলো এখানে আপলোড করা হয়:
gcloud storage buckets create gs://$DEPS_BUCKET --location=$REGION
৩. অ্যাপাচি আইসবার্গ পাবলিক ক্যাটালগের সাথে সংযোগ করুন
এই ধাপে, আপনি গুগল ক্লাউডের বিগলেকে হোস্ট করা একটি লাইভ, প্রোডাকশন-গ্রেড অ্যাপাচি আইসবার্গ ক্যাটালগের সাথে সংযুক্ত হবেন।
সার্ভারলেস ফর অ্যাপাচি স্পার্ক ব্যাচ সিএলআই দিয়ে স্পার্ক এসকিউএল চালান
আমরা পরিকাঠামো ব্যবস্থাপনার ঝামেলা ছাড়াই পাইস্পার্ক (PySpark) জব চালানোর জন্য গুগল ক্লাউড সার্ভারলেস ফর অ্যাপাচি স্পার্ক (Google Cloud Serverless for Apache Spark) ব্যবহার করব। আমরা এটিকে পাবলিক বিগলেক রেস্ট ক্যাটালগ (BigLake REST Catalog)-এর দিকে নির্দেশ করার জন্য কনফিগার করব।
- পুনরাবৃত্তি এড়াতে BigLake REST ক্যাটালগের প্রোপার্টিগুলো সংজ্ঞায়িত করুন। এই কনফিগারেশনটি Spark-কে বলে:
-
iceberg-spark-runttimeএবংiceberg-gcp-bundleলাইব্রেরিগুলো ব্যবহার করতে। - BigLake REST Catalog এন্ডপয়েন্ট ব্যবহার করে
my_catalogনামের একটি ক্যাটালগ কনফিগার করতে। - ডিফল্ট লোকাল ফাইল সিস্টেমের পরিবর্তে ডেটা ফাইল পড়ার জন্য গুগল ক্লাউড স্টোরেজ (GCS) ব্যবহার করতে।
- আমাদের সেশনের জন্য এই
my_catalogক্যাটালগটিকে ডিফল্ট হিসেবে সেট করতে। - উন্নত নিরাপত্তা এবং সহজ ডেটা অ্যাক্সেসের জন্য ভেন্ডেড ক্রেডেনশিয়াল ব্যবহার করুন।
export METASTORE_PROPERTIES="^|^spark.jars.packages=org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.10.0,org.apache.iceberg:iceberg-gcp-bundle:1.10.0|\ spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog|\ spark.sql.catalog.my_catalog.type=rest|\ spark.sql.catalog.my_catalog.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog|\ spark.sql.catalog.my_catalog.warehouse=gs://biglake-public-nyc-taxi-iceberg|\ spark.sql.catalog.my_catalog.io-impl=org.apache.iceberg.gcp.gcs.GCSFileIO|\ spark.sql.catalog.my_catalog.header.x-goog-user-project=$PROJECT_ID|\ spark.sql.catalog.my_catalog.header.X-Iceberg-Access-Delegation=vended-credentials|\ spark.sql.catalog.my_catalog.rest.auth.type=org.apache.iceberg.gcp.auth.GoogleAuthManager|\ spark.sql.defaultCatalog=my_catalog|\ spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions|\ spark.log.level=ERROR" -
- একটি সাধারণ টেস্ট কোয়েরি ফাইল তৈরি করুন:
cat <<EOF > test.py from pyspark.sql import SparkSession spark = SparkSession.builder.getOrCreate() spark.sql("SHOW TABLES IN public_data").show() EOF - ব্যাচ জবটি জমা দিন:
আপনি নিম্নলিখিতের অনুরূপ আউটপুট দেখতে পাবেন:gcloud dataproc batches submit pyspark \ --project=$PROJECT_ID \ --region=$REGION \ --version=2.3 \ --properties="$METASTORE_PROPERTIES" \ --deps-bucket=gs://$DEPS_BUCKET \ test.py+-----------+----------------+-----------+ | namespace| tableName|isTemporary| +-----------+----------------+-----------+ |public_data| nyc_taxicab| false| |public_data|nyc_taxicab_2021| false| +-----------+----------------+-----------+
৪. স্ট্রাকচার্ড আইসবার্গ ডেটা কোয়েরি করুন
একবার সংযুক্ত হলে, আপনি ডেটাসেটগুলিতে সম্পূর্ণ SQL অ্যাক্সেস পাবেন। আমরা আইসবার্গ টেবিল হিসাবে মডেল করা NYC ট্যাক্সি ডেটাসেটটি কোয়েরি করব।
স্ট্যান্ডার্ড অ্যাগ্রিগেশন কোয়েরি চালান
query.py নামে একটি ফাইল তৈরি করুন:
cat <<EOF > query.py
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
query = """
SELECT
passenger_count,
COUNT(1) AS num_trips,
ROUND(AVG(total_amount), 2) AS avg_fare,
ROUND(AVG(trip_distance), 2) AS avg_distance
FROM public_data.nyc_taxicab
WHERE data_file_year = 2021 AND passenger_count > 0
GROUP BY passenger_count
ORDER BY num_trips DESC
"""
spark.sql(query).show()
EOF
এবং সার্ভারলেস ফর অ্যাপাচি স্পার্ক ব্যবহার করে এটি জমা দিন:
gcloud dataproc batches submit pyspark \
--project=$PROJECT_ID \
--region=$REGION \
--version=2.3 \
--properties="$METASTORE_PROPERTIES" \
--deps-bucket=gs://$DEPS_BUCKET \
query.py
আপনার কনসোলে এর অনুরূপ আউটপুট দেখতে পাবেন:
+---------------+---------+--------+------------+ |passenger_count|num_trips|avg_fare|avg_distance| +---------------+---------+--------+------------+ | 1| 21508009| 18.82| 3.03| | 2| 4424746| 20.22| 3.40| | 3| 1164846| 19.84| 3.27| | 5| 718282| 18.88| 3.07| | 4| 466485| 20.61| 3.44| | 6| 452467| 18.97| 3.11| | 7| 78| 65.24| 3.71| | 8| 49| 57.39| 5.88| | 9| 35| 73.26| 6.20| | 96| 1| 17.00| 2.00| | 112| 1| 15.00| 2.00| +---------------+---------+--------+------------+
এখানে অ্যাপাচি আইসবার্গ কেন ব্যবহার করা হয়েছে?
- পার্টিশন প্রুনিং : কোয়েরিটি
data_file_year = 2021উপর ভিত্তি করে ফিল্টার করে। আইসবার্গ ইঞ্জিনকে অন্যান্য বছরের ডেটা স্ক্যান করা সম্পূর্ণরূপে এড়িয়ে যাওয়ার সুযোগ দেয়। - ইঞ্জিনের ক্ষিপ্রতা : আপনি ডেটা কপি না করেই এটি Spark, Trino, বা BigQuery-তে চালাতে পারেন!
৫. অ্যাপাচি আইসবার্গে সময় ভ্রমণ
আইসবার্গের সবচেয়ে শক্তিশালী বৈশিষ্ট্যগুলোর মধ্যে একটি হলো টাইম ট্র্যাভেল । এর মাধ্যমে আপনি অতীতের কোনো সংস্করণ বা স্ন্যাপশটে থাকা ডেটা অনুসন্ধান করতে পারেন।
টেবিলের ইতিহাস দেখুন
history.py নামে একটি ফাইল তৈরি করুন:
cat <<EOF > history.py
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
spark.sql("SELECT * FROM public_data.nyc_taxicab.history").show()
EOF
এবং এটি জমা দিন:
gcloud dataproc batches submit pyspark \
--project=$PROJECT_ID \
--region=$REGION \
--version=2.3 \
--properties="$METASTORE_PROPERTIES" \
--deps-bucket=gs://$DEPS_BUCKET \
history.py
আপনার কনসোলে নিম্নলিখিতের অনুরূপ আউটপুট দেখতে পাবেন:
+--------------------+-------------------+-------------------+-------------------+ | made_current_at| snapshot_id| parent_id|is_current_ancestor| +--------------------+-------------------+-------------------+-------------------+ |2026-01-07 21:32:...|6333415779680505547| NULL| true| |2026-01-07 21:34:...|1840345522877675925|6333415779680505547| true| |2026-01-07 21:36:...|7203554539964460256|1840345522877675925| true| |2026-01-07 21:38:...|4573466015237516024|7203554539964460256| true| |2026-01-07 21:40:...|3353190952148867790|4573466015237516024| true| |2026-01-07 21:42:...|1335547378580631681|3353190952148867790| true| |2026-01-07 21:44:...|8203141258229894239|1335547378580631681| true| |2026-01-07 21:46:...|1597048231706307813|8203141258229894239| true| |2026-01-07 21:48:...|6247811509231462655|1597048231706307813| true| |2026-01-07 21:50:...|2527184310045633322|6247811509231462655| true| |2026-01-07 21:52:...|2512764101237223642|2527184310045633322| true| |2026-01-07 21:52:...|7045957533358062548|2512764101237223642| true| |2026-01-07 21:53:...| 531753237516076726|7045957533358062548| true| |2026-01-07 21:53:...|4184653573199718274| 531753237516076726| true| |2026-01-07 21:54:...|5125223829492177301|4184653573199718274| true| |2026-01-07 21:54:...|6844673237417600305|5125223829492177301| true| |2026-01-07 21:54:...|6634828203344518093|6844673237417600305| true| |2026-01-07 21:55:...|7637728273407236194|6634828203344518093| true| |2026-01-07 21:55:...|3424071684958740192|7637728273407236194| true| |2026-01-07 21:55:...|1743746294196424254|3424071684958740192| true| +--------------------+-------------------+-------------------+-------------------+
আপনি বিভিন্ন স্ন্যাপশট আইডি এবং সেগুলি কখন কমিট করা হয়েছিল, তা নির্দেশকারী সারিগুলি দেখতে পাবেন।
বর্তমান এবং অতীতের সারির সংখ্যা তুলনা করুন
timetravel.py নামে একটি ফাইল তৈরি করুন:
cat <<EOF > timetravel.py
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
query = """
SELECT 'Current State' AS version, COUNT(*) AS count FROM public_data.nyc_taxicab
UNION ALL
SELECT 'Past State' AS version, COUNT(*) AS count FROM public_data.nyc_taxicab VERSION AS OF 4573466015237516024
"""
spark.sql(query).show()
EOF
এবং এটি জমা দিন:
gcloud dataproc batches submit pyspark \
--project=$PROJECT_ID \
--region=$REGION \
--version=2.3 \
--properties="$METASTORE_PROPERTIES" \
--deps-bucket=gs://$DEPS_BUCKET \
timetravel.py
আপনার কনসোলে নিম্নলিখিতের অনুরূপ আউটপুট দেখতে পাবেন:
+-------------+----------+ | version| count| +-------------+----------+ |Current State|1293069366| | Past State| 72878594| +-------------+----------+
এর মাধ্যমে আপনি সময়ের সাথে সাথে ডেটার পরিবর্তন নিরীক্ষা করতে পারবেন।
৬. BigQuery ML ব্যবহার করে কাঠামোগত এআই
এখন যেহেতু আপনি আইসবার্গ ডেটা অন্বেষণ করেছেন, চলুন BigQuery-এর AI সক্ষমতা ব্যবহার করি! যেহেতু পাবলিক আইসবার্গ ক্যাটালগটি রিড-অনলি, আমরা পাবলিক টেবিলগুলো থেকে ডেটা পড়ে আমাদের ওয়ার্কস্পেসে একটি মডেলকে প্রশিক্ষণ দিতে BigQuery ব্যবহার করতে পারি।
একটি স্থানীয় ডেটাসেট তৈরি করুন
প্রথমে, bq CLI ব্যবহার করে আপনার প্রোজেক্টে AI মডেলটি সংরক্ষণের জন্য একটি ডেটাসেট তৈরি করুন:
bq mk --location=$REGION --project_id=$PROJECT_ID iceberg_ai
একটি রৈখিক রিগ্রেশন মডেল প্রশিক্ষণ দিন
এখন আপনি পাবলিক BigLake Iceberg টেবিলটি ব্যবহার করে একটি লিনিয়ার রিগ্রেশন মডেলকে প্রশিক্ষণ দেবেন।
একটি কোয়েরি ফাইল তৈরি করুন এবং bq query ব্যবহার করে মডেলটিকে প্রশিক্ষণ দিন:
cat <<'EOF' > train_model.sql
CREATE OR REPLACE MODEL `iceberg_ai.predict_fare`
OPTIONS(model_type='LINEAR_REG', input_label_cols=['fare_amount']) AS
SELECT fare_amount, passenger_count, CAST(trip_distance AS FLOAT64) AS trip_distance
FROM `bigquery-public-data`.`biglake-public-nyc-taxi-iceberg`.public_data.nyc_taxicab
WHERE fare_amount > 0 AND trip_distance > 0 AND RAND() < 0.01; -- Using 1% of data to downsample
EOF
bq query --location=$REGION --use_legacy_sql=false < train_model.sql
মডেল ব্যবহার করে ভবিষ্যদ্বাণী করুন
মডেলটি প্রশিক্ষিত হয়ে গেলে, আপনি ML.PREDICT ব্যবহার করে নতুন ট্রিপগুলোর ভাড়ার পরিমাণ অনুমান করতে পারবেন।
একটি কোয়েরি ফাইল তৈরি করুন এবং bq query ব্যবহার করে প্রেডিকশন চালান:
cat <<'EOF' > predict_fare.sql
SELECT
predicted_fare_amount, passenger_count, trip_distance
FROM
ML.PREDICT(MODEL `iceberg_ai.predict_fare`,
(
SELECT 2 AS passenger_count, 5.0 AS trip_distance
)
);
EOF
bq query --location=$REGION --use_legacy_sql=false < predict_fare.sql
আপনি নিম্নলিখিতের অনুরূপ আউটপুট দেখতে পাবেন:
+-----------------------+-----------------+---------------+ | predicted_fare_amount | passenger_count | trip_distance | +-----------------------+-----------------+---------------+ | 14.12252095150709 | 2 | 5.0 | +-----------------------+-----------------+---------------+
৭. বিগলেকের সাথে কাঠামোবিহীন এআই
ডেটা মানে শুধু সারি এবং কলাম নয়। ইউনিফাইড ডেটা লেকহাউসগুলো অসংগঠিত ডেটাও (যেমন ছবি, পিডিএফ) পরিচালনা করে। চলুন, অসংগঠিত ডেটা কোয়েরি করার জন্য অবজেক্ট টেবিল এবং অবজেক্ট রেফারেন্স ব্যবহার করি।
অবজেক্ট টেবিল হলো BigQuery-এর একটি রিড-অনলি এক্সটার্নাল টেবিল, যা একটি ক্লাউড স্টোরেজ পাথে থাকা অবজেক্টগুলোর তালিকা করে। প্রতিটি সারি একটি ফাইলকে প্রতিনিধিত্ব করে, যেখানে uri , size মতো মেটাডেটার জন্য কলাম এবং ObjectRef ধারণকারী একটি বিশেষ ref কলাম থাকে।
অবজেক্ট রেফারেন্স ( ObjectRef ) একটি ফাইলের প্রকৃত ডেটাকে নির্দেশ করে। আধুনিক BigQuery ML ফাংশনগুলো (যেমন AI.GENERATE বা AI.AGG ) বাইটগুলোকে কোনো স্ট্যান্ডার্ড টেবিলে লোড না করেই বিশ্লেষণের জন্য ফাইলের বিষয়বস্তু (ছবি, অডিও বা টেক্সট) পড়তে ObjectRef ব্যবহার করে।
অসংগঠিত এআই-এর জন্য একটি ডেটাসেট তৈরি করুন
প্রথমে, bq CLI ব্যবহার করে US মাল্টি-রিজিয়নে অবজেক্ট টেবিলগুলো সংরক্ষণের জন্য আপনার প্রোজেক্টে একটি দ্বিতীয় ডেটাসেট তৈরি করুন:
bq mk --location=US --project_id=$PROJECT_ID iceberg_object_ai
একটি বাহ্যিক সংযোগ তৈরি করুন
BigQuery থেকে ক্লাউড স্টোরেজে সংরক্ষিত ডেটা (অবজেক্ট টেবিল এবং অসংগঠিত ডেটা উভয়ই) কোয়েরি করতে হলে, আপনাকে একটি এক্সটার্নাল কানেকশন তৈরি করতে হবে।
ক্লাউড রিসোর্স সংযোগ তৈরি করতে ক্লাউড শেলে নিম্নলিখিতটি চালান:
bq mk --connection --project_id=$PROJECT_ID --location=US --connection_type=CLOUD_RESOURCE my-conn
আপনার সংযোগের জন্য তৈরি করা পরিষেবা অ্যাকাউন্ট আইডিটি খুঁজুন:
CONNECTION_SA=$(bq show --format=json --project_id=$PROJECT_ID --connection $PROJECT_ID.us.my-conn | jq -r '.serviceAccountId // .cloudResource.serviceAccountId')
সার্ভিস অ্যাকাউন্টটিকে Vertex AI User এবং Storage Object Viewer রোলগুলো প্রদান করুন, যাতে এটি Gemini মডেল কল করতে এবং GCS ডেটা পড়তে পারে:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$CONNECTION_SA" \
--role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$CONNECTION_SA" \
--role="roles/storage.objectViewer"
একটি অবজেক্ট টেবিল তৈরি করুন
আমরা পূর্ববর্তী বিভাগে তৈরি করা my-conn এক্সটার্নাল কানেকশনটি ব্যবহার করে আনস্ট্রাকচার্ড ডেটা অ্যাক্সেস করব। একটি কোয়েরি ফাইল তৈরি করুন এবং bq query ব্যবহার করে অবজেক্ট টেবিলটি তৈরি করুন:
cat <<'EOF' > create_object_table.sql
CREATE EXTERNAL TABLE `iceberg_object_ai.sample_images`
WITH CONNECTION `us.my-conn`
OPTIONS (
object_metadata = 'SIMPLE',
uris = ['gs://cloud-samples-data/vision/landmark/*']
);
EOF
bq query --use_legacy_sql=false < create_object_table.sql
অবজেক্ট ডেটার উপর জেমিনি ব্যবহার করুন
এখন ছবিগুলো ডাউনলোড না করেই মূল্যায়ন করতে জেমিনি ব্যবহার করে একটি কোয়েরি চালান!
bq query ব্যবহার করে স্ট্যান্ডার্ড SQL-এর মাধ্যমে ছবিগুলো অনুসন্ধান করুন:
cat <<EOF > query_images.sql
SELECT
uri,
image_analysis.description
FROM (
SELECT
uri,
AI.GENERATE(
(
'Identify what is happening in the image.',
ref
),
connection_id => 'us.my-conn',
endpoint => 'gemini-2.5-flash-lite',
output_schema => 'event STRING, severity STRING, description STRING'
) AS image_analysis
FROM
iceberg_object_ai.sample_images
);
EOF
bq query --use_legacy_sql=false < query_images.sql
নমুনা আউটপুট:
+----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| uri | description |
+----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| gs://cloud-samples-data/vision/landmark/eiffel_tower.jpg | The Eiffel Tower stands tall against a cloudy sky, overlooking the Seine River in Paris. Boats are docked along the riverbank, and trees line the opposite shore, with bridges and buildings visible in the distance. |
| gs://cloud-samples-data/vision/landmark/pofa.jpg | A wide shot shows the Palace of Fine Arts, a monumental structure in San Francisco, California. The building features a large rotunda with a dome, surrounded by colonnades. In front of the rotunda is a lagoon. Several people are walking around the grounds. The sky is blue with a few scattered clouds. |
| gs://cloud-samples-data/vision/landmark/st_basils.jpeg | A monument stands in front of Saint Basil's Cathedral in Moscow under a bright blue sky with scattered white clouds. The cathedral features distinctive onion domes in various colors and patterns, including red, blue and white stripes, green and beige stripes, and red and blue diamonds. A large green tree partially obscures the left side of the cathedral. People are visible in the foreground near the base of the monument and the cathedral entrance. |
+----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
সরাসরি অবজেক্টরেফ অন্বেষণ: সেন্টিমেন্ট বিশ্লেষণ
যদিও অবজেক্ট টেবিল স্বয়ংক্রিয়ভাবে ফাইল রেফারেন্স পরিচালনা করে, আপনি বিগকোয়েরি অবজেক্ট রেফারেন্স ব্যবহার করে সরাসরি এই অবজেক্টগুলোর সাথে ইন্টারঅ্যাক্ট করতে পারেন এবং একক ফাইলের উপর তাৎক্ষণিক বিশ্লেষণ চালাতে পারেন।
উদাহরণস্বরূপ, আপনি পূর্বে তৈরি করা $DEPS_BUCKET ভেরিয়েবলটি ব্যবহার করে আপনার নিজের GCS বাকেটে সংরক্ষিত একটি ছোট টেক্সট ফাইল ব্যবহার করতে পারেন এবং bq query সাহায্যে OBJ.MAKE_REF ব্যবহার করে এটি বিশ্লেষণ করতে পারেন।
প্রথমে, একটি ছোট টেক্সট ফাইল তৈরি করে আপনার বাকেটে আপলোড করুন:
cat <<'EOF' > review.txt
This product is fantastic! It exceeded my expectations. The quality is top-notch. I highly recommend it to everyone!
EOF
gcloud storage cp review.txt gs://${DEPS_BUCKET}/review.txt
এখন স্ট্যান্ডার্ড SQL-এর মধ্যে OBJ.MAKE_REF ব্যবহার করে ফাইলটি কোয়েরি করুন:
cat <<EOF > sentiment_analysis.sql
SELECT
AI.GENERATE(
(
'Analyze the sentiment of this text file. Is it positive, negative, or neutral? Explain why.',
OBJ.MAKE_REF('gs://${DEPS_BUCKET}/review.txt', 'us.my-conn')
),
connection_id => 'us.my-conn',
endpoint => 'gemini-2.5-flash-lite'
).result AS ml_generate_text_result;
EOF
bq query --use_legacy_sql=false < sentiment_analysis.sql
নমুনা আউটপুট:
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ml_generate_text_result |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| This text file has a **strongly positive** sentiment. |
| |
| Here's why: |
| |
| * **Positive Keywords:** The text is filled with unequivocally positive words and phrases: |
| * "fantastic" |
| * "exceeded my expectations" |
| * "top-notch" |
| * "highly recommend" |
| |
| * **Enthusiastic Language:** The use of exclamation marks ("!") further amplifies the positive tone, indicating excitement and strong approval. |
| |
| * **Lack of Negative or Neutral Elements:** There are no words, phrases, or implications that suggest any dissatisfaction, criticism, or even indifference. |
| |
| In summary, the author's language is enthusiastic and uses multiple strong positive descriptors, leaving no room for doubt that their opinion of the product is overwhelmingly positive. |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
৮. পরিষ্কার করুন
আপনার গুগল ক্লাউড অ্যাকাউন্টে চলমান চার্জ এড়াতে, এই কোডল্যাব চলাকালীন তৈরি করা রিসোর্সগুলো মুছে ফেলুন।
ডেটা সেট এবং সংযোগ মুছুন
আপনার ডেটাসেট এবং সংযোগ মুছে ফেলার জন্য ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
bq rm -r -f --location=$REGION iceberg_ai
bq rm -r -f --location=US iceberg_object_ai
bq rm --connection $PROJECT_ID.US.my-conn
GCS বাকেট এবং স্থানীয় ফাইলগুলি মুছে ফেলুন
GCS বাকেট এবং স্থানীয় ফাইলগুলি পরিষ্কার করুন:
# Delete GCS buckets
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
gcloud storage rm -r gs://dataproc-temp-${REGION}-${PROJECT_NUMBER}-*
gcloud storage rm -r gs://dataproc-staging-${REGION}-${PROJECT_NUMBER}-*
gcloud storage rm -r gs://${DEPS_BUCKET}
# Delete local files
rm -f train_model.sql predict_fare.sql create_object_table.sql query_images.sql sentiment_analysis.sql test.py query.py history.py timetravel.py review.txt
আপনি চাইলে পুরো প্রজেক্টটি মুছেও ফেলতে পারেন, যদি এটি শুধু এই ল্যাবের জন্য তৈরি করে থাকেন।
৯. অভিনন্দন
অভিনন্দন! আপনি Apache Iceberg, BigLake, এবং BigQuery AI ব্যবহার করে সফলভাবে একটি ইউনিফাইড ডেটা লেকহাউস তৈরি করেছেন!
আপনি যা শিখেছেন
- পাবলিক অ্যাপাচি আইসবার্গ REST ক্যাটালগগুলিতে কীভাবে সংযোগ স্থাপন এবং কোয়েরি করতে হয়।
- আইসবার্গে টাইম ট্র্যাভেল ব্যবহার করে ডেটাসেট সংস্করণ নিরীক্ষা করা।
- স্ট্রাকচার্ড ডেটার উপর BigQuery ML মডেলের প্রশিক্ষণ।
- অবজেক্ট টেবিল ও অবজেক্টরেফ ব্যবহার করে অসংগঠিত ডেটা (ছবি) সংযুক্ত করা।
- BigQuery SQL-এ সরাসরি Gemini ব্যবহার করে ছবি বিশ্লেষণ করা।