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

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

תחביר

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 (למשל, places_insights___us).
  • ‫input_geographies: טבלה ב-BigQuery שמכילה את האזורים הגיאוגרפיים לניתוח. הטבלה חייבת לכלול את העמודות הבאות:
    • geo_id (STRING): מזהה ייחודי לכל אזור גיאוגרפי.
    • ‫geo (GEOGRAPHY): אובייקט GEOGRAPHY ב-BigQuery שמייצג את האזור. המיקום יכול להיות נקודה, פוליגון או סוג גיאוגרפי אחר.
  • ‫target_types (ARRAY<STRING>): מערך של מחרוזות של סוגי מקומות שרוצים לקבל את הספירות שלהם. מקומות ייספרו אם הם תואמים לכל אחד מהסוגים שמופיעים במערך 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> מערך של עד 250 מזהי מקומות שתואמים לקריטריונים של הסוג והמיקום הגיאוגרפי הזה.

הפלט יכיל שורה לכל שילוב של 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']
  )
);

התוצאה תהיה טבלה עם 9 שורות (3 מחוזות * 3 סוגים). בכל שורה יוצג מספר המקומות מסוג "מסעדה", "בית קפה" או "בר" בכל מחוז. אפשר גם לכלול מזהי מקומות לדוגמה אם מוסיפים אותם להצהרת SELECT.

תוצאות של הפונקציה Places Count Per Type במחוזות של ניו יורק.

היתרונות של השימוש ב-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 ואת יכולות העיבוד המקבילי בכל האזורים הגיאוגרפיים שצוינו בו-זמנית. כך אפשר לשפר משמעותית את הביצועים ואת יכולת ההתאמה לעומס (scalability) כשמדובר במספר גדול של אזורים גיאוגרפיים.
  • כולל ספירות אפס: החזרת שורות עם ספירות של 0 לסוגים שלא נמצאו באזור ספציפי בתוך האצווה, כדי להבטיח קבוצת תוצאות מלאה לכל השילובים של סוג ומיקום גיאוגרפי.
  • תמונות מצב היסטוריות: אפשר להריץ שאילתה על נתוני ספירת המקומות מחודש ספציפי באמצעות המסנן האופציונלי snapshot_date.

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

בדוגמה הזו אפשר לראות איך למצוא את מספר המקומות מסוג מסוים, כמו תחנות טעינה לרכב חשמלי, באמצעות הפרמטר snapshot_date כדי לאחזר את המספרים בחודש קודם. הוא מחיל מסננים נוספים על regular_opening_hours כדי לחפש רק מקומות שפתוחים כל היום בסופי שבוע, וזמינות של טעינת רכב חשמלי (לפחות 10 מחברים זמינים) שצוינה על ידי 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')]
    )
  )
);