הפונקציה 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 שמכילה את האזורים הגיאוגרפיים לניתוח. הטבלה חייבת לכלול את העמודות הבאות: -
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_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')] ) ) );