science Este producto o función está en fase experimental (previa a la DG). Los productos y las funciones que se encuentran en la fase previa a la DG pueden tener asistencia limitada, y los cambios en estos productos y funciones podrían no ser compatibles con otras versiones de la fase previa a la DG. Las ofertas que se encuentran en la fase previa a la DG se rigen por las Condiciones Específicas del Servicio de Google Maps Platform. Para obtener más información, consulta las descripciones de las etapas de lanzamiento. Regístrate para probar las estadísticas de Places.
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
La función PLACES_COUNT devuelve un solo valor de recuento de lugares según el área de búsqueda y los filtros de búsqueda especificados. Debes especificar el área de búsqueda en la función PLACES_COUNT y, de manera opcional, puedes especificar parámetros de filtro adicionales, como el tipo de lugar, el estado operativo, el nivel de precios y mucho más.
Dado que la función PLACES_COUNT devuelve un solo valor, llámala con una cláusula SELECT.
Parámetros de entrada:
Obligatorio: El parámetro de filtrogeography que especifica el área de búsqueda. El parámetro geography toma un valor definido por el tipo de datos GEOGRAPHY de BigQuery, que admite puntos, cadenas de líneas y polígonos.
Opcional: Son parámetros de filtro adicionales para definir mejor tu búsqueda.
Se muestra lo siguiente:
Un solo valor de count como INT64.
Ejemplo: Calcula la cantidad de lugares en un radio de búsqueda
La llamada a la función PLACES_COUNT más simple devuelve un solo recuento de todos los lugares en un área geográfica. En este ejemplo, se devuelve el recuento de todos los lugares operativos a menos de 1,000 metros del Empire State Building.
En este ejemplo, se usa la función ST_GEOGPOINT de BigQuery para devolver un valor de GEOGRAPHY a partir de un punto.
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;
La respuesta contiene un solo recuento:
Una llamada más típica aplica filtros al área de búsqueda. En el siguiente ejemplo, se usan filtros para limitar la búsqueda y mostrar solo un recuento de lo siguiente:
Lugares del tipo restaurant con una calificación mínima de 3
Un nivel de precios económico o medio
Actualmente operativo
Se permiten perros
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;
La respuesta filtrada:
Recuerda que las consultas de conjuntos de datos de lugares aplican un umbral de recuento mínimo de 5. Una de las ventajas de las funciones de recuento de lugares es que pueden devolver cualquier recuento, incluido el 0. Por ejemplo, la siguiente llamada devuelve un recuento de 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;
Ejemplo: Calcula la cantidad de restaurantes con un polígono
Puedes usar un polígono para especificar el área de búsqueda. Cuando se usa un polígono, sus puntos deben definir un bucle cerrado en el que el primer punto del polígono sea el mismo que el último.
En este ejemplo, se usa la función ST_GEOGFROMTEXT de BigQuery para devolver un valor GEOGRAPHY de un polígono.
Ejemplo: Calcula la cantidad de restaurantes con una línea
En el siguiente ejemplo, definirás el área de búsqueda con una línea de puntos conectados con un radio de búsqueda de 100 metros alrededor de la línea.
La línea es similar a una ruta de viaje calculada por la API de Routes. La ruta puede ser para un vehículo, una bicicleta o un peatón:
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;
La respuesta de la línea:
Ejemplo: Combina los resultados de varias llamadas
Puedes combinar los resultados de varias llamadas a la función PLACES_COUNT.
Por ejemplo, deseas un solo resultado que muestre la cantidad de restaurantes para los siguientes niveles de precios dentro de un área específica:
PRICE_LEVEL_INEXPENSIVE
PRICE_LEVEL_MODERATE
PRICE_LEVEL_EXPENSIVE
PRICE_LEVEL_VERY_EXPENSIVE"
En este ejemplo, crearás un bucle para llamar a la función PLACES_COUNT para cada nivel de precios y, luego, insertarás los resultados de cada llamada en una tabla temporal. Luego, consultas la tabla temporal para mostrar los resultados:
-- 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;
La respuesta combinada:
Otra opción es usar el comando UNION ALL para combinar los resultados de varias instrucciones SELECT. En el siguiente ejemplo, se muestran los mismos resultados que en el ejemplo anterior:
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
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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```"]]