PLACES_COUNTটি ফাংশন

PLACES_COUNT ফাংশন নির্দিষ্ট অনুসন্ধান এলাকা এবং অনুসন্ধান ফিল্টারগুলির উপর ভিত্তি করে স্থানগুলির একটি একক গণনা মান প্রদান করে৷ আপনাকে অবশ্যই PLACES_COUNT ফাংশনে অনুসন্ধান এলাকা নির্দিষ্ট করতে হবে এবং বিকল্পভাবে অতিরিক্ত ফিল্টার পরামিতি নির্দিষ্ট করতে পারেন, যেমন স্থানের ধরন, অপারেটিং স্থিতি, মূল্য স্তর এবং আরও অনেক কিছু।

কারণ PLACES_COUNT ফাংশন একটি একক মান প্রদান করে, এটিকে একটি SELECT ক্লজ ব্যবহার করে কল করুন।

  • ইনপুট পরামিতি:

    • প্রয়োজনীয় : geography ফিল্টার প্যারামিটার যা অনুসন্ধান এলাকা নির্দিষ্ট করে। geography প্যারামিটার BigQuery GEOGRAPHY ডেটা টাইপ দ্বারা সংজ্ঞায়িত একটি মান নেয়, যা পয়েন্ট, লাইনস্ট্রিং এবং বহুভুজ সমর্থন করে।

    • ঐচ্ছিক : আপনার অনুসন্ধান পরিমার্জিত করার জন্য অতিরিক্ত ফিল্টার পরামিতি।

  • রিটার্ন:

    • INT64 হিসাবে একটি একক count মান।

উদাহরণ: অনুসন্ধান ব্যাসার্ধে স্থানের সংখ্যা গণনা করুন

সহজতম PLACES_COUNT ফাংশন কল একটি ভৌগলিক এলাকার সমস্ত স্থানের একক গণনা প্রদান করে৷ এই উদাহরণে, আপনি এম্পায়ার স্টেট বিল্ডিংয়ের 1000 মিটারের মধ্যে সমস্ত অপারেশনাল জায়গার গণনা ফেরত দেন।

এই উদাহরণটি একটি বিন্দু থেকে একটি GEOGRAPHY মান ফেরাতে BigQuery ST_GEOGPOINT ফাংশন ব্যবহার করে৷

SELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(
  JSON_OBJECT(
      'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building
      'geography_radius', 1000 -- Radius in meters
      )
) as count;

প্রতিক্রিয়া একটি একক গণনা রয়েছে:

নিউ ইয়র্ক সিটিতে স্থান গণনা ফাংশনের ফলাফল।

একটি আরও সাধারণ কল অনুসন্ধান এলাকায় ফিল্টার প্রয়োগ করে। পরবর্তী উদাহরণ শুধুমাত্র একটি গণনা ফেরাতে অনুসন্ধান সীমিত করতে ফিল্টার ব্যবহার করে:

  • ন্যূনতম 3 রেটিং সহ টাইপের restaurant জায়গা
  • সস্তা বা মাঝারি মূল্যের স্তর
  • বর্তমানে চালু আছে
  • কুকুরের অনুমতি দেয়
SELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(
  JSON_OBJECT(
      'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building
      'geography_radius', 1000, -- Radius in meters
      'types', ["restaurant"],
      'min_rating', 3,
      'price_level', ['PRICE_LEVEL_INEXPENSIVE', 'PRICE_LEVEL_MODERATE'],
      'business_status', ['OPERATIONAL'],
      'allows_dogs', TRUE
      )
) as count;

ফিল্টার করা প্রতিক্রিয়া:

নিউ ইয়র্ক সিটিতে রেস্টুরেন্ট প্লেস কাউন্ট ফাংশন ফিল্টার করার ফলাফল।

