স্থানের অন্তর্দৃষ্টি ব্যবহার করে কাস্টম অবস্থান স্কোর তৈরি করুন

সংক্ষিপ্ত বিবরণ

কাছাকাছি পার্ক এবং কুকুর-বান্ধব স্থানের উপর ভিত্তি করে একটি রিয়েল এস্টেট তালিকা যেখানে কাস্টম পোষা প্রাণীর মালিকের প্যারাডাইস স্কোর ৯.১ দেখানো হয়েছে।

স্ট্যান্ডার্ড লোকেশন ডেটা আপনাকে বলতে পারে কাছাকাছি কী আছে , কিন্তু এটি প্রায়শই আরও গুরুত্বপূর্ণ প্রশ্নের উত্তর দিতে ব্যর্থ হয়: "এই এলাকাটি আমার জন্য কতটা ভালো?" আপনার ব্যবহারকারীদের চাহিদা সূক্ষ্ম। ছোট বাচ্চাদের পরিবারের অগ্রাধিকার কুকুর সহ একজন তরুণ পেশাদারের তুলনায় ভিন্ন। তাদের আত্মবিশ্বাসী সিদ্ধান্ত নিতে সাহায্য করার জন্য, আপনাকে এই নির্দিষ্ট চাহিদাগুলি প্রতিফলিত করে এমন অন্তর্দৃষ্টি প্রদান করতে হবে। একটি কাস্টম লোকেশন স্কোর এই মান প্রদান এবং একটি উল্লেখযোগ্যভাবে পৃথক ব্যবহারকারীর অভিজ্ঞতা তৈরি করার জন্য একটি শক্তিশালী হাতিয়ার।

এই ডকুমেন্টে BigQuery-তে Places Insights ডেটাসেট ব্যবহার করে কাস্টম, বহুমুখী অবস্থান স্কোর কীভাবে তৈরি করা যায় তা বর্ণনা করা হয়েছে। POI ডেটাকে অর্থপূর্ণ মেট্রিক্সে রূপান্তরিত করে আপনি আপনার রিয়েল এস্টেট, খুচরা, বা ভ্রমণ অ্যাপ্লিকেশনগুলিকে সমৃদ্ধ করতে পারেন এবং আপনার ব্যবহারকারীদের তাদের প্রয়োজনীয় প্রাসঙ্গিক তথ্য সরবরাহ করতে পারেন। আপনার অবস্থান স্কোর গণনা করার জন্য আমরা BigQuery-তে জেনারেটিভ AI ব্যবহার করার একটি বিকল্পও প্রদান করি।

উপযুক্ত স্কোরের মাধ্যমে ব্যবসায়িক মূল্য বৃদ্ধি করুন

নিম্নলিখিত উদাহরণগুলি ব্যাখ্যা করে যে কীভাবে আপনি আপনার অ্যাপ্লিকেশন উন্নত করার জন্য কাঁচা অবস্থানের ডেটাকে শক্তিশালী, ব্যবহারকারী-কেন্দ্রিক মেট্রিক্সে অনুবাদ করতে পারেন।

  • রিয়েল এস্টেট ডেভেলপাররা "পরিবার-বান্ধব স্কোর" অথবা "যাত্রীদের স্বপ্নের স্কোর" তৈরি করতে পারেন যাতে ক্রেতা এবং ভাড়াটেরা তাদের জীবনযাত্রার সাথে মেলে এমন নিখুঁত এলাকা বেছে নিতে পারেন, যার ফলে ব্যবহারকারীর ব্যস্ততা বৃদ্ধি পায়, উচ্চমানের লিড এবং দ্রুত রূপান্তর ঘটে।
  • ভ্রমণ ও আতিথেয়তা প্রকৌশলীরা "নাইটলাইফ স্কোর" অথবা "সাইটসিয়ার্স প্যারাডাইস স্কোর" তৈরি করতে পারেন যাতে ভ্রমণকারীদের তাদের ছুটির স্টাইলের সাথে মেলে এমন একটি হোটেল বেছে নিতে সাহায্য করা যায়, যা বুকিং হার এবং গ্রাহক সন্তুষ্টি বৃদ্ধি করে।
  • খুচরা বিশ্লেষকরা কাছাকাছি পরিপূরক ব্যবসার উপর ভিত্তি করে একটি নতুন জিম বা স্বাস্থ্য খাদ্য দোকানের জন্য সর্বোত্তম অবস্থান সনাক্ত করার জন্য একটি "ফিটনেস এবং সুস্থতা স্কোর" তৈরি করতে পারেন, যা সঠিক ব্যবহারকারী জনসংখ্যাকে লক্ষ্য করার সম্ভাবনা সর্বাধিক করে তোলে।

