PLACES_COUNT ফাংশনটি নির্দিষ্ট সার্চ এরিয়া এবং সার্চ ফিল্টারের উপর ভিত্তি করে স্থানগুলোর একটি একক গণনা মান প্রদান করে। আপনাকে অবশ্যই PLACES_COUNT ফাংশনে সার্চ এরিয়া নির্দিষ্ট করতে হবে এবং ঐচ্ছিকভাবে অতিরিক্ত ফিল্টার প্যারামিটার, যেমন স্থানের ধরন, পরিচালন অবস্থা, মূল্যস্তর ইত্যাদি নির্দিষ্ট করতে পারেন।
যেহেতু PLACES_COUNT ফাংশনটি একটিমাত্র মান রিটার্ন করে, তাই এটিকে একটি SELECT ক্লজ ব্যবহার করে কল করুন।
ইনপুট প্যারামিটারসমূহ:
আবশ্যক :
geographyফিল্টার প্যারামিটার যা অনুসন্ধান এলাকা নির্দিষ্ট করে।geographyপ্যারামিটারটি BigQueryGEOGRAPHYডেটা টাইপ দ্বারা সংজ্ঞায়িত একটি মান গ্রহণ করে, যা পয়েন্ট, লাইনস্ট্রিং এবং পলিগন সমর্থন করে।ঐচ্ছিক : আপনার অনুসন্ধানকে আরও পরিমার্জিত করার জন্য অতিরিক্ত ফিল্টার প্যারামিটার।
ফেরত:
- একটি একক
countমানINT64হিসেবে।
- একটি একক
উদাহরণ: একটি অনুসন্ধান ব্যাসার্ধের মধ্যে স্থানের সংখ্যা গণনা করুন।
সবচেয়ে সহজ PLACES_COUNT ফাংশন কলটি একটি ভৌগোলিক এলাকার সমস্ত স্থানের একক সংখ্যা ফেরত দেয়। এই উদাহরণে, আপনি এম্পায়ার স্টেট বিল্ডিংয়ের ১০০০ মিটারের মধ্যে অবস্থিত সমস্ত চালু স্থানের সংখ্যা ফেরত দিচ্ছেন।
এই উদাহরণে একটি পয়েন্ট থেকে GEOGRAPHY ভ্যালু রিটার্ন করার জন্য BigQuery-এর ST_GEOGPOINT ফাংশনটি ব্যবহার করা হয়েছে।
SELECT `PROJECT_NAME.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;
প্রতিক্রিয়াটিতে একটিমাত্র গণনা রয়েছে:

একটি সাধারণ কলে সার্চ এরিয়াতে ফিল্টার প্রয়োগ করা হয়। পরবর্তী উদাহরণটিতে ফিল্টার ব্যবহার করে সার্চকে সীমিত করা হয়েছে, যাতে শুধুমাত্র নিম্নলিখিত সংখ্যাগুলো ফেরত আসে:
- সর্বনিম্ন ৩ রেটিং সহ
restaurantধরনের স্থান - সস্তা বা মাঝারি দামের স্তর
- বর্তমানে চালু আছে
- কুকুরদের অনুমতি আছে
SELECT `PROJECT_NAME.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;
ফিল্টার করা প্রতিক্রিয়া:

মনে রাখবেন যে, প্লেস ডেটাসেট কোয়েরিগুলো সর্বনিম্ন গণনার সীমা ৫ নির্ধারণ করে। প্লেস কাউন্ট ফাংশনগুলোর একটি সুবিধা হলো, এগুলো ০ সহ যেকোনো গণনা ফেরত দিতে পারে। উদাহরণস্বরূপ, নিম্নলিখিত কলটি ১ গণনা ফেরত দেয়:
SELECT `PROJECT_NAME.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 `PROJECT_NAME.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;
ভিউপোর্টের প্রতিক্রিয়া:

উদাহরণ: একটি লাইন ব্যবহার করে রেস্তোরাঁর সংখ্যা গণনা করুন।
পরবর্তী উদাহরণে, আপনি সংযুক্ত বিন্দুর একটি রেখা ব্যবহার করে অনুসন্ধান এলাকাটি নির্ধারণ করবেন, যার চারপাশে ১০০ মিটার অনুসন্ধান ব্যাসার্ধ থাকবে। এই রেখাটি Routes API দ্বারা গণনা করা একটি ভ্রমণ পথের অনুরূপ। এই পথটি কোনো যানবাহন, সাইকেল বা পথচারীর জন্য হতে পারে।
DECLARE geo GEOGRAPHY; SET geo = ST_GEOGFROMTEXT('LINESTRING(-73.98903537033028 40.73655649223003,-73.93580216278471 40.80955538843361)'); -- NYC line SELECT `PROJECT_NAME.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, `PROJECT_NAME.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, `PROJECT_NAME.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, `PROJECT_NAME.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, `PROJECT_NAME.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, `PROJECT_NAME.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