মনে রাখবেন যে স্থানের ডেটাসেট প্রশ্নগুলি ন্যূনতম 5 গণনা থ্রেশহোল্ড প্রয়োগ করে। স্থান গণনা ফাংশনের একটি সুবিধা হল যে তারা 0 সহ যেকোনো গণনা ফেরত দিতে পারে। উদাহরণস্বরূপ, নিম্নলিখিত কলটি 1 এর গণনা প্রদান করে:

SELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(
  JSON_OBJECT(
      'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building
      'geography_radius', 500, -- Radius in meters
      'types', ["restaurant"],
      'min_rating', 4.0,
      'free_parking_lot', TRUE,
      'good_for_watching_sports', TRUE
      )
) as count;

উদাহরণ: বহুভুজ ব্যবহার করে রেস্টুরেন্টের সংখ্যা গণনা করুন

আপনি অনুসন্ধান এলাকা নির্দিষ্ট করতে একটি বহুভুজ ব্যবহার করতে পারেন। বহুভুজ ব্যবহার করার সময়, বহুভুজের বিন্দুগুলিকে একটি বন্ধ লুপ সংজ্ঞায়িত করতে হবে যেখানে বহুভুজের প্রথম বিন্দুটি শেষ বিন্দুর সমান।

এই উদাহরণটি একটি বহুভুজ থেকে একটি GEOGRAPHY মান ফেরাতে BigQuery ST_GEOGFROMTEXT ফাংশন ব্যবহার করে৷

DECLARE geo GEOGRAPHY;
SET geo = ST_GEOGFROMTEXT('''POLYGON((-73.985708 40.75773,-73.993324 40.750298,
                                      -73.9857 40.7484,-73.9785 40.7575,
                                      -73.985708 40.75773))''');  -- NYC viewport

SELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(
  JSON_OBJECT(
      'geography',geo, -- viewport 
      'types', ["restaurant"],
      'min_rating', 1.0,
      'max_rating', 4.5,
      'min_user_rating_count', 1,
      'max_user_rating_count', 10000,
      'price_level', ['PRICE_LEVEL_INEXPENSIVE', 'PRICE_LEVEL_MODERATE'],
      'business_status', ['OPERATIONAL'],
      'allows_dogs', TRUE
      )
) as count;

ভিউপোর্টের প্রতিক্রিয়া:

নিউ ইয়র্ক সিটির একটি ভিউপোর্টে রেস্তোরাঁ প্লেস কাউন্ট ফাংশন ফিল্টার করার ফলাফল।

উদাহরণ: একটি লাইন ব্যবহার করে রেস্টুরেন্টের সংখ্যা গণনা করুন

পরবর্তী উদাহরণে, আপনি লাইনের চারপাশে 100 মিটারের অনুসন্ধান ব্যাসার্ধের সাথে সংযুক্ত পয়েন্টগুলির একটি লাইন ব্যবহার করে অনুসন্ধান এলাকাটি সংজ্ঞায়িত করুন। লাইনটি রুট API দ্বারা গণনা করা একটি ভ্রমণ রুটের অনুরূপ। পথটি একটি যানবাহন, একটি সাইকেল বা পথচারীর জন্য হতে পারে:

DECLARE geo GEOGRAPHY;
SET geo = ST_GEOGFROMTEXT('LINESTRING(-73.98903537033028 40.73655649223003,-73.93580216278471 40.80955538843361)');  -- NYC line

SELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(
  JSON_OBJECT(
      'geography',geo, -- line
      'geography_radius', 100, -- Radius around line
      'types', ["restaurant"],
      'min_rating', 1.0,
      'max_rating', 4.5,
      'min_user_rating_count', 1,
      'max_user_rating_count', 10000,
      'price_level', ['PRICE_LEVEL_INEXPENSIVE', 'PRICE_LEVEL_MODERATE'],
      'business_status', ['OPERATIONAL'],
      'allows_dogs', TRUE
      )
) as count;

লাইনের জন্য প্রতিক্রিয়া:

নিউ ইয়র্ক সিটিতে একটি লাইন বরাবর রেস্তোরাঁ প্লেস কাউন্ট ফাংশন ফিল্টার করার ফলাফল।