এই নির্দেশিকায়, আপনি BigQuery-তে সরাসরি Places ডেটা ব্যবহার করে যেকোনো ধরণের কাস্টম লোকেশন স্কোর তৈরির জন্য একটি নমনীয়, তিন-অংশের পদ্ধতি শিখবেন। আমরা দুটি স্বতন্ত্র উদাহরণ স্কোর তৈরি করে এই প্যাটার্নটি ব্যাখ্যা করব: একটি Family-Friendliness Score এবং একটি Pet-Owner Paradise Score । এই পদ্ধতি আপনাকে স্থান গণনার বাইরে যেতে এবং Places Insights ডেটাসেটের মধ্যে সমৃদ্ধ, বিস্তারিত বৈশিষ্ট্যগুলির সুবিধা নিতে দেয়। আপনি আপনার ব্যবহারকারীদের জন্য পরিশীলিত এবং অর্থপূর্ণ মেট্রিক্স তৈরি করতে ব্যবসায়িক সময়, কোনও স্থান শিশুদের জন্য ভাল কিনা, অথবা এটি কুকুরদের অনুমতি দেয় কিনা, এর মতো তথ্য ব্যবহার করতে পারেন।

সমাধান কর্মপ্রবাহ

তিন-পদক্ষেপের কর্মপ্রবাহ চিত্র: অবস্থান নির্ধারণ করুন, কাছাকাছি স্থানগুলির জন্য অনুসন্ধান করুন, এবং চূড়ান্ত স্কোর তৈরি করতে ফলাফলগুলিকে স্বাভাবিক করুন।

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

পূর্বশর্ত

শুরু করার আগে, স্থান অন্তর্দৃষ্টি সেট আপ করতে এই নির্দেশাবলী অনুসরণ করুন।

১. একটি ফাউন্ডেশন প্রতিষ্ঠা করুন: আপনার আগ্রহের স্থান

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

আপনি এই ধরণের কোয়েরি দিয়ে স্কোর করার জন্য অবস্থানের একটি সারণী তৈরি এবং পূরণ করতে পারেন:

CREATE OR REPLACE TABLE `your_project.your_dataset.apartment_listings`
(
  id INT64,
  name STRING,
  location GEOGRAPHY
);

INSERT INTO `your_project.your_dataset.apartment_listings` VALUES
  (1, 'The Downtowner', ST_GEOGPOINT(-74.0077, 40.7093)),
  (2, 'Suburban Oasis', ST_GEOGPOINT(-73.9825, 40.7507)),
  (3, 'Riverside Lofts', ST_GEOGPOINT(-73.9470, 40.8079))
  -- More rows can be added here
  . . . ;

আপনার অবস্থানের ডেটাতে একটি SELECT * সম্পাদন করলে এটির মতো দেখাবে।

BigQuery কোয়েরির ফলাফলে আইডি, নাম এবং অবস্থান স্থানাঙ্ক সহ অ্যাপার্টমেন্ট তালিকার একটি সারণী দেখানো হয়েছে।

2. মূল যুক্তি বিকাশ করুন: স্কোরিং কোয়েরি

আপনার অবস্থানগুলি প্রতিষ্ঠিত হওয়ার সাথে সাথে, পরবর্তী পদক্ষেপ হল আপনার কাস্টম স্কোরের সাথে প্রাসঙ্গিক কাছাকাছি স্থানগুলি খুঁজে বের করা, ফিল্টার করা এবং গণনা করা। এটি সবই একটি একক SELECT স্টেটমেন্টের মধ্যে করা হয়।

ভূ-স্থানিক অনুসন্ধানের মাধ্যমে কাছাকাছি কী আছে তা খুঁজুন

প্রথমে, আপনাকে Places Insights ডেটাসেট থেকে আপনার প্রতিটি অবস্থানের একটি নির্দিষ্ট দূরত্বের মধ্যে থাকা সমস্ত স্থান খুঁজে বের করতে হবে। BigQuery ফাংশন ST_DWITHIN এর জন্য উপযুক্ত। আমরা আমাদের apartment_listings টেবিল এবং places_insights টেবিলের মধ্যে একটি JOIN সঞ্চালন করব যাতে 800-মিটার ব্যাসার্ধের মধ্যে সমস্ত স্থান খুঁজে পাওয়া যায়। একটি LEFT JOIN নিশ্চিত করে যে আপনার সমস্ত মূল অবস্থান ফলাফলে অন্তর্ভুক্ত করা হয়েছে, এমনকি যদি কাছাকাছি কোনও মিলিত স্থান না পাওয়া যায়।

