science این محصول یا ویژگی در Experimental (قبل از GA) است. محصولات و ویژگیهای Pre-GA ممکن است پشتیبانی محدودی داشته باشند، و تغییرات در محصولات و ویژگیهای pre-GA ممکن است با سایر نسخههای pre-GA سازگار نباشد. پیشنهادات قبل از GA تحت پوشش
شرایط خاص سرویس پلتفرم Google Maps هستند. برای اطلاعات بیشتر، به
توضیحات مرحله راه اندازی مراجعه کنید. برای آزمایش Places Insights
ثبت نام کنید !
PLACES_COUNT تابع
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
تابع PLACES_COUNT
یک مقدار تعداد مکان ها را بر اساس ناحیه جستجوی مشخص شده و فیلترهای جستجو برمی گرداند. شما باید ناحیه جستجو را برای تابع PLACES_COUNT
مشخص کنید و می توانید به صورت اختیاری پارامترهای فیلتر اضافی مانند نوع مکان، وضعیت عملیاتی، سطح قیمت و موارد دیگر را مشخص کنید.
از آنجایی که تابع PLACES_COUNT
یک مقدار واحد را برمی گرداند، آن را با استفاده از یک عبارت SELECT
فراخوانی کنید.
پارامترهای ورودی:
مورد نیاز : پارامتر فیلتر geography
که ناحیه جستجو را مشخص می کند. پارامتر geography
مقداری را می گیرد که توسط نوع داده BigQuery GEOGRAPHY
تعریف شده است که از نقاط، رشته های خطی و چند ضلعی ها پشتیبانی می کند.
اختیاری : پارامترهای فیلتر اضافی برای اصلاح جستجوی شما.
برمی گرداند:
- یک مقدار
count
واحد به عنوان یک INT64
.
مثال: تعداد مکان ها را در شعاع جستجو محاسبه کنید
سادهترین فراخوانی تابع PLACES_COUNT
تعداد واحدی از همه مکانها در یک منطقه جغرافیایی را برمیگرداند. در این مثال، شمارش تمام مکانهای عملیاتی در 1000 متری ساختمان امپایر استیت را برمیگردانید.
این مثال از تابع BigQuery ST_GEOGPOINT
برای برگرداندن یک مقدار GEOGRAPHY
از یک نقطه استفاده می کند.
SELECT `maps-platform-analytics-hub.sample_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
با حداقل امتیاز 3 - سطح قیمت ارزان یا متوسط
- در حال حاضر عملیاتی است
- به سگ ها اجازه می دهد
SELECT `maps-platform-analytics-hub.sample_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;
پاسخ فیلتر شده:

به یاد داشته باشید که پرس و جوهای مجموعه داده مکان حداقل آستانه شمارش 5 را اعمال می کنند. یکی از مزایای توابع شمارش مکان این است که آنها می توانند هر تعداد از جمله 0 را برگردانند. به عنوان مثال، فراخوانی زیر تعداد 1 را برمی گرداند:
SELECT `maps-platform-analytics-hub.sample_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;
مثال: تعداد رستوران ها را با استفاده از چند ضلعی محاسبه کنید
می توانید از یک چند ضلعی برای تعیین ناحیه جستجو استفاده کنید. هنگام استفاده از چند ضلعی، نقاط چند ضلعی باید یک حلقه بسته را تعریف کنند که اولین نقطه در چند ضلعی همان نقطه آخر باشد.
این مثال از تابع 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 `maps-platform-analytics-hub.sample_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;
پاسخ برای viewport:

مثال: تعداد رستوران ها را با استفاده از یک خط محاسبه کنید
در مثال بعدی، منطقه جستجو را با استفاده از خطی از نقاط متصل با شعاع جستجو 100 متر در اطراف خط تعریف می کنید. این خط شبیه به مسیر سفر محاسبه شده توسط Routes API است. مسیر ممکن است برای یک وسیله نقلیه، یک دوچرخه یا برای یک عابر پیاده باشد:
DECLARE geo GEOGRAPHY;
SET geo = ST_GEOGFROMTEXT('LINESTRING(-73.98903537033028 40.73655649223003,-73.93580216278471 40.80955538843361)'); -- NYC line
SELECT `maps-platform-analytics-hub.sample_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, `maps-platform-analytics-hub.sample_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;
پاسخ ترکیبی:

گزینه دیگر استفاده از دستور UNION ALL
برای ترکیب نتایج چند عبارت SELECT
. مثال زیر همان نتایج مثال قبلی را نشان می دهد:
SELECT "PRICE_LEVEL_INEXPENSIVE" as price_level, `maps-platform-analytics-hub.sample_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, `maps-platform-analytics-hub.sample_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, `maps-platform-analytics-hub.sample_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, `maps-platform-analytics-hub.sample_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
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2025-07-17 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-07-17 بهوقت ساعت هماهنگ جهانی."],[],[],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```"]]