লুকার স্টুডিওর সাহায্যে স্থানের অন্তর্দৃষ্টি ডেটা গতিশীলভাবে কল্পনা করুন

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

একটি ভূ-স্থানিক ঘনত্ব হিটম্যাপ তৈরি করার জন্য লুকার স্টুডিও কীভাবে বিগকোয়েরি (BigQuery)-এর প্লেসেস ইনসাইটস (Places Insights)-এ শহর, দিন এবং সময়ের জন্য গতিশীল প্যারামিটার পাঠায়, তা একটি ওয়ার্কফ্লো ডায়াগ্রামের মাধ্যমে দেখানো হয়েছে।

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

এই স্থাপত্যশৈলী গ্রহণ করলে বেশ কিছু গুরুত্বপূর্ণ সুবিধা পাওয়া যায়:

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

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

নিম্নলিখিত কর্মপ্রবাহটি একটি উচ্চ কার্যক্ষমতাসম্পন্ন রিপোর্টিং কাঠামো প্রতিষ্ঠা করে। এটি একটি স্থির ভিত্তি থেকে সম্পূর্ণ গতিশীল অ্যাপ্লিকেশনে রূপান্তরিত হয় এবং জটিলতা আনার আগে তথ্যের সঠিকতা নিশ্চিত করে।

পূর্বশর্ত

শুরু করার আগে, প্লেসেস ইনসাইটস সেট আপ করার জন্য এই নির্দেশাবলী অনুসরণ করুন । আপনার লুকার স্টুডিও-তে অ্যাক্সেস প্রয়োজন হবে, যা একটি বিনামূল্যের টুল।

ধাপ ১: একটি স্থির ভূ-স্থানিক ভিত্তিরেখা স্থাপন করুন

ইন্টারঅ্যাক্টিভিটি যোগ করার আগে, একটি বেস কোয়েরি তৈরি করুন এবং নিশ্চিত করুন যে এটি লুকার স্টুডিওতে সঠিকভাবে রেন্ডার হচ্ছে। H3 ইনডেক্সিং সিস্টেম ব্যবহার করে ডেটাকে হেক্সাগোনাল গ্রিডে একত্রিত করতে প্লেসেস ইনসাইটস এবং বিগকোয়েরির জিওস্পেশিয়াল সক্ষমতা ব্যবহার করুন। এর ফলে এমন একটি কোয়েরি আউটপুট তৈরি হবে যা ভিজ্যুয়ালাইজেশনের জন্য লুকার স্টুডিওর ফিল্ড ম্যাপ কার্ট টাইপের সাথে ব্যবহার করা যাবে।

১.১ ডেটা সংযোগ করুন

প্রাথমিক সংযোগ স্থাপনের জন্য নিম্নলিখিত স্ট্যাটিক কোয়েরিটি ব্যবহার করুন। ডেটা পাইপলাইন যাচাই করার জন্য এটি একটি নির্দিষ্ট অবস্থান (লন্ডন) এবং বিভাগ (রেস্তোরাঁ) লক্ষ্য করে।

SELECT
  h3_index,
  `carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
  restaurant_count
FROM (
  SELECT WITH AGGREGATION_THRESHOLD
    `carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
    COUNT(*) AS restaurant_count
  FROM
    -- Note: Change 'gb' to your target country code (e.g., 'us')
    `places_insights___gb.places`
  WHERE
    'London' IN UNNEST(locality_names)
    AND 'restaurant' IN UNNEST(types)
  GROUP BY
    h3_index
)
ORDER BY
  restaurant_count DESC;

স্থানিক একত্রীকরণের উপর নোট

এই কোয়েরিটি গুগল ক্লাউড বিগকোয়েরিতে সর্বজনীনভাবে উপলব্ধ কার্টো অ্যানালিটিক্স টুলবক্স ( carto-os ) থেকে একটি ফাংশন ব্যবহার করে। H3_FROMGEOGPOINT ফাংশনটি নির্দিষ্ট অবস্থান বিন্দুগুলিকে H3 সেলে রূপান্তরিত করে, যা পৃথিবীকে ষড়ভুজাকার গ্রিড সেলে বিভক্ত করার একটি পদ্ধতি।