উন্নত বৈশিষ্ট্য সহ প্রাসঙ্গিকতার জন্য ফিল্টার করুন

এখানেই আপনি একটি স্কোরের বিমূর্ত ধারণাকে কংক্রিট ডেটা ফিল্টারে অনুবাদ করতে পারবেন। আমাদের দুটি উদাহরণ স্কোরের জন্য, মানদণ্ড ভিন্ন:

  • "পরিবার-বান্ধব স্কোর" এর জন্য , আমরা এমন পার্ক, জাদুঘর এবং রেস্তোরাঁগুলির প্রতি যত্নশীল যেগুলি স্পষ্টতই শিশুদের জন্য ভালো।
  • "পোষা প্রাণীর মালিকের স্বর্গ স্কোর" এর জন্য , আমরা পার্ক, পশুচিকিৎসা ক্লিনিক, পোষা প্রাণীর দোকান এবং কুকুর রাখার অনুমতি দেয় এমন যেকোনো রেস্তোরাঁ বা ক্যাফে সম্পর্কে চিন্তা করি।

আপনি আপনার কোয়েরির WHERE ক্লজে সরাসরি এই নির্দিষ্ট বৈশিষ্ট্যগুলির জন্য ফিল্টার করতে পারেন।

প্রতিটি অবস্থানের জন্য অন্তর্দৃষ্টি একত্রিত করুন

অবশেষে, আপনাকে প্রতিটি অ্যাপার্টমেন্টের জন্য কতগুলি প্রাসঙ্গিক স্থান খুঁজে পেয়েছেন তা গণনা করতে হবে। GROUP BY ধারাটি ফলাফলগুলিকে একত্রিত করে এবং COUNTIF ফাংশনটি এমন স্থান গণনা করে যা আমাদের প্রতিটি স্কোরের জন্য নির্দিষ্ট মানদণ্ডের সাথে মেলে।

নিচের কোয়েরিটি এই তিনটি ধাপকে একত্রিত করে, একটি একক পাসে উভয় স্কোরের জন্য কাঁচা গণনা গণনা করে:

-- This Common Table Expression (CTE) will hold the raw counts for each score component.
WITH insight_counts AS (
  SELECT WITH AGGREGATION_THRESHOLD -- Correctly includes the mandatory aggregation threshold
    apartments.id,
    apartments.name,
    COUNTIF(places.primary_type = 'park') AS park_count,
    COUNTIF(places.primary_type = 'museum') AS museum_count,
    COUNTIF(places.primary_type = 'restaurant' AND places.good_for_children = TRUE) AS family_restaurant_count,
    COUNTIF(places.primary_type IN ('veterinary_care', 'pet_store')) AS pet_service_count,
    COUNTIF(places.allows_dogs = TRUE) AS dog_friendly_place_count
  FROM
    `your_project.your_dataset.apartment_listings` AS apartments
  LEFT JOIN
    `your-project.places_insights___us.places` AS places -- Corrected table name for the US dataset
    ON ST_DWITHIN(apartments.location, places.point, 800) -- Find places within 800 meters
  GROUP BY
    apartments.id, apartments.name
)
SELECT * FROM insight_counts;

এই প্রশ্নের ফলাফল এইরকমই হবে।

BigQuery এর ফলাফলে প্রতিটি অ্যাপার্টমেন্ট তালিকার জন্য পার্ক, রেস্তোরাঁ এবং পোষা প্রাণীর পরিষেবার মতো সুযোগ-সুবিধার সংখ্যা দেখানো হয়েছে।

আমরা পরবর্তী বিভাগে এই ফলাফলগুলির উপর ভিত্তি করে কাজ করব।

৩. স্কোর তৈরি করুন

এখন আপনার কাছে প্রতিটি স্থানের জন্য স্থানের গণনা এবং ওজনের তথ্য আছে, আপনি এখন কাস্টম অবস্থান স্কোর তৈরি করতে পারেন। আমরা এই বিভাগে দুটি বিকল্প নিয়ে আলোচনা করব: BigQuery-তে আপনার নিজস্ব কাস্টম গণনা ব্যবহার করে অথবা BigQuery-তে জেনারেটিভ আর্টিফিশিয়াল ইন্টেলিজেন্স (AI) ফাংশন ব্যবহার করে।

