Fungsi PLACES_COUNT menampilkan satu nilai hitungan tempat berdasarkan area penelusuran dan filter penelusuran yang ditentukan. Anda harus menentukan area penelusuran ke fungsi PLACES_COUNT dan secara opsional dapat menentukan parameter filter tambahan, seperti jenis tempat, status operasi, tingkat harga, dan lainnya.
Karena fungsi PLACES_COUNT menampilkan satu nilai, panggil fungsi tersebut menggunakan klausa SELECT.
Parameter input:
Returns:
- Satu nilai
countsebagaiINT64.
- Satu nilai
Contoh: Menghitung jumlah tempat dalam radius penelusuran
Panggilan fungsi PLACES_COUNT yang paling sederhana menampilkan satu hitungan semua tempat di area geografis. Dalam contoh ini, Anda menampilkan hitungan semua tempat operasional dalam jarak 1.000 meter dari Empire State Building.
Contoh ini menggunakan fungsi
ST_GEOGPOINT
BigQuery untuk menampilkan nilai GEOGRAPHYdari suatu titik.
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;
Respons berisi satu hitungan:

Panggilan yang lebih umum menerapkan filter ke area penelusuran. Contoh berikutnya menggunakan filter untuk membatasi penelusuran agar hanya menampilkan hitungan:
- Tempat berjenis
restaurantdengan rating minimum 3 - Tingkat harga murah atau sedang
- Saat ini beroperasi
- boleh dibawa masuk
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;
Respons yang difilter:

Ingatlah bahwa kueri set data tempat menerapkan nilai minimum 5. Salah satu keunggulan fungsi hitungan tempat adalah fungsi tersebut dapat menampilkan hitungan apa pun, termasuk 0. Misalnya, panggilan berikut menampilkan hitungan 1:
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;
Contoh: Menghitung jumlah restoran menggunakan poligon
Anda dapat menggunakan poligon untuk menentukan area penelusuran. Saat menggunakan poligon, titik poligon harus menentukan loop tertutup dengan titik pertama dalam poligon sama dengan titik terakhir.
Contoh ini menggunakan fungsi
ST_GEOGFROMTEXT
BigQuery untuk menampilkan nilai GEOGRAPHY dari poligon.
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;
Respons untuk area pandang:

Contoh: Menghitung jumlah restoran menggunakan garis
Dalam contoh berikutnya, Anda menentukan area penelusuran menggunakan garis titik terhubung dengan radius penelusuran 100 meter di sekitar garis. Garis ini mirip dengan rute perjalanan yang dihitung oleh Routes API. Rute ini mungkin untuk kendaraan, sepeda, atau pejalan kaki:
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;
Respons untuk garis:

Contoh: Menggabungkan hasil beberapa panggilan
Anda dapat menggabungkan hasil beberapa panggilan ke fungsi PLACES_COUNT.
Misalnya, Anda menginginkan satu hasil yang menampilkan jumlah restoran untuk tingkat harga berikut dalam area tertentu:
PRICE_LEVEL_INEXPENSIVEPRICE_LEVEL_MODERATEPRICE_LEVEL_EXPENSIVEPRICE_LEVEL_VERY_EXPENSIVE"
Dalam contoh ini, Anda membuat loop untuk memanggil fungsi PLACES_COUNT untuk setiap tingkat harga, dan menyisipkan hasil setiap panggilan ke tabel sementara. Kemudian, Anda mengkueri tabel sementara untuk menampilkan hasilnya:
-- 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;
Respons gabungan:

Opsi lainnya adalah menggunakan perintah UNION ALL untuk menggabungkan hasil beberapa pernyataan SELECT. Contoh berikut menunjukkan hasil yang sama seperti dari contoh sebelumnya:
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