پرس‌وجو کردن تعداد نقاط جالب براساس نوع مکان

تابع PLACES_COUNT_PER_TYPE_V2 جدول BigQuery حاوی تعداد مکان‌ها و نمونه «شناسه‌های مکان» را که براساس نوع مکان برای چندین جغرافیای ورودی تفکیک شده‌اند برمی‌گرداند. این تابع برای پردازش دسته‌ای کارآمد با پذیرش پارامتر جدول ورودی مناطق جغرافیایی طراحی شده است. جغرافیاها را ازطریق جدول ورودی ارائه می‌دهید و انواع مکان را به‌صورت آرایه مشخص می‌کنید.

نحو

SELECT * FROM `PROJECT_NAME.LINKED_DATASET_NAME.PLACES_COUNT_PER_TYPE_V2`(
  TABLE input_geographies,
  target_types,
  filters
)

پارامترها

  • PROJECT_NAME: نام پروژه Google Cloud شما.
  • LINKED_DATASET_NAME: نام مجموعه داده BigQuery حاوی توابع «اطلاعات آماری جاها» (مثلاً places_insights___us).
  • input_geographies: جدول BigQuery حاوی مناطق جغرافیایی برای تجزیه‌وتحلیل. این جدول باید شامل ستون‌های زیر باشد:
    • ‫geo_id (STRING): شناسه یکتا برای هر منطقه جغرافیایی.
    • geo (GEOGRAPHY): شیء GEOGRAPHY در BigQuery که نشان‌دهنده منطقه است. این می‌تواند نقطه، چندضلعی، یا نوع جغرافیایی دیگری باشد.
  • ‫target_types (آرایه<رشته>): آرایه‌ای از رشته‌های نوع مکان که می‌خواهید تعداد آن‌ها را دریافت کنید. مکان‌ها درصورتی شمارش می‌شوند که با هرکدام از انواع فهرست‌شده در آرایه types خود مطابقت داشته باشند، نه فقط با primary_type.
  • filters (JSON): شیء JSON حاوی جفت‌های کلید-مقدار برای فیلتر کردن بیشتر مکان‌ها. پارامترهای فیلتر را ببینید.

طرح جدول خروجی

تابع PLACES_COUNT_PER_TYPE_V2 جدولی با ستون‌های زیر برمی‌گرداند:

نام ستون نوع داده شرح
geo_id STRING شناسه یکتای جغرافیای ورودی، از جدول input_geographies.
input_geography GEOGRAPHY شیء GEOGRAPHY اصلی از جدول input_geographies.
place_type STRING نوع مکان از آرایه target_types که این ردیف نشان می‌دهد.
place_count INTEGER تعداد مکان‌های منطبق با place_type و فیلترهای دیگر در داخل یا نزدیک منطقه جغرافیایی.
sample_place_ids ARRAY<STRING> آرایه‌ای از حداکثر ۲۵۰ شناسه مکان که با معیارهای این نوع و جغرافیا مطابقت دارد.

برونداد حاوی ردیفی برای هر ترکیب geo_id و place_type مشخص‌شده در آرایه target_types خواهد بود، حتی اگر تعداد صفر باشد.

روش کار

این تابع هر منطقه جغرافیایی ارائه‌شده در جدول input_geographies را پردازش می‌کند. برای هر منطقه جغرافیایی، مکان‌هایی را که با هرکدام از انواع فهرست‌شده در آرایه target_types مطابقت داشته باشند و همچنین همه شرایط موجود در شیء JSON‏ filters را برآورده کنند می‌شمارد. نتایج به‌تفکیک هر geo_id و هر نوع در target_types جمع‌آوری و تفکیک می‌شود.

مثال: شمارش انواع مختلف غذاخوری‌ها در شهرستان‌های نیویورک

این مثال جدولی از تعداد انواع «رستوران»، «کافه»، و «بار» را در سه شهرستان شهر نیویورک تولید می‌کند.