বিকল্প ১: BigQuery-তে আপনার নিজস্ব কাস্টম গণনা ব্যবহার করুন

পূর্ববর্তী ধাপের কাঁচা গণনাগুলি অন্তর্দৃষ্টিপূর্ণ, তবে একটি একক, ব্যবহারকারী-বান্ধব স্কোর লক্ষ্য। চূড়ান্ত ধাপ হল ওজন ব্যবহার করে এই গণনাগুলিকে একত্রিত করা এবং তারপর ফলাফলকে 0-10 স্কেলে স্বাভাবিক করা।

কাস্টম ওজন প্রয়োগ করা আপনার ওজন নির্বাচন করা একটি শিল্প এবং বিজ্ঞান উভয়ই। এগুলি আপনার ব্যবসায়িক অগ্রাধিকার বা আপনার ব্যবহারকারীদের কাছে সবচেয়ে গুরুত্বপূর্ণ বলে মনে হয় তা প্রতিফলিত করতে হবে। "পারিবারিক বন্ধুত্ব" স্কোরের জন্য আপনি সিদ্ধান্ত নিতে পারেন যে একটি পার্ক একটি জাদুঘরের দ্বিগুণ গুরুত্বপূর্ণ। আপনার সেরা অনুমান দিয়ে শুরু করুন এবং আমাদের ব্যবহারকারীর প্রতিক্রিয়ার উপর ভিত্তি করে পুনরাবৃত্তি করুন।

স্কোর স্বাভাবিকীকরণ নিচের কোয়েরিতে দুটি কমন টেবিল এক্সপ্রেশন (CTE) ব্যবহার করা হয়েছে: প্রথমটি আগের মতোই কাঁচা গণনা গণনা করে এবং দ্বিতীয়টি ওজনযুক্ত স্কোর গণনা করে। এরপর চূড়ান্ত SELECT স্টেটমেন্ট ওজনযুক্ত স্কোরের উপর একটি সর্বনিম্ন-সর্বোচ্চ স্বাভাবিকীকরণ সম্পাদন করে। apartment_listings উদাহরণ টেবিলের location কলামটি আউটপুট করা হয়, যাতে একটি মানচিত্রে ডেটা ভিজ্যুয়ালাইজেশন সক্ষম করা যায়।

WITH
  -- CTE 1: Count nearby amenities of interest for each apartment listing.
  insight_counts AS (
    SELECT WITH AGGREGATION_THRESHOLD
      apartments.id,
      apartments.name,
      COUNTIF(places.primary_type = 'park') AS park_count,
      COUNTIF(places.primary_type = 'museum') AS museum_count,
      COUNTIF(places.primary_type = 'restaurant' AND places.good_for_children = TRUE) AS family_restaurant_count,
      COUNTIF(places.primary_type IN ('veterinary_care', 'pet_store')) AS pet_service_count,
      COUNTIF(places.allows_dogs = TRUE) AS dog_friendly_place_count
    FROM
      `your_project.your_dataset.apartment_listings` AS apartments
    LEFT JOIN
      `your-project.places_insights___us.places` AS places
      ON ST_DWITHIN(apartments.location, places.point, 800)
    GROUP BY
      apartments.id,
      apartments.name
  ),
  -- CTE 2: Apply custom weighting to the amenity counts to generate raw scores.
  raw_scores AS (
    SELECT
      id,
      name,
      (park_count * 3.0) + (museum_count * 1.5) + (family_restaurant_count * 2.5) AS family_friendliness_score,
      (park_count * 2.0) + (pet_service_count * 3.5) + (dog_friendly_place_count * 2.5) AS pet_paradise_score
    FROM
      insight_counts
  )
-- Final Step: Normalize scores to a 0-10 scale and rejoin to retrieve the location geometry.
SELECT
  raw_scores.id,
  raw_scores.name,
  apartments.location,
  raw_scores.family_friendliness_score,
  raw_scores.pet_paradise_score,
  -- Normalize Family Score using a MIN/MAX window function.
  ROUND(
    COALESCE(
      SAFE_DIVIDE(
        (raw_scores.family_friendliness_score - MIN(raw_scores.family_friendliness_score) OVER ()),
        (MAX(raw_scores.family_friendliness_score) OVER () - MIN(raw_scores.family_friendliness_score) OVER ())
      ) * 10,
      0
    ),
    2
  ) AS normalized_family_score,
  -- Normalize Pet Score using a MIN/MAX window function.
  ROUND(
    COALESCE(
      SAFE_DIVIDE(
        (raw_scores.pet_paradise_score - MIN(raw_scores.pet_paradise_score) OVER ()),
        (MAX(raw_scores.pet_paradise_score) OVER () - MIN(raw_scores.pet_paradise_score) OVER ())
      ) * 10,
      0
    ),
    2
  ) AS normalized_pet_score