উদাহরণ: একাধিক কলের ফলাফল একত্রিত করুন

আপনি PLACES_COUNT ফাংশনে একাধিক কলের ফলাফল একত্রিত করতে পারেন৷ উদাহরণস্বরূপ, আপনি একটি নির্দিষ্ট এলাকার মধ্যে নিম্নলিখিত মূল্য স্তরের জন্য রেস্তোরাঁর সংখ্যা দেখানো একটি একক ফলাফল চান:

  • PRICE_LEVEL_INEXPENSIVE
  • PRICE_LEVEL_MODERATE
  • PRICE_LEVEL_EXPENSIVE
  • PRICE_LEVEL_VERY_EXPENSIVE"

এই উদাহরণে, আপনি প্রতিটি মূল্য স্তরের জন্য PLACES_COUNT ফাংশন কল করার জন্য একটি লুপ তৈরি করেন এবং প্রতিটি কলের ফলাফল একটি অস্থায়ী টেবিলে সন্নিবেশ করেন৷ তারপরে আপনি ফলাফলগুলি প্রদর্শন করতে অস্থায়ী টেবিলটি জিজ্ঞাসা করুন:

-- Create a temp table to hold the results.
CREATE TEMP TABLE results (type STRING, count INT64);

-- Create a loop that calls PLACES_COUNT for each price level.
FOR types IN (SELECT type FROM UNNEST(["PRICE_LEVEL_INEXPENSIVE", "PRICE_LEVEL_MODERATE", "PRICE_LEVEL_EXPENSIVE", "PRICE_LEVEL_VERY_EXPENSIVE"]) as type)
DO
  INSERT INTO results VALUES (types.type, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(
  JSON_OBJECT(
      'types', ["restaurant"],
      'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building
      'geography_radius', 1000, -- Radius in meters
      'business_status', ['OPERATIONAL'],
      'price_level', [types.type]
  )));
END FOR;

-- Query the table of results.
SELECT * FROM results;

সম্মিলিত প্রতিক্রিয়া:

রেস্তোরাঁ ফিল্টার করার জন্য মিলিত ফলাফল মূল্য স্তর দ্বারা.

আরেকটি বিকল্প হল একাধিক SELECT স্টেটমেন্টের ফলাফল একত্রিত করতে UNION ALL কমান্ড ব্যবহার করা। নিম্নলিখিত উদাহরণটি আগের উদাহরণের মতো একই ফলাফল দেখায়:

SELECT "PRICE_LEVEL_INEXPENSIVE" as price_level, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(
  JSON_OBJECT(
      'types', ["restaurant"],
      'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building
      'geography_radius', 1000, -- Radius in meters
      'business_status', ['OPERATIONAL'],
      'price_level', ['PRICE_LEVEL_INEXPENSIVE']
  )
) as count

UNION ALL

SELECT "PRICE_LEVEL_MODERATE" as price_level, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(
  JSON_OBJECT(
      'types', ["restaurant"],
      'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building
      'geography_radius', 1000, -- Radius in meters
      'business_status', ['OPERATIONAL'],
      'price_level', ['PRICE_LEVEL_MODERATE']
  )
) as count

UNION ALL

SELECT "PRICE_LEVEL_EXPENSIVE" as price_level, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(
  JSON_OBJECT(
      'types', ["restaurant"],
      'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building
      'geography_radius', 1000, -- Radius in meters
      'business_status', ['OPERATIONAL'],
      'price_level', ['PRICE_LEVEL_EXPENSIVE']
  )
) as count

UNION ALL

SELECT "PRICE_LEVEL_VERY_EXPENSIVE" as price_level, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(
  JSON_OBJECT(
      'types', ["restaurant"],
      'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building
      'geography_radius', 1000, -- Radius in meters
      'business_status', ['OPERATIONAL'],
      'price_level', ['PRICE_LEVEL_VERY_EXPENSIVE']
  )
) as count