SELECT geo_id, input_geography, place_type, place_count
FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_TYPE_V2`(
  (
    SELECT county_name AS geo_id,
           ST_SIMPLIFY(county_geom, 100) AS geo
    FROM
      `bigquery-public-data.geo_us_boundaries.counties`
    WHERE
      state_fips_code = "36"  -- New York State
      AND county_name IN ("Queens", "Kings", "New York")
  ),
  ['restaurant', 'cafe', 'bar'],  -- target_types
  JSON_OBJECT(
      'business_status', ['OPERATIONAL']
  )
);

نتیجه جدولی با ۹ ردیف خواهد بود (۳ شهرستان * ۳ نوع). هر ردیف تعداد «رستوران»، «کافه»، یا «بار» را در هر شهرستان نشان می‌دهد. اگر «شناسه‌های مکان» نمونه را به عبارت SELECT اضافه کنید، می‌توانید آن‌ها را نیز اضافه کنید.

نتایج تابع «تعداد مکان‌ها براساس نوع» در شهرستان‌های نیویورک.

مزایای استفاده از PLACES_COUNT_PER_TYPE_V2

PLACES_COUNT_PER_TYPE_V2 چندین مزیت کلیدی دارد، به‌ویژه وقتی با تابع قدیمی‌تر PLACES_COUNT_PER_TYPE مقایسه می‌شود:

  • پردازش دسته‌ای مناطق جغرافیایی: برخلاف PLACES_COUNT_PER_TYPE که هر بار یک منطقه جغرافیایی را پردازش می‌کند، PLACES_COUNT_PER_TYPE_V2 TABLE مناطق جغرافیایی ورودی را می‌پذیرد. این به شما امکان می‌دهد تا تعدادهای خاص نوع را در چندین جغرافیای مختلف (نقاط، چندضلعی‌ها) در یک پرسمان واحد تحلیل و دریافت کنید، به‌جای اینکه چندین فراخوانی تابع انجام دهید.
  • عملکرد و مقیاس‌پذیری بهبودیافته: با گرفتن ورودی جدول، PLACES_COUNT_PER_TYPE_V2 می‌تواند از اتصال‌های جغرافیایی-فضایی بهینه‌شده BigQuery و قابلیت‌های پردازش موازی در همه جغرافیای ارائه‌شده به‌طور هم‌زمان بهره ببرد. این امر منجر به بهبود قابل‌توجه عملکرد و مقیاس‌پذیری بهتر هنگام سروکار داشتن با تعداد زیادی از مناطق جغرافیایی می‌شود.
  • شامل تعداد صفر: ردیف‌هایی را با تعداد ۰ برای انواع پیدا نشده در یک منطقه خاص در دسته برمی‌گرداند، که مجموعه نتایج کاملی را برای همه ترکیب‌های نوع-جغرافیا تضمین می‌کند.
  • عکس‌های آنی تاریخی: بااستفاده از فیلتر اختیاری snapshot_date، داده‌های تعداد مکان را از یک ماه خاص پُرسمان کنید.

مثال: پرسمان تعداد نقاط موردعلاقه تاریخی براساس نوع با فیلترهای خاص

این مثال نشان می‌دهد که چگونه می‌توان بااستفاده از پارامتر snapshot_date برای بازیابی تعداد در ماه گذشته، تعداد انواع مکان‌های خاص، مانند ایستگاه‌های شارژ خودرو برقی، را پیدا کرد. این فیلترهای اضافی را برای regular_opening_hours اعمال می‌کند تا فقط مکان‌هایی را جستجو کند که در روزهای آخر هفته تمام روز باز هستند و شارژ خودرو برقی (حداقل ۱۰ رابط موجود) که توسط min_ev_charge_connector_count مشخص شده است، دردسترس باشد.

SELECT *
FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_TYPE_V2`(
  (
    SELECT county_name AS geo_id,
           ST_SIMPLIFY(county_geom, 100) AS geo
    FROM
      `bigquery-public-data.geo_us_boundaries.counties`
    WHERE
      state_fips_code = "36"  -- New York State
      AND county_name IN ("Queens", "Kings", "New York")
  ),
  ['electric_vehicle_charging_station'], -- target_types array
  JSON_OBJECT(
    'geography_radius', 10000,
    'snapshot_date', '2026-01', -- Target snapshot month (YYYY-MM)
    'min_ev_charge_connector_count', 10, -- Look for a min amount of chargers
    'regular_opening_hours', JSON_OBJECT(
      'saturday', [JSON_OBJECT('start_time', '00:00', 'end_time', '23:59')], 'sunday', [JSON_OBJECT('start_time', '00:00', 'end_time', '23:59')]
    )
  )
);