FROM
  raw_scores
JOIN
  `your_project.your_dataset.apartment_listings` AS apartments
  ON raw_scores.id = apartments.id;

কোয়েরির ফলাফল নীচের ফলাফলের মতোই হবে। শেষ দুটি কলাম হল স্বাভাবিক স্কোর।

প্রতিটি অ্যাপার্টমেন্ট তালিকার জন্য কাঁচা ওজনযুক্ত স্কোর এবং স্বাভাবিক 0-10 স্কোর উভয়ই দেখানো চূড়ান্ত প্রশ্নের ফলাফল।

স্বাভাবিক স্কোর বুঝুন

এই চূড়ান্ত স্বাভাবিকীকরণের ধাপটি কেন এত মূল্যবান তা বোঝা গুরুত্বপূর্ণ। আপনার অবস্থানের নগর ঘনত্বের উপর নির্ভর করে কাঁচা ওজনযুক্ত স্কোর 0 থেকে শুরু করে সম্ভাব্যভাবে খুব বড় সংখ্যা পর্যন্ত হতে পারে। প্রসঙ্গ ছাড়া ব্যবহারকারীর কাছে 500 স্কোর অর্থহীন।

নরমালাইজেশন এই বিমূর্ত সংখ্যাগুলিকে একটি আপেক্ষিক র‍্যাঙ্কিংয়ে রূপান্তরিত করে। ফলাফলগুলিকে 0 থেকে 10 পর্যন্ত স্কেল করে, স্কোরটি স্পষ্টভাবে জানায় যে আপনার নির্দিষ্ট ডেটাসেটে প্রতিটি অবস্থান অন্যদের সাথে কীভাবে তুলনা করে:

  • সর্বোচ্চ কাঁচা স্কোর সহ স্থানটিকে ১০ স্কোর বরাদ্দ করা হয়, যা বর্তমান সেটে এটিকে সেরা বিকল্প হিসাবে চিহ্নিত করে।
  • সর্বনিম্ন কাঁচা স্কোর সহ স্থানটিকে 0 স্কোর দেওয়া হয়, যা এটিকে তুলনার জন্য ভিত্তিরেখা করে তোলে। এর অর্থ এই নয় যে অবস্থানটিতে কোনও সুযোগ-সুবিধা নেই, বরং মূল্যায়ন করা অন্যান্য বিকল্পগুলির তুলনায় এটি সবচেয়ে কম উপযুক্ত।
  • অন্যান্য সমস্ত স্কোর আনুপাতিকভাবে মাঝখানে পড়ে, যা আপনার ব্যবহারকারীদের এক নজরে তাদের বিকল্পগুলির তুলনা করার একটি স্পষ্ট এবং স্বজ্ঞাত উপায় দেয়।

বিকল্প ২: AI.GENERATE ফাংশন (Gemini) ব্যবহার করুন

একটি নির্দিষ্ট গাণিতিক সূত্র ব্যবহারের বিকল্প হিসেবে, আপনি আপনার SQL ওয়ার্কফ্লোতে সরাসরি কাস্টম অবস্থানের স্কোর গণনা করতে BigQuery AI.GENERATE ফাংশন ব্যবহার করতে পারেন।

