science هذا المنتج أو الميزة قيد الاختبار (قبل طرحه للجميع). قد يكون الدعم المقدَّم للمنتجات والميزات في مرحلة ما قبل الإصدار العلني محدودًا، وقد لا تكون التغييرات التي يتم إجراؤها على المنتجات والميزات في مرحلة ما قبل الإصدار العلني متوافقة مع الإصدارات الأخرى من مرحلة ما قبل الإصدار العلني. تخضع "عروض مرحلة ما قبل الإطلاق"
للأحكام المحدّدة لخدمة Google Maps Platform. لمزيد من المعلومات، يُرجى الاطّلاع على
أوصاف مراحل الإطلاق.
الاشتراك لاختبار "إحصاءات الأماكن"
دالة PLACES_COUNT
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تعرض الدالة PLACES_COUNT
قيمة عددية واحدة للأماكن استنادًا إلى
فلاتر البحث ومساحة البحث المحدّدة. يجب تحديد مساحة البحث للدالة PLACES_COUNT
، ويمكنك اختياريًا تحديد مَعلمات فلترة إضافية، مثل نوع المكان وحالة التشغيل ومستوى السعر وغير ذلك.
بما أنّ الدالة PLACES_COUNT
تعرض قيمة واحدة، استدعِها باستخدام عبارة SELECT
.
مَعلمات الإدخال:
مطلوبة: geography
مَعلمة الفلترة التي تحدّد مساحة البحث. تأخذ المَعلمة geography
قيمة محدّدة
حسب نوع البيانات
GEOGRAPHY
في BigQuery، والذي يتيح استخدام النقاط والخطوط المتعددة والمضلّعات.
اختياري: مَعلمات الفلتر الإضافية لتحسين البحث.
المرتجعات:
- قيمة
count
واحدة كـ INT64
مثال: احتساب عدد الأماكن ضمن نطاق بحث
يعرض أبسط استدعاء للدالة PLACES_COUNT
عددًا واحدًا لجميع الأماكن
في منطقة جغرافية. في هذا المثال، يتم عرض عدد جميع الأماكن المفتوحة ضمن مسافة 1, 000 متر من مبنى Empire State.
يستخدم هذا المثال الدالة 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;
الردّ على إطار العرض:

مثال: احتساب عدد المطاعم باستخدام خط
في المثال التالي، يتم تحديد مساحة البحث باستخدام خط من النقاط المتصلة بنصف قطر بحث يبلغ 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 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة 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```"]]