আমরা এই রূপান্তরটি ব্যবহার করি কারণ লুকার স্টুডিওর ফিল্ড ম্যাপে রঙ রেন্ডার করার জন্য বহুভুজ (আকৃতি) প্রয়োজন হয়। বিন্দুগুলোকে ষড়ভুজাকৃতিতে রূপান্তর করার মাধ্যমে, আমরা হাজার হাজার পরস্পর ছেদকারী বিন্দু অঙ্কন করার পরিবর্তে একটি নির্দিষ্ট এলাকার ব্যবসার ঘনত্বকে দৃশ্যমান করতে পারি।

সমষ্টিগত প্রান্তিক সীমা সম্পর্কে নোট

সমস্ত প্লেসেস ইনসাইটস কোয়েরির জন্য WITH AGGREGATION_THRESHOLD ক্লজটি আবশ্যক। এই গোপনীয়তা সুরক্ষা নিশ্চিত করে যে, অ্যাগ্রিগেটেড কাউন্ট ৫ বা তার বেশি হলেই কেবল ডেটা ফেরত দেওয়া হবে।

এই ভিজ্যুয়ালাইজেশনের প্রেক্ষাপটে, যদি কোনো H3 গ্রিড সেলে ৫টির কম রেস্তোরাঁ থাকে, তাহলে সেই সেলটি ফলাফল সেট থেকে সম্পূর্ণরূপে বাদ দেওয়া হবে এবং আপনার মানচিত্রে খালি দেখাবে।

লুকার স্টুডিওতে এটি বাস্তবায়ন করতে:

  1. একটি নতুন খালি প্রতিবেদন তৈরি করুন।
  2. ডেটা কানেক্টর হিসেবে BigQuery নির্বাচন করুন।
  3. বাম দিকের মেনু থেকে কাস্টম কোয়েরি (CUSTOM QUERY) বেছে নিন এবং আপনার বিলিং প্রজেক্ট আইডি (Project ID) নির্বাচন করুন।
  4. উপরের স্ট্যাটিক বেস কোয়েরিটি এডিটরে পেস্ট করুন।
  5. Use Legacy SQL , Enable date range , এবং Enable viewer email address প্যারামিটারগুলো আনচেক করুন।
  6. যোগ করুন-এ ক্লিক করুন।

১.২ ভূ-স্থানিক ভিজ্যুয়ালাইজেশন কনফিগার করুন

ডেটা সংযুক্ত হয়ে গেলে, H3 বাউন্ডারি ডেটা সঠিকভাবে শনাক্ত করার জন্য Looker Studio কনফিগার করুন:

  1. 'অ্যাড এ চার্ট' মেনু থেকে রিপোর্ট ক্যানভাসে একটি ফিল্ড ম্যাপ ভিজ্যুয়ালাইজেশন যোগ করুন।
  2. নিশ্চিত করুন যে আপনার h3_geo ফিল্ড, যেটিতে পলিগন জ্যামিতি থাকে, সেটির ডেটা টাইপ Geospatial- এ সেট করা আছে।
    1. আপনার সংযোগের নামের পাশে থাকা ডেটা উৎস সম্পাদনা (পেন্সিল) আইকনটিতে ক্লিক করুন।
    2. যদি h3_geo Text (ABC) হিসেবে সেট করা থাকে, তাহলে ড্রপ-ডাউন মেনু ব্যবহার করে Geo > Geospatial নির্বাচন করুন।
    3. সম্পন্ন ক্লিক করুন।
  3. h3_index ফিল্ডটিকে Location- এর সাথে ম্যাপ করুন (যা অনন্য শনাক্তকারী হিসেবে কাজ করবে)।
  4. h3_geo ফিল্ডটিকে জিওস্পেশিয়াল ফিল্ডে (যা পলিগন জ্যামিতি হিসেবে কাজ করে) ম্যাপ করুন।
  5. restaurant_count ফিল্ডটিকে Color মেট্রিকের সাথে ম্যাপ করুন।

এটি H3 সেল অনুযায়ী রেস্তোরাঁর ঘনত্বের একটি মানচিত্র প্রদর্শন করবে। গাঢ় নীল রঙ (ডিফল্ট রঙ) বেশি সংখ্যক রেস্তোরাঁযুক্ত সেলটিকে নির্দেশ করে।