যদিও বিকল্প ১ সুবিধার উপর ভিত্তি করে সম্পূর্ণ পরিমাণগত স্কোরিংয়ের জন্য চমৎকার, এটি সহজেই গুণগত ডেটাতে ফ্যাক্টর করতে পারে না। AI.GENERATE ফাংশন আপনাকে আপনার Places Insights কোয়েরি থেকে সংখ্যাগুলিকে অসংগঠিত ডেটার সাথে একত্রিত করতে দেয়, যেমন অ্যাপার্টমেন্ট তালিকার টেক্সট বর্ণনা (যেমন, "এই অবস্থানটি পরিবারের জন্য উপযুক্ত এবং রাতে এলাকাটি শান্ত থাকে") অথবা নির্দিষ্ট ব্যবহারকারীর প্রোফাইল পছন্দ (যেমন, "এই ব্যবহারকারী একটি পরিবারের জন্য বুকিং করছেন এবং একটি কেন্দ্রীয় অবস্থানে একটি শান্ত এলাকা পছন্দ করেন")। এটি আপনাকে আরও সূক্ষ্ম স্কোর তৈরি করতে দেয় যা এমন সূক্ষ্মতা সনাক্ত করে যা একটি কঠোর গণনা মিস করতে পারে, যেমন একটি অবস্থান যেখানে উচ্চ সুযোগ-সুবিধার ঘনত্ব রয়েছে কিন্তু 'শিশুদের জন্য খুব কোলাহলপূর্ণ' হিসাবেও বর্ণনা করা হয়েছে।

প্রম্পট তৈরি করুন

এই ফাংশনটি ব্যবহার করার জন্য, সমষ্টির ফলাফল (ধাপ ২ থেকে) একটি প্রাকৃতিক ভাষা প্রম্পটে ফর্ম্যাট করা হয়। মডেলের নির্দেশাবলী সহ ডেটা কলামগুলিকে সংযুক্ত করে SQL-এ গতিশীলভাবে এটি করা যেতে পারে।

নিচের কোয়েরিতে, প্রতিটি সারির জন্য একটি প্রম্পট তৈরি করার জন্য insight_counts অ্যাপার্টমেন্টের টেক্সট বর্ণনার সাথে একত্রিত করা হয়েছে। স্কোরিং পরিচালনা করার জন্য একটি টার্গেট ব্যবহারকারী প্রোফাইলও সংজ্ঞায়িত করা হয়েছে।

SQL দিয়ে স্কোর তৈরি করুন

নিম্নলিখিত কোয়েরিটি BigQuery-তে সম্পূর্ণ অপারেশন সম্পাদন করে। এটি:

  1. স্থানের গণনা একত্রিত করে (ধাপ ২-এ বর্ণিত হিসাবে)।
  2. প্রতিটি অবস্থানের জন্য একটি প্রম্পট তৈরি করে
  3. জেমিনি মডেল ব্যবহার করে প্রম্পট বিশ্লেষণ করার জন্য AI.GENERATE ফাংশনকে কল করে
  4. আপনার অ্যাপ্লিকেশনে ব্যবহারের জন্য প্রস্তুত একটি কাঠামোগত বিন্যাসে ফলাফল পার্স করে
WITH
  -- CTE 1: Aggregate Place counts (Same as Step 2)
  insight_counts AS (
    SELECT WITH AGGREGATION_THRESHOLD
      apartments.id,
      apartments.name,
      apartments.description, -- Assuming your table has a description column
      COUNTIF(places.primary_type = 'park') AS park_count,
      COUNTIF(places.primary_type = 'museum') AS museum_count,
      COUNTIF(places.primary_type = 'restaurant' AND places.good_for_children = TRUE) AS family_restaurant_count
    FROM
      `your-project.your_dataset.apartment_listings` AS apartments
    LEFT JOIN
      `your-project.places_insights___us.places` AS places
      ON ST_DWITHIN(apartments.location, places.point, 800)
    GROUP BY
      apartments.id, apartments.name, apartments.description
  ),

  -- CTE 2: Construct the Prompt
  prepared_prompts AS (
    SELECT
      id,
      name,
      FORMAT("""
        You are an expert real estate analyst. Generate a 'Family-Friendliness Score' (0-10) for this location.

        Target User: Young family with a toddler, looking for a balance of activity and quiet.

        Location Data:
        - Name: %s
        - Description: %s
        - Parks nearby: %d
        - Museums nearby: %d
        - Family-friendly restaurants nearby: %d

        Scoring Rules:
        - High importance: Proximity to parks and high restaurant count.
        - Negative modifiers: Descriptions indicating excessive noise or nightlife focus.
        - Positive modifiers: Descriptions indicating quiet streets or backyards.
      """, name, description, park_count, museum_count, family_restaurant_count) AS prompt_text
    FROM insight_counts
    )

-- Final Step: Call AI.GENERATE
SELECT
  id,
  name,
  -- Access the structured fields returned by the model
  generated.family_friendliness_score,
  generated.reasoning
FROM
  prepared_prompts,
  AI.GENERATE(
    prompt_text,
    endpoint => 'gemini-flash-latest',
    output_schema => 'family_friendliness_score FLOAT64, reasoning STRING'
  ) AS generated;
