science Produk atau fitur ini bersifat Eksperimental (pra-GA). Produk dan fitur pra-GA mungkin memiliki dukungan terbatas, dan perubahan pada produk serta fitur pra-GA mungkin tidak kompatibel dengan versi pra-GA lainnya. Penawaran Pra-GA tercakup dalam Persyaratan Khusus Layanan Google Maps Platform. Untuk mengetahui informasi selengkapnya, lihat deskripsi tahap peluncuran. Daftar untuk menguji Places Insights.
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Fungsi PLACES_COUNT menampilkan satu nilai jumlah 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 operasional, tingkat harga, dan lainnya.
Karena fungsi PLACES_COUNT menampilkan satu nilai, panggil menggunakan
klausa SELECT.
Parameter input:
Wajib: Parameter filtergeography yang menentukan area penelusuran. Parameter geography mengambil nilai yang ditentukan oleh jenis data GEOGRAPHY BigQuery, yang mendukung titik, linestring, dan poligon.
Opsional: Parameter filter tambahan untuk menyaring penelusuran Anda.
Retur:
Nilai count tunggal sebagai INT64.
Contoh: Menghitung jumlah tempat dalam radius penelusuran
Panggilan fungsi PLACES_COUNT yang paling sederhana menampilkan satu jumlah semua tempat di area geografis. Dalam contoh ini, Anda menampilkan jumlah semua tempat operasional dalam radius 1.000 meter dari Empire State Building.
Contoh ini menggunakan fungsi
ST_GEOGPOINT
BigQuery untuk menampilkan nilai GEOGRAPHY dari suatu titik.
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))ascount;
Respons berisi satu jumlah:
Panggilan yang lebih umum menerapkan filter ke area penelusuran. Contoh berikutnya menggunakan
filter untuk membatasi penelusuran agar hanya menampilkan jumlah:
Tempat jenis restaurant dengan rating minimum 3
Tingkat harga murah atau sedang
Saat ini beroperasi
Anjing boleh dibawa masuk
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))ascount;
Respons yang difilter:
Ingatlah bahwa kueri set data tempat menerapkan nilai minimum 5. Salah satu keunggulan fungsi jumlah tempat adalah
bahwa fungsi tersebut dapat menampilkan jumlah apa pun, termasuk 0. Misalnya, panggilan berikut
menampilkan hitungan 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))ascount;
Contoh: Menghitung jumlah restoran menggunakan poligon
Anda dapat menggunakan poligon untuk menentukan area penelusuran. Saat menggunakan poligon, titik-titik poligon harus menentukan loop tertutup di mana titik pertama dalam poligon sama dengan titik terakhir.
Contoh ini menggunakan fungsi
ST_GEOGFROMTEXT
BigQuery untuk menampilkan nilai GEOGRAPHY dari poligon.
Contoh: Menghitung jumlah restoran menggunakan garis
Pada contoh berikutnya, Anda menentukan area penelusuran menggunakan garis titik yang terhubung dengan radius penelusuran 100 meter di sekitar garis.
Jalur ini mirip dengan rute perjalanan yang dihitung oleh Routes
API. Rute dapat berupa rute untuk kendaraan, sepeda, atau pejalan kaki:
DECLAREgeoGEOGRAPHY;SETgeo=ST_GEOGFROMTEXT('LINESTRING(-73.98903537033028 40.73655649223003,-73.93580216278471 40.80955538843361)');-- NYC lineSELECT`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))ascount;
Respons untuk baris:
Contoh: Menggabungkan hasil beberapa panggilan
Anda dapat menggabungkan hasil beberapa panggilan ke fungsi PLACES_COUNT.
Misalnya, Anda menginginkan satu hasil yang menunjukkan jumlah restoran untuk tingkat harga berikut dalam area tertentu:
PRICE_LEVEL_INEXPENSIVE
PRICE_LEVEL_MODERATE
PRICE_LEVEL_EXPENSIVE
PRICE_LEVEL_VERY_EXPENSIVE"
Dalam contoh ini, Anda membuat loop untuk memanggil fungsi PLACES_COUNT untuk setiap tingkat harga, dan memasukkan hasil setiap panggilan ke tabel sementara. Kemudian, Anda
mengirimkan kueri ke tabel sementara untuk menampilkan hasilnya:
-- Create a temp table to hold the results.CREATETEMPTABLEresults(typeSTRING,countINT64);-- Create a loop that calls PLACES_COUNT for each price level.FORtypesIN(SELECTtypeFROMUNNEST(["PRICE_LEVEL_INEXPENSIVE","PRICE_LEVEL_MODERATE","PRICE_LEVEL_EXPENSIVE","PRICE_LEVEL_VERY_EXPENSIVE"])astype)DOINSERTINTOresultsVALUES(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])));ENDFOR;-- Query the table of results.SELECT*FROMresults;
Respons gabungan:
Opsi lainnya adalah menggunakan perintah UNION ALL untuk menggabungkan hasil dari
beberapa pernyataan SELECT. Contoh berikut menunjukkan hasil yang sama seperti
dari contoh sebelumnya:
SELECT"PRICE_LEVEL_INEXPENSIVE"asprice_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']))ascountUNIONALLSELECT"PRICE_LEVEL_MODERATE"asprice_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']))ascountUNIONALLSELECT"PRICE_LEVEL_EXPENSIVE"asprice_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']))ascountUNIONALLSELECT"PRICE_LEVEL_VERY_EXPENSIVE"asprice_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']))ascount
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-09-06 UTC."],[],[],null,["The `PLACES_COUNT` function returns a single count value of places based on the\nspecified search area and search filters. You must specify the search area to\nthe `PLACES_COUNT` function and can optionally specify additional filter\nparameters, such as place type, operating status, price level, and more.\n\nBecause the `PLACES_COUNT` function returns a single value, call it using\na `SELECT` clause.\n\n- Input parameters:\n\n - **Required** : The `geography` [filter parameter](/maps/documentation/placesinsights/experimental/filter-params) that\n specifies the search area. The `geography` parameter takes a value defined\n by the BigQuery\n [`GEOGRAPHY`](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#geography_type)\n data type, which supports points, linestrings, and polygons.\n\n - **Optional** : Additional [filter](/maps/documentation/placesinsights/experimental/filter-params) parameters to refine your\n search.\n\n- Returns:\n\n - A single `count` value as an `INT64`.\n\nExample: Calculate the number of places in a search radius\n\nThe simplest `PLACES_COUNT` function call returns a single count of all places\nin a geographical area. In this example, you return the count of all operational\nplaces within 1000 meters of the Empire State building.\n\nThis example uses the BigQuery\n[`ST_GEOGPOINT`](https://cloud.google.com/bigquery/docs/reference/standard-sql/geography_functions#st_geogpoint)\nfunction to return a `GEOGRAPHY` value from a point. \n\n```googlesql\nSELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(\n JSON_OBJECT(\n 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building\n 'geography_radius', 1000 -- Radius in meters\n )\n) as count;\n```\n\nThe response contains a single count:\n\nA more typical call applies filters to the search area. The next example uses\nfilters to limit the search to only return a count of:\n\n- Places of type `restaurant` with the minimum rating of 3\n- A price level of inexpensive or medium\n- Currently operational\n- Allows dogs\n\n```googlesql\nSELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(\n JSON_OBJECT(\n 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building\n 'geography_radius', 1000, -- Radius in meters\n 'types', [\"restaurant\"],\n 'min_rating', 3,\n 'price_level', ['PRICE_LEVEL_INEXPENSIVE', 'PRICE_LEVEL_MODERATE'],\n 'business_status', ['OPERATIONAL'],\n 'allows_dogs', TRUE\n )\n) as count;\n```\n\nThe filtered response:\n\nRemember that place dataset queries enforce a minimum count threshold of\n5. One of the advantages of the place count functions is\nthat they can return any counts, including 0. For example, the following call\nreturns a count of 1: \n\n```googlesql\nSELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(\n JSON_OBJECT(\n 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building\n 'geography_radius', 500, -- Radius in meters\n 'types', [\"restaurant\"],\n 'min_rating', 4.0,\n 'free_parking_lot', TRUE,\n 'good_for_watching_sports', TRUE\n )\n) as count;\n```\n\nExample: Calculate the number of restaurants using a polygon\n\nYou can use a polygon to specify the search area. When using a polygon,\nthe points of the polygon must define a closed loop where the first point in the\npolygon is the same as the last point.\n\nThis example uses the BigQuery\n[`ST_GEOGFROMTEXT`](https://cloud.google.com/bigquery/docs/reference/standard-sql/geography_functions#st_geogfromtext)\nfunction to return a `GEOGRAPHY` value from a polygon. \n\n```googlesql\nDECLARE geo GEOGRAPHY;\nSET geo = ST_GEOGFROMTEXT('''POLYGON((-73.985708 40.75773,-73.993324 40.750298,\n -73.9857 40.7484,-73.9785 40.7575,\n -73.985708 40.75773))'''); -- NYC viewport\n\nSELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(\n JSON_OBJECT(\n 'geography',geo, -- viewport \n 'types', [\"restaurant\"],\n 'min_rating', 1.0,\n 'max_rating', 4.5,\n 'min_user_rating_count', 1,\n 'max_user_rating_count', 10000,\n 'price_level', ['PRICE_LEVEL_INEXPENSIVE', 'PRICE_LEVEL_MODERATE'],\n 'business_status', ['OPERATIONAL'],\n 'allows_dogs', TRUE\n )\n) as count;\n```\n\nThe response for the viewport:\n\nExample: Calculate the number of restaurants using a line\n\nIn the next example, you define the search area using a line of connected\npoints with a search radius of 100 meters around the line.\nThe line is similar to a travel route calculated by the [Routes\nAPI](/maps/documentation/routes). The route might be for a vehicle, a bicycle,\nor for a pedestrian: \n\n```googlesql\nDECLARE geo GEOGRAPHY;\nSET geo = ST_GEOGFROMTEXT('LINESTRING(-73.98903537033028 40.73655649223003,-73.93580216278471 40.80955538843361)'); -- NYC line\n\nSELECT `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(\n JSON_OBJECT(\n 'geography',geo, -- line\n 'geography_radius', 100, -- Radius around line\n 'types', [\"restaurant\"],\n 'min_rating', 1.0,\n 'max_rating', 4.5,\n 'min_user_rating_count', 1,\n 'max_user_rating_count', 10000,\n 'price_level', ['PRICE_LEVEL_INEXPENSIVE', 'PRICE_LEVEL_MODERATE'],\n 'business_status', ['OPERATIONAL'],\n 'allows_dogs', TRUE\n )\n) as count;\n```\n\nThe response for the line:\n\nExample: Combine the results of multiple calls\n\nYou can combine the results of multiple calls to the `PLACES_COUNT` function.\nFor example, you want a single result showing the number of restaurants for\nthe following price levels within a specific area:\n\n- `PRICE_LEVEL_INEXPENSIVE`\n- `PRICE_LEVEL_MODERATE`\n- `PRICE_LEVEL_EXPENSIVE`\n- `PRICE_LEVEL_VERY_EXPENSIVE\"`\n\nIn this example, you create a loop to call the `PLACES_COUNT` function for each\nprice level, and insert the results of each call to a temporary table. You then\nquery the temporary table to display the results: \n\n```googlesql\n-- Create a temp table to hold the results.\nCREATE TEMP TABLE results (type STRING, count INT64);\n\n-- Create a loop that calls PLACES_COUNT for each price level.\nFOR types IN (SELECT type FROM UNNEST([\"PRICE_LEVEL_INEXPENSIVE\", \"PRICE_LEVEL_MODERATE\", \"PRICE_LEVEL_EXPENSIVE\", \"PRICE_LEVEL_VERY_EXPENSIVE\"]) as type)\nDO\n INSERT INTO results VALUES (types.type, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(\n JSON_OBJECT(\n 'types', [\"restaurant\"],\n 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building\n 'geography_radius', 1000, -- Radius in meters\n 'business_status', ['OPERATIONAL'],\n 'price_level', [types.type]\n )));\nEND FOR;\n\n-- Query the table of results.\nSELECT * FROM results;\n```\n\nThe combined response:\n\nAnother option is to use the `UNION ALL` command to combine the results of\nmultiple `SELECT` statements. The following example shows the same results as\nfrom the previous example: \n\n```googlesql\nSELECT \"PRICE_LEVEL_INEXPENSIVE\" as price_level, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(\n JSON_OBJECT(\n 'types', [\"restaurant\"],\n 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building\n 'geography_radius', 1000, -- Radius in meters\n 'business_status', ['OPERATIONAL'],\n 'price_level', ['PRICE_LEVEL_INEXPENSIVE']\n )\n) as count\n\nUNION ALL\n\nSELECT \"PRICE_LEVEL_MODERATE\" as price_level, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(\n JSON_OBJECT(\n 'types', [\"restaurant\"],\n 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building\n 'geography_radius', 1000, -- Radius in meters\n 'business_status', ['OPERATIONAL'],\n 'price_level', ['PRICE_LEVEL_MODERATE']\n )\n) as count\n\nUNION ALL\n\nSELECT \"PRICE_LEVEL_EXPENSIVE\" as price_level, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(\n JSON_OBJECT(\n 'types', [\"restaurant\"],\n 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building\n 'geography_radius', 1000, -- Radius in meters\n 'business_status', ['OPERATIONAL'],\n 'price_level', ['PRICE_LEVEL_EXPENSIVE']\n )\n) as count\n\nUNION ALL\n\nSELECT \"PRICE_LEVEL_VERY_EXPENSIVE\" as price_level, `maps-platform-analytics-hub.sample_places_insights_us.PLACES_COUNT`(\n JSON_OBJECT(\n 'types', [\"restaurant\"],\n 'geography', ST_GEOGPOINT(-73.9857, 40.7484), -- Empire State Building\n 'geography_radius', 1000, -- Radius in meters\n 'business_status', ['OPERATIONAL'],\n 'price_level', ['PRICE_LEVEL_VERY_EXPENSIVE']\n )\n) as count\n```"]]