লন্ডনের একটি ভরাট মানচিত্র, যার উপর একটি ষড়ভুজাকার গ্রিড বসানো হয়েছে, যেখানে গাঢ় নীল ঘরগুলো রেস্তোরাঁর অধিক ঘনত্ব নির্দেশ করে। লিজেন্ডটি ৫ থেকে ১,২১৫ পর্যন্ত ঘনত্বের সংখ্যা নির্দেশ করে।

ধাপ ২: ডাইনামিক প্যারামিটার প্রয়োগ করুন

রিপোর্টটিকে ইন্টারেক্টিভ করার জন্য, আমরা এতে এমন কন্ট্রোল যুক্ত করব যা ব্যবহারকারীকে নিম্নলিখিত অপশনগুলো থেকে নির্বাচন করার সুযোগ দেবে:

  • এলাকা: প্রতিবেদনটি যে শহরের উপর আলোকপাত করে, তা নিয়ন্ত্রণ করে।
  • সপ্তাহের দিন: স্কিমাতে থাকা regular_opening_hours রেকর্ডটি ব্যবহার করে, স্থানগুলো কোন দিন খোলা থাকে তার উপর ভিত্তি করে ফিল্টার করে।
  • দিনের সময়: start_time এবং end_time ফিল্ডের সাথে তুলনা করে স্থানগুলোর কার্যঘণ্টার ভিত্তিতে ফিল্টার করে।

এটি অর্জন করতে, আপনাকে রানটাইমে ব্যবহারকারী-নির্বাচিত প্যারামিটারগুলো সরাসরি একটি পরিবর্তিত প্লেসেস ইনসাইটস কোয়েরিতে পাস করতে হবে। লুকার স্টুডিও-র ডেটা সোর্স এডিটরে, আপনাকে অবশ্যই এই প্যারামিটারগুলোকে টাইপড ভ্যারিয়েবল হিসেবে সুস্পষ্টভাবে সংজ্ঞায়িত করতে হবে।

লুকার স্টুডিওতে, রিসোর্স মেনু নির্বাচন করুন, তারপর 'ম্যানেজ অ্যাডেড ডেটা সোর্সেস'-এ ক্লিক করুন। যে প্যানেলটি প্রদর্শিত হবে, সেখানে আমরা আগে যোগ করা BigQuery কাস্টম SQL ডেটা সোর্সটির পাশে থাকা EDIT নির্বাচন করুন।

এডিট কানেকশন উইন্ডোর মধ্যে, অ্যাড এ প্যারামিটার নির্বাচন করুন। আমরা নিচের মানগুলো দিয়ে তিনটি প্যারামিটার যোগ করতে যাচ্ছি।

প্যারামিটার নাম ডেটা টাইপ অনুমোদিত মান মানগুলির তালিকা (অবশ্যই ডেটাবেসের সাথে হুবহু মিলতে হবে)
p_locality পাঠ্য মানগুলির তালিকা
মূল্য লেবেল
London লন্ডন
Manchester ম্যানচেস্টার
Birmingham বার্মিংহাম
Glasgow গ্লাসগো
p_day_of_week পাঠ্য মানগুলির তালিকা
মূল্য লেবেল
monday সোমবার
tuesday মঙ্গলবার
wednesday বুধবার
thursday বৃহস্পতিবার
friday শুক্রবার
saturday শনিবার
sunday রবিবার
p_hour_of_day পাঠ্য মানগুলির তালিকা
মূল্য লেবেল
03:00:00 ভোর ৩টা - ভোর ৪টা
08:00:00 সকাল ৮টা - সকাল ৯টা
19:00:00 সন্ধ্যা ৭টা - রাত ৮টা

p_hour_of_day প্যারামিটারের জন্য কনফিগারেশনের উদাহরণ।

p_hour_of_day প্যারামিটারের কনফিগারেশন ইন্টারফেস, যেখানে ভ্যালুগুলোর তালিকা সেকশন দেখানো হয় এবং টাইম স্ট্রিংগুলোকে পাঠযোগ্য লেবেলে ম্যাপ করা থাকে।