কনফিগারেশনটি বুঝুন
  • খরচ সচেতনতা: এই ফাংশনটি আপনার ইনপুট একটি জেমিনি মডেলে প্রেরণ করে এবং প্রতিবার কল করার সময় Vertex AI-তে চার্জ বহন করে। যদি বিপুল সংখ্যক অবস্থান বিশ্লেষণ করা হয় (যেমন, হাজার হাজার অ্যাপার্টমেন্ট তালিকা), তাহলে প্রথমে সবচেয়ে প্রাসঙ্গিক প্রার্থীদের জন্য ডেটাসেট ফিল্টার করার পরামর্শ দেওয়া হয়। খরচ কমানোর বিষয়ে আরও বিস্তারিত জানার জন্য, সেরা অনুশীলন দেখুন।
  • এই উদাহরণে গতি এবং খরচ-দক্ষতাকে অগ্রাধিকার দেওয়ার জন্য endpoint : gemini-flash-latest নির্দিষ্ট করা হয়েছে। তবে, আপনি আপনার প্রয়োজন অনুসারে সবচেয়ে উপযুক্ত মডেলটি বেছে নিতে পারেন। বিভিন্ন সংস্করণ নিয়ে পরীক্ষা করার জন্য Gemini মডেলের ডকুমেন্টেশন দেখুন (যেমন, আরও জটিল যুক্তির কাজের জন্য Gemini Pro) এবং আপনার ব্যবহারের ক্ষেত্রে সবচেয়ে উপযুক্তটি খুঁজে বের করুন।
  • output_schema : কাঁচা লেখা বিশ্লেষণ করার পরিবর্তে, একটি স্কিমা প্রয়োগ করা হয় (স্কোরের জন্য FLOAT64 এবং যুক্তির জন্য STRING )। এটি নিশ্চিত করে যে আউটপুটটি পোস্ট-প্রসেসিং ছাড়াই আপনার অ্যাপ্লিকেশন বা ভিজ্যুয়ালাইজেশন টুলে তাৎক্ষণিকভাবে ব্যবহারযোগ্য।
উদাহরণ আউটপুট

কোয়েরিটি কাস্টম স্কোর এবং মডেলের যুক্তি সহ একটি স্ট্যান্ডার্ড BigQuery টেবিল প্রদান করে।

আইডি নাম পারিবারিক_বন্ধুত্বপূর্ণ_স্কোর যুক্তি
দ্য ডাউনটাউনার ৫.৫ চমৎকার সুযোগ-সুবিধার সংখ্যা (পার্ক, রেস্তোরাঁ), পরিমাণগত মেট্রিক্স পূরণ করে। তবে, গুণগত তথ্য অতিরিক্ত সপ্তাহান্তের শব্দ এবং একটি শক্তিশালী নাইটলাইফ ফোকাস নির্দেশ করে, যা লক্ষ্য ব্যবহারকারীর নীরবতার প্রয়োজনের সাথে সরাসরি সাংঘর্ষিক।
শহরতলির মরুদ্যান ৯.৮ অসাধারণ পরিমাণগত তথ্যের সাথে একটি বর্ণনা ("নীরব, বৃক্ষ-রেখাযুক্ত রাস্তা") একত্রিত করা হয়েছে যা লক্ষ্য পরিবারের প্রোফাইলের সাথে পুরোপুরি সামঞ্জস্যপূর্ণ। উচ্চ ধনাত্মক সংশোধকগুলির ফলে প্রায় নিখুঁত স্কোর পাওয়া যায়।

এই পদ্ধতিটি আপনাকে অত্যন্ত ব্যক্তিগতকৃত স্কোরিং প্রদান করতে দেয় যা বোধগম্য এবং প্রতিটি ব্যবহারকারীর জন্য উপযুক্ত, সবই একটি একক SQL কোয়েরির মধ্যে।

৪. একটি মানচিত্রে আপনার স্কোর কল্পনা করুন

BigQuery Studio-তে GEOGRAPHY কলাম থাকা যেকোনো কোয়েরির ফলাফলের জন্য একটি সমন্বিত মানচিত্র ভিজ্যুয়ালাইজেশন অন্তর্ভুক্ত থাকে। যেহেতু আমাদের কোয়েরি location কলামটি আউটপুট করে, তাই আপনি অবিলম্বে আপনার স্কোরগুলি কল্পনা করতে পারেন।

