PLACES_COUNT
फ़ंक्शन, खोज के लिए तय की गई जगह और खोज के फ़िल्टर के आधार पर, जगहों की गिनती की एक वैल्यू दिखाता है. PLACES_COUNT
फ़ंक्शन के लिए, खोज के दायरे की जानकारी देना ज़रूरी है. इसके अलावा, फ़िल्टर करने के लिए अन्य पैरामीटर भी दिए जा सकते हैं. जैसे, जगह का टाइप, चालू होने की स्थिति, कीमत का लेवल वगैरह.
PLACES_COUNT
फ़ंक्शन एक वैल्यू दिखाता है. इसलिए, इसे SELECT
क्लॉज़ का इस्तेमाल करके कॉल करें.
इनपुट पैरामीटर:
ज़रूरी है:
geography
फ़िल्टर पैरामीटर, जो खोज के दायरे के बारे में बताता है.geography
पैरामीटर, BigQuery केGEOGRAPHY
डेटा टाइप से तय की गई वैल्यू लेता है. यह पॉइंट, लाइनस्ट्रिंग, और पॉलीगॉन के साथ काम करता है.ज़रूरी नहीं: खोज के नतीजों को बेहतर बनाने के लिए, फ़िल्टर करने वाले अतिरिक्त पैरामीटर.
वापसी:
count
की एक वैल्यू कोINT64
के तौर पर इस्तेमाल किया जाता है.
उदाहरण: खोज के दायरे में मौजूद जगहों की संख्या का हिसाब लगाना
सबसे आसान PLACES_COUNT
फ़ंक्शन कॉल, किसी भौगोलिक इलाके में मौजूद सभी जगहों की गिनती दिखाता है. इस उदाहरण में, एंपायर स्टेट बिल्डिंग से 1,000 मीटर के दायरे में मौजूद सभी जगहों की संख्या दिखाई गई है.
इस उदाहरण में, BigQuery के ST_GEOGPOINT
फ़ंक्शन का इस्तेमाल किया गया है. इससे किसी पॉइंट से GEOGRAPHY
वैल्यू मिलती है.
SELECT `places_insights___us___sample.PLACES_COUNT`( JSON_OBJECT( 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building 'geography_radius', 1000 -- Radius in meters ) ) as count;
जवाब में सिर्फ़ एक संख्या शामिल है:
ज़्यादातर कॉल में, खोज के दायरे पर फ़िल्टर लागू किए जाते हैं. अगले उदाहरण में, फ़िल्टर का इस्तेमाल किया गया है. इससे खोज के नतीजे में सिर्फ़ इनकी संख्या दिखेगी:
restaurant
टाइप की ऐसी जगहें जिनकी रेटिंग कम से कम 3 हो- किफ़ायती या सामान्य कीमत वाला
- फ़िलहाल चालू है
- कुत्तों को लाने की अनुमति है
SELECT `places_insights___us___sample.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;
फ़िल्टर किया गया जवाब:
ध्यान रखें कि जगह के डेटासेट की क्वेरी के लिए, कम से कम पांच की थ्रेशोल्ड सीमा लागू होती है. जगह की गिनती करने वाले फ़ंक्शन का एक फ़ायदा यह है कि ये कोई भी गिनती दिखा सकते हैं. इसमें 0 भी शामिल है. उदाहरण के लिए, इस कॉल से 1 की गिनती मिलती है:
SELECT `places_insights___us___sample.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;
उदाहरण: पॉलीगॉन का इस्तेमाल करके, रेस्टोरेंट की संख्या का हिसाब लगाना
खोज के लिए, पॉलीगॉन का इस्तेमाल किया जा सकता है. पॉलीगॉन का इस्तेमाल करते समय, पॉलीगॉन के पॉइंट एक क्लोज़्ड लूप तय करने चाहिए. साथ ही, पॉलीगॉन का पहला पॉइंट, आखिरी पॉइंट के जैसा होना चाहिए.
इस उदाहरण में, BigQuery के ST_GEOGFROMTEXT
फ़ंक्शन का इस्तेमाल करके, पॉलीगॉन से GEOGRAPHY
वैल्यू दिखाई गई है.
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 `places_insights___us___sample.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 मीटर के दायरे में खोज की जाएगी. यह लाइन, Routes API से कैलकुलेट किए गए यात्रा के रूट की तरह होती है. यह रूट किसी वाहन, साइकल या पैदल चलने वाले व्यक्ति के लिए हो सकता है:
DECLARE geo GEOGRAPHY; SET geo = ST_GEOGFROMTEXT('LINESTRING(-73.98903537033028 40.73655649223003,-73.93580216278471 40.80955538843361)'); -- NYC line SELECT `places_insights___us___sample.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, `places_insights___us___sample.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, `places_insights___us___sample.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, `places_insights___us___sample.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, `places_insights___us___sample.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, `places_insights___us___sample.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