p_hour_of_day প্যারামিটারটির ক্ষেত্রে, Value কলামটির দিকে বিশেষভাবে মনোযোগ দিন। যেহেতু SQL কোয়েরিটি CAST(@p_hour_of_day AS TIME) ব্যবহার করে, তাই Looker Studio থেকে পাঠানো মানগুলো অবশ্যই কঠোরভাবে HH:MM:SS ফরম্যাটে (২৪-ঘণ্টার ঘড়ি) হতে হবে।

একবার আপনি তিনটি প্যারামিটারই সেট আপ করে সেভ করে ফেললে, @ সিনট্যাক্স ব্যবহার করে এই ভেরিয়েবলগুলোকে রেফারেন্স করার জন্য আপনার BigQuery কাস্টম SQL কানেকশনটি পরিবর্তন করুন।

এটি করার জন্য, 'Edit Connection'-এ ক্লিক করুন এবং নিচে পরিবর্তিত কোয়েরিটি পেস্ট করুন:

SELECT
  h3_index,
  `carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
  restaurant_count
FROM (
  SELECT WITH AGGREGATION_THRESHOLD
    `carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
    COUNT(*) AS restaurant_count
  FROM
    `places_insights___gb.places`
  WHERE
    -- Dynamic locality filter based on parameter
    @p_locality IN UNNEST(locality_names)
    AND 'restaurant' IN UNNEST(types)
    AND business_status = 'OPERATIONAL'
    AND EXISTS (
      SELECT 1
      FROM UNNEST(
        CASE @p_day_of_week
          WHEN 'monday' THEN regular_opening_hours.monday
          WHEN 'tuesday' THEN regular_opening_hours.tuesday
          WHEN 'wednesday' THEN regular_opening_hours.wednesday
          WHEN 'thursday' THEN regular_opening_hours.thursday
          WHEN 'friday' THEN regular_opening_hours.friday
          WHEN 'saturday' THEN regular_opening_hours.saturday
          WHEN 'sunday' THEN regular_opening_hours.sunday
        END
      ) AS hours
      WHERE hours.start_time <= CAST(@p_hour_of_day AS TIME)
        AND hours.end_time >= TIME_ADD(CAST(@p_hour_of_day AS TIME), INTERVAL 1 HOUR)
    )
  GROUP BY
    h3_index
)
ORDER BY
  restaurant_count DESC;

সম্পাদনাটি সংরক্ষণ করতে 'পুনরায় সংযোগ করুন' (Reconnect) এ ক্লিক করুন। পরিবর্তিত কোয়েরিতে, @p_hour_of_day এর মতো নতুন ভেরিয়েবলগুলো লক্ষ্য করুন, যেগুলো আমাদের এইমাত্র সেট আপ করা প্যারামিটার নামগুলোর সাথে সম্পর্কিত।

এই প্যারামিটারগুলো অন্তিম ব্যবহারকারীর কাছে তুলে ধরতে রিপোর্ট ক্যানভাসে ফিরে যান:

  1. আপনার রিপোর্টে তিনটি ড্রপ-ডাউন লিস্ট কন্ট্রোল যোগ করুন।
  2. প্রতিটি কন্ট্রোলের জন্য, আপনার নতুন তৈরি করা প্যারামিটারগুলোর সাথে সামঞ্জস্য রেখে কন্ট্রোল ফিল্ডটি সেট করুন:
    • নিয়ন্ত্রণ ১: p_locality
    • নিয়ন্ত্রণ ২: p_day_of_week
    • নিয়ন্ত্রণ ৩: p_hour_of_day

আপনার চূড়ান্ত প্রতিবেদনটি নিম্নলিখিতের মতো দেখতে হবে। ড্রপ-ডাউন কন্ট্রোলগুলির মধ্যে কোনো একটির মান পরিবর্তন করলে, মানচিত্রে দেখানোর আগে লুকার স্টুডিও প্লেসেস ইনসাইটস থেকে অনুরোধ করা ডেটা সংগ্রহ করবে।

চূড়ান্ত ইন্টারেক্টিভ রিপোর্টটিতে গ্লাসগোর একটি রেস্তোরাঁর ঘনত্বের মানচিত্র দেখানো হয়েছে, যার শীর্ষে তিনটি ড্রপ-ডাউন ফিল্টার রয়েছে। দিনের ঘণ্টার মেনুটি প্রসারিত করে নির্বাচনযোগ্য সময়সীমা দেখানো হয়েছে।