Visualization ট্যাবে ক্লিক করলে মানচিত্রটি আসবে এবং Data Column ড্রপ-ডাউন ভিজ্যুয়ালাইজ করার জন্য লোকেশন স্কোর নিয়ন্ত্রণ করবে। এই উদাহরণে, normalized_pet_score বিকল্প 1 উদাহরণ থেকে ভিজ্যুয়ালাইজ করা হয়েছে। মনে রাখবেন যে এই উদাহরণের জন্য apartment_listings টেবিলে আরও লোকেশন যোগ করা হয়েছে।

বিভিন্ন স্থানের জন্য স্বাভাবিক পোষা প্রাণীর স্কোর কল্পনা করার একটি মানচিত্র, যেখানে গাঢ় সবুজ বিন্দুগুলি উচ্চতর, আরও অনুকূল স্কোরকে প্রতিনিধিত্ব করে।

ডেটা ভিজ্যুয়ালাইজ করলে এক নজরে তৈরি স্কোরের জন্য সবচেয়ে উপযুক্ত অবস্থানগুলি দেখা যায়, এই ক্ষেত্রে গাঢ় সবুজ বৃত্তগুলি উচ্চতর normalized_pet_score সহ অবস্থানগুলিকে প্রতিনিধিত্ব করে। আরও Places Insights ডেটা ভিজ্যুয়ালাইজেশন বিকল্পগুলির জন্য, Visualize query results দেখুন।

উপসংহার

এখন আপনার কাছে সূক্ষ্ম অবস্থানের স্কোর তৈরির জন্য একটি শক্তিশালী এবং পুনরাবৃত্তিযোগ্য পদ্ধতি রয়েছে। আপনার অবস্থান থেকে শুরু করে, আপনি BigQuery-তে একটি একক SQL কোয়েরি তৈরি করেছেন যা ST_DWITHIN দিয়ে কাছাকাছি স্থানগুলি খুঁজে বের করে, good_for_children এবং allows_dogs এর মতো উন্নত বৈশিষ্ট্য দ্বারা সেগুলিকে ফিল্টার করে এবং COUNTIF দিয়ে ফলাফলগুলিকে একত্রিত করে। কাস্টম ওজন প্রয়োগ করে এবং ফলাফলকে স্বাভাবিক করে, আপনি একটি একক, ব্যবহারকারী-বান্ধব স্কোর তৈরি করেছেন যা গভীর, কার্যকর অন্তর্দৃষ্টি প্রদান করে। আপনি সরাসরি এই প্যাটার্নটি প্রয়োগ করে কাঁচা অবস্থানের ডেটাকে একটি উল্লেখযোগ্য প্রতিযোগিতামূলক সুবিধায় রূপান্তর করতে পারেন।

পরবর্তী পদক্ষেপ

এবার আপনার তৈরির পালা। এই টিউটোরিয়ালে একটি টেমপ্লেট দেওয়া হয়েছে। আপনার ব্যবহারের জন্য প্রয়োজনীয় স্কোর তৈরি করতে আপনি প্লেসেস ইনসাইটস স্কিমায় উপলব্ধ সমৃদ্ধ ডেটা ব্যবহার করতে পারেন। আপনি যে অন্যান্য স্কোর তৈরি করতে পারেন তা বিবেচনা করুন:

  • "নাইটলাইফ স্কোর": অন্ধকারের পরে সবচেয়ে প্রাণবন্ত এলাকা খুঁজে পেতে primary_type ( bar , night_club ), price_level এবং দেরী-রাত খোলা থাকার সময়ের জন্য ফিল্টার একত্রিত করুন।
  • "ফিটনেস এবং সুস্থতার স্কোর": স্বাস্থ্য-সচেতন ব্যবহারকারীদের জন্য অবস্থান স্কোর করার জন্য কাছাকাছি gyms , parks এবং health_food_stores গণনা করুন এবং serves_vegetarian_food আছে এমন রেস্তোরাঁগুলি ফিল্টার করুন।
  • "যাত্রীদের স্বপ্নের স্কোর": পরিবহনের অ্যাক্সেসকে মূল্য দেয় এমন ব্যবহারকারীদের সাহায্য করার জন্য কাছাকাছি transit_station এবং parking স্থানের উচ্চ ঘনত্ব সহ অবস্থানগুলি খুঁজুন।

অবদানকারীরা

হেনরিক ভালভ | ডেভএক্স ইঞ্জিনিয়ার