ספירת נקודות עניין בשאילתות

הפונקציה PLACES_COUNT_V2 מחזירה טבלה ב-BigQuery שמכילה ספירות של מקומות ומזהים לדוגמה של מקומות עבור כמה אזורים גיאוגרפיים של קלט, על סמך מסננים שצוינו. הפונקציה הזו מיועדת לעיבוד ברצף (batch processing) יעיל. היא מקבלת פרמטר של טבלת קלט של אזורים גיאוגרפיים, וכך מאפשרת לכם לנתח אזורים רבים שמעניינים אתכם בשאילתה אחת, על ידי ציון האזורים הגיאוגרפיים דרך טבלת קלט.

תחביר

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

פרמטרים

  • PROJECT_NAME: השם של הפרויקט ב-Google Cloud.
  • LINKED_DATASET_NAME: השם של מערך הנתונים ב-BigQuery שמכיל את הפונקציות של Places Insights (למשל, places_insights___us).
  • input_geographies: טבלה ב-BigQuery שמכילה את המיקומים הגיאוגרפיים לניתוח. הטבלה הזו חייבת לכלול את העמודות הבאות:
    • geo_id (STRING): מזהה ייחודי לכל אזור גיאוגרפי.
    • geo (GEOGRAPHY): אובייקט ה-GEOGRAPHY ב-BigQuery שמייצג את האזור. זה יכול להיות נקודה, מצולע או סוג אחר של מיקום גיאוגרפי.
  • filters (JSON): אובייקט JSON שמכיל צמדי מפתח-ערך לסינון המקומות. מידע על פרמטרים של מסננים

סכימת טבלת הפלט

הפונקציה PLACES_COUNT_V2 מחזירה טבלה עם העמודות הבאות:

שם העמודה סוג הנתונים תיאור
geo_id STRING המזהה הייחודי של המיקום הגיאוגרפי של הקלט, מהטבלה input_geographies.
input_geography GEOGRAPHY אובייקט ה-GEOGRAPHY המקורי מהטבלה input_geographies.
place_count INTEGER המספר הכולל של המקומות שתואמים למסננים.
sample_place_ids ARRAY<STRING> מערך של עד 250 מזהי מקומות שתואמים לקריטריונים.

איך זה עובד

הפונקציה מעבדת כל שורה בטבלה input_geographies. לכל geo אובייקט, הפונקציה סופרת את מספר המקומות שנמצאים בתוך האזור הגיאוגרפי (או בתוך geography_radius אם geo הוא נקודה והרדיוס מצוין ב- filters). הספירה כוללת רק את המקומות שתואמים לכל התנאים שמוגדרים באובייקט ה-JSON‏ filters.

דוגמה: חישוב מספר המסעדות בשלושה מחוזות בעיר ניו יורק

בדוגמה הזו נוצרת טבלה עם מספר המסעדות הפעילות בשלושה מחוזות בעיר ניו יורק.

בדוגמה הזו נעשה שימוש בנתונים של לשכת מפקד האוכלוסין של ארצות הברית, שהם מערך נתונים ציבורי ב-BigQuery, כדי לקבל את הגבולות של שלוש מחוזות בניו יורק: Queens,‏ Kings ו-New York. הגבולות של כל מחוז מופיעים בעמודה county_geom.

קודם אנחנו יוצרים טבלה זמנית new_york_counties כדי לאחסן את geo_id ואת GEOGRAPHY הפשוט לכל מחוז.

SELECT *
FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_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")
  ),
  JSON_OBJECT(
      'types', ["restaurant"],
      'business_status', ['OPERATIONAL']
  )
);

בטבלת התגובה יהיו שלוש שורות, אחת לכל מחוז, עם השדות geo_id, input_geography, place_count ו-sample_place_ids של מסעדות פעילות.

תוצאות של פונקציית ספירת מקומות במחוזות בניו יורק.

היתרונות של השימוש ב-PLACES_COUNT_V2

ל-PLACES_COUNT_V2 יש יתרונות משמעותיים בהשוואה ל-PLACES_COUNT ול-PLACES_COUNT_PER_GEO:

  • עיבוד באצווה: אפשר לנתח ביעילות אלפי מיקומים גיאוגרפיים מותאמים אישית בשאילתה אחת על ידי הזנת כמה מיקומים גיאוגרפיים בטבלה.
  • ביצועים: נעשה שימוש בצירופים גיאו-מרחביים מותאמים של BigQuery, שמציעים יתרונות משמעותיים במהירות עבור מערכי נתונים גדולים.
  • יכולת הרחבה: הממשק הזה מיועד לטיפול במספר גדול של מיקומי קלט גיאוגרפיים בלי המגבלות של גודל פרמטר JSON יחיד.
  • כולל ספירות אפס: PLACES_COUNT_V2 מחזירה שורה לכל geo_id שמופיע בטבלת הקלט. אם אין מקומות שעומדים בקריטריונים באזור גיאוגרפי מסוים, הערך של place_count יהיה 0. כך תוכלו לקבל תוצאה לכל אזור קלט, ולראות איפה אין מקומות.
  • תמונות מצב היסטוריות: אפשר להריץ שאילתה על נתוני ספירת מקומות מחודש מסוים באמצעות המסנן האופציונלי snapshot_date.

דוגמה: שאילתה של ספירת נקודות עניין מחודש קודם

בדוגמה הזו מוסבר איך לשלוח שאילתה לגבי נתוני היסטוריה של מספר הנקודות של עניין במיקומים ספציפיים באמצעות הפרמטר snapshot_date. הוא מסנן את התוצאות לפי מקומות עם מתקני טעינה לרכבים חשמליים שצוינו על ידי max_ev_max_charge_rate_kw לצד regular_opening_hours ספציפיים.

SELECT *
FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_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")
  ),
  JSON_OBJECT(
    'geography_radius', 5000,
    'snapshot_date', '2026-01', -- Target snapshot month (YYYY-MM)
    'max_ev_max_charge_rate_kw', 30.0, -- Filter by EV charge rate in kW
    'regular_opening_hours', JSON_OBJECT(
      'monday', [JSON_OBJECT('start_time', '09:00', 'end_time', '12:00')]
    )
  )
);