ধাপ ৩: ফলাফলগুলো শেয়ার করুন।

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

উপসংহার

এই প্যাটার্নটি একটি স্কেলেবল ও ইন্টারেক্টিভ রিপোর্টিং টুল তৈরি করে, যা BigQuery-এর কম্পিউটেশনাল শক্তিকে কাজে লাগিয়ে Looker Studio-কে একত্রিত Places Insights ডেটা সরবরাহ করে। এই আর্কিটেকচারটি বিশাল কাঁচা ডেটাসেট ভিজ্যুয়ালাইজ করার অসুবিধাগুলো এড়িয়ে চলে এবং ব্যবহারকারীদের প্রায় রিয়েল-টাইমে সময়, অবস্থান এবং ব্যবসার ধরনের মতো বিভিন্ন মাত্রায় ডেটা অন্বেষণ করার সুবিধা দেয়। আপনার নন-টেকনিক্যাল স্টেকহোল্ডারদের ডেটা অন্বেষণের সুযোগ দেওয়ার জন্য এটি একটি শক্তিশালী টুল।

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

Places Insights স্কিমার বিভিন্ন অংশকে প্যারামিটারাইজ করে ডাইনামিক রিপোর্টের অন্যান্য রূপগুলি অন্বেষণ করুন:

  • ডাইনামিক প্রতিযোগী বিশ্লেষণ: brand নামের জন্য একটি প্যারামিটার তৈরি করুন, যাতে ব্যবহারকারীরা একটি বাজারে বিভিন্ন প্রতিযোগীর আপেক্ষিক বিস্তৃতি দেখার জন্য তাৎক্ষণিকভাবে হিটম্যাপটি তাদের মধ্যে পরিবর্তন করতে পারেন। ব্র্যান্ড ডেটার প্রাপ্যতা জানতে ‘অ্যাবাউট প্লেসেস ইনসাইটস’ ডেটা দেখুন।
  • ইন্টারেক্টিভ সাইট নির্বাচন: price_level (যেমন, 'মাঝারি' বনাম 'দামী') এবং ন্যূনতম rating এর জন্য প্যারামিটার যোগ করুন, যাতে রিয়েল এস্টেট টিমগুলো নির্দিষ্ট জনসংখ্যাতাত্ত্বিক প্রোফাইলের সাথে মেলে এমন এলাকাগুলো গতিশীলভাবে ফিল্টার করতে পারে।
  • নিজস্ব অধ্যয়ন এলাকা: শহরের নাম দিয়ে ফিল্টার করার পরিবর্তে, ব্যবহারকারীদের নিজস্ব অধ্যয়ন এলাকা নির্ধারণ করার সুযোগ দিন।
    • ব্যাসার্ধ-ভিত্তিক: তিনটি সাংখ্যিক প্যারামিটার তৈরি করুন: p_latitude, p_longitude, এবং p_radius_meters। জিওকোডিং এপিআই সহ গুগল ম্যাপস প্ল্যাটফর্ম এপিআই থেকে স্থানাঙ্ক পাওয়া যেতে পারে। আপনার কোয়েরিতে, এগুলিকে ST_DWITHIN ফাংশনে ইনজেক্ট করুন:
      • ST_DWITHIN(point, ST_GEOGPOINT(@p_longitude, @p_latitude), @p_radius_meters)
    • বহুভুজ-ভিত্তিক: জটিল কাস্টম আকারের (যেমন বিক্রয় এলাকা) ক্ষেত্রে, ব্যবহারকারীরা সহজে জ্যামিতিক টেক্সট ইনপুট করতে পারেন না। এর পরিবর্তে, BigQuery-তে আপনার আকারের জ্যামিতি এবং একটি সহজবোধ্য নাম (যেমন, "জোন A") সহ একটি লুকআপ টেবিল তৈরি করুন। ব্যবহারকারীদের জোন নির্বাচন করার সুযোগ দিতে Looker Studio-তে p_zone_name একটি টেক্সট প্যারামিটার তৈরি করুন এবং ST_CONTAINS ফাংশনের জন্য জ্যামিতি পুনরুদ্ধার করতে একটি সাবকোয়েরি ব্যবহার করুন।

অবদানকারীরা