סקירה כללית

במסמך הזה מוסבר איך ליצור דוחות דינמיים של נתונים גיאוגרפיים באמצעות Places Insights ו-Data Studio. כדי להפיק את המרב מנתוני המיקום, אתם יכולים לאפשר לבעלי עניין ללא רקע טכני לענות על השאלות שלהם בעצמם. במדריך הזה נסביר איך להפוך דוחות סטטיים לכלים אינטראקטיביים בסגנון מפת חום לניתוח שוק, בלי שתצטרכו לכתוב שאילתת SQL לכל בקשה. גישה לנתוני מיקום מורכבים, שמאפשרת לגשר על הפער בין הנדסת נתונים לבין בינה עסקית.
השימוש בתבנית הארכיטקטורה הזו מספק כמה יתרונות מרכזיים:
- ייצוג חזותי של נתונים: הפיכת הנתונים של Places Insights למפות ולתרשימים אינטראקטיביים שמציגים באופן מיידי את הצפיפות והמגמות במרחב.
- ניתוח פשוט בלי SQL: מאפשר לחברי הצוות, כמו אנליסטים של שוק או מתכנני נדל"ן, לסנן נתונים באופן דינמי באמצעות פרמטרים מוגדרים מראש (למשל, שינוי של "עיר" או "שעה ביום" באמצעות תפריטים נפתחים). הם יכולים לחקור את הנתונים בלי לכתוב אפילו שורה אחת של SQL.
- שיתוף פעולה חלק: תכונות השיתוף הרגילות של Data Studio מאפשרות לכם להפיץ את התובנות האינטראקטיביות האלה בצורה מאובטחת.
תהליך העבודה של הפתרון
תהליך העבודה הבא יוצר ארכיטקטורת דיווח יעילה. הוא עובר מקו בסיס סטטי לאפליקציה דינמית לחלוטין, ומבטיח את תקינות הנתונים לפני הוספת מורכבות.
דרישות מוקדמות
לפני שמתחילים, פועלים לפי ההוראות האלה כדי להגדיר את Places Insights. תצטרכו גישה ל-Data Studio, כלי שזמין ללא עלות.
שלב 1: קובעים קו בסיס גיאוגרפי סטטי
לפני שמוסיפים אינטראקטיביות, צריך ליצור שאילתת בסיס ולוודא שהיא מוצגת כמו שצריך ב-Data Studio. משתמשים ב-Places Insights וביכולות הגיאו-מרחביות של BigQuery כדי לצבור נתונים ברשתות משושות באמצעות מערכת ההוספה לאינדקס H3. כך יופק פלט של שאילתה שאפשר להשתמש בו עם סוג התרשים "מפה עם מילוי" ב-Data Studio לצורך המחשה חזותית.
1.1 קישור נתונים
כדי ליצור את החיבור הראשוני, משתמשים בשאילתה הסטטית הבאה. הוא מטרגט מיקום קבוע (לונדון) וקטגוריה (מסעדות) כדי לאמת את צינור עיבוד הנתונים.
SELECT
h3_index,
`carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
restaurant_count
FROM (
SELECT WITH AGGREGATION_THRESHOLD
`carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
COUNT(*) AS restaurant_count
FROM
-- Note: Change 'gb' to your target country code (e.g., 'us')
`places_insights___gb.places`
WHERE
'London' IN UNNEST(locality_names)
AND 'restaurant' IN UNNEST(types)
GROUP BY
h3_index
)
ORDER BY
restaurant_count DESC;
הערה לגבי צבירת נתונים מרחבית
השאילתה הזו משתמשת בפונקציה מ-Analytics Toolbox של CARTO (carto-os) שזמינה באופן ציבורי ב-Google Cloud BigQuery. הפונקציה H3_FROMGEOGPOINT ממירה נקודות מיקום ספציפיות לתאי H3, מערכת שמחלקת את העולם לתאי רשת משושים.
אנחנו משתמשים בטרנספורמציה הזו כי כדי להציג צבעים במפה המלאה ב-Data Studio, צריך להשתמש בפוליגונים (צורות). כך, במקום לשרטט אלפי נקודות חופפות, אפשר להמיר את הנקודות לצורות משושה ולהמחיש באופן חזותי את צפיפות העסקים באזור מסוים.
הערה לגבי הסף לצבירת נתונים
כל השאילתות של Places Insights מחייבות את הסעיף WITH AGGREGATION_THRESHOLD.
ההגנה הזו על הפרטיות מבטיחה שהנתונים יוחזרו רק אם הספירה המצטברת היא 5 או יותר.
בהקשר של התצוגה החזותית הזו, אם תא ברשת H3 מכיל פחות מ-5 מסעדות, התא הזה מושמט לגמרי מקבוצת התוצאות ויופיע ריק במפה.
כדי להטמיע את זה ב-Looker Studio:
- יוצרים דוח ריק חדש.
- בוחרים באפשרות BigQuery כמחבר של מקור הנתונים החיצוני.
- בתפריט הימני, לוחצים על CUSTOM QUERY ובוחרים את מזהה הפרויקט לחיוב.
- מדביקים את השאילתה הסטטית הבסיסית שלמעלה בעורך.
- מבטלים את הסימון של הפרמטרים SQL מדור קודם, טווח תאריכים ו-כתובת אימייל של הצופה.
- לוחצים על הוספה.
1.2 הגדרת התצוגה החזותית הגיאו-מרחבית
אחרי שהנתונים מקושרים, מגדירים את Data Studio כך שיזהה בצורה נכונה את נתוני הגבולות של H3:
- מוסיפים תצוגה חזותית של מפה מלאה לאזור העריכה של הדוח, מהתפריט הוספת תרשים.
- מוודאים שהשדה
h3_geo, שמכיל את הגיאומטריה של הפוליגון, מוגדר לסוג הנתונים Geospatial.- לוחצים על הסמל עריכת מקור הנתונים (עיפרון) לצד שם החיבור.
- אם
h3_geoמוגדר ל-Text (ABC), משתמשים בתפריט הנפתח כדי לבחור באפשרות Geo > Geospatial, - לוחצים על סיום.
- ממפים את השדה
h3_indexלמיקום (שמשמש כמזהה הייחודי). - ממפים את השדה
h3_geoל-Geospatial Field (שפועל כגיאומטריית הפוליגון). - ממפים את השדה
restaurant_countלמדד צבע.
הפעולה הזו תיצור מפה של צפיפות המסעדות לפי תא H3. כחול כהה יותר (אפשרות הצבע שמוגדרת כברירת מחדל) מציין תא עם מספר גבוה יותר של מסעדות.

שלב 2: מטמיעים פרמטרים דינמיים
כדי להפוך את הדוח לאינטראקטיבי, נוסיף לדוח פקדים שמאפשרים למשתמש לבחור מבין האפשרויות הבאות:
- יישוב: קובע את העיר שבה הדוח מתמקד.
- יום בשבוע: סינון מקומות לפי היום שבו הם פתוחים, באמצעות הרשומה
regular_opening_hoursבסכימה. - שעה ביום: סינון מקומות לפי שעות הפעילות שלהם, בהשוואה לשדות
start_timeו-end_time.
כדי לעשות את זה, תעבירו פרמטרים שהמשתמשים בחרו ישירות לשאילתה ששונתה ב-Places Insights בזמן הריצה. בעורך מקור הנתונים של Data Studio, צריך להגדיר את הפרמטרים האלה באופן מפורש כמשתנים מוקלדים.
ב-Data Studio, בוחרים בתפריט Resource ולוחצים על Manage added data sources. בחלונית שמופיעה, לוחצים על EDIT ליד מקור הנתונים של BigQuery Custom SQL שהוספנו קודם.
בחלון "עריכת החיבור", לוחצים על הוספת פרמטר. נוסיף שלושה פרמטרים עם הערכים הבאים.
| שם פרמטר | סוג הנתונים | ערכים מותרים | רשימת ערכים (חייבת להתאים בדיוק למסד הנתונים) | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
p_locality |
טקסט | רשימת ערכים |
|
||||||||||||||||
p_day_of_week |
טקסט | רשימת ערכים |
|
||||||||||||||||
p_hour_of_day |
טקסט | רשימת ערכים |
|
הגדרה לדוגמה של הפרמטר p_hour_of_day.

בפרמטר p_hour_of_day, שימו לב לעמודה Value.
בגלל ששאילתת ה-SQL משתמשת ב-CAST(@p_hour_of_day AS TIME), הערכים שמועברים מ-Data Studio חייבים להיות בפורמט HH:MM:SS (שעון של 24 שעות).
אחרי שמגדירים ושומרים את שלושת הפרמטרים, משנים את חיבור ה-SQL בהתאמה אישית ב-BigQuery כדי להפנות למשתנים האלה באמצעות התחביר @.
כדי לעשות את זה, לוחצים על Edit Connection (עריכת החיבור) ומדביקים את השאילתה הבאה:
SELECT
h3_index,
`carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
restaurant_count
FROM (
SELECT WITH AGGREGATION_THRESHOLD
`carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
COUNT(*) AS restaurant_count
FROM
`places_insights___gb.places`
WHERE
-- Dynamic locality filter based on parameter
@p_locality IN UNNEST(locality_names)
AND 'restaurant' IN UNNEST(types)
AND business_status = 'OPERATIONAL'
AND EXISTS (
SELECT 1
FROM UNNEST(
CASE @p_day_of_week
WHEN 'monday' THEN regular_opening_hours.monday
WHEN 'tuesday' THEN regular_opening_hours.tuesday
WHEN 'wednesday' THEN regular_opening_hours.wednesday
WHEN 'thursday' THEN regular_opening_hours.thursday
WHEN 'friday' THEN regular_opening_hours.friday
WHEN 'saturday' THEN regular_opening_hours.saturday
WHEN 'sunday' THEN regular_opening_hours.sunday
END
) AS hours
WHERE hours.start_time <= CAST(@p_hour_of_day AS TIME)
AND hours.end_time >= TIME_ADD(CAST(@p_hour_of_day AS TIME), INTERVAL 1 HOUR)
)
GROUP BY
h3_index
)
ORDER BY
restaurant_count DESC;
לוחצים על "חיבור מחדש" כדי לשמור את השינוי. בשאילתה ששיניתם, שימו לב למשתנים החדשים, כמו @p_hour_of_day, שתואמים לשמות הפרמטרים שהגדרתם.
חוזרים לאזור הדוחות כדי לחשוף את הפרמטרים האלה למשתמש הקצה:
- מוסיפים לדוח שלושה פקדים מסוג תפריט נפתח.
- בכל פקד, מגדירים את שדה הפקד כך שיתאים לפרמטרים החדשים שיצרתם:
- אמצעי בקרה 1:
p_locality - אמצעי בקרה 2:
p_day_of_week - אמצעי בקרה 3:
p_hour_of_day
- אמצעי בקרה 1:
הדוח הסופי אמור להיראות כך: שינוי של ערך באחד מהתפריטים הנפתחים יגרום ל-Data Studio לאחזר את הנתונים המבוקשים מ-Places Insights לפני שהם יוצגו במפה.

שלב 3: משתפים את התוצאות
כדי לשתף את הדוח, משתמשים בכלי השיתוף המובנה ב-Data Studio. כך הצופים יוכלו לעדכן באופן דינמי את התצוגה החזותית על סמך הפרמטרים שהם בוחרים מהרשימות הנפתחות.
סיכום
התבנית הזו יוצרת כלי דיווח אינטראקטיבי וניתן להתאמה, שמשתמש בכוח החישוב של BigQuery כדי להציג נתונים נצברים של Places Insights ב-Data Studio. הארכיטקטורה הזו מונעת את הבעיות שנוצרות כשמנסים להציג מערכי נתונים גולמיים עצומים, ומאפשרת למשתמשי הקצה לחקור נתונים במאפיינים שונים, כמו זמן, מיקום וסוג העסק, כמעט בזמן אמת. זהו כלי רב-עוצמה שמאפשר לבעלי עניין לא טכניים לחקור את הנתונים בצורה גמישה.
השלבים הבאים
כדי לראות וריאציות אחרות של דוחות דינמיים, אפשר להגדיר פרמטרים לחלקים שונים בסכימה של Places Insights:
- ניתוח דינמי של מתחרים: צרו פרמטר לשמות של
brandכדי לאפשר למשתמשים להחליף באופן מיידי את מפת החום בין מתחרים שונים, וכך לראות את הרוויה היחסית שלהם בשוק. במאמר מידע על הנתונים של Places Insights מוסבר על זמינות הנתונים של המותג. - בחירת אתר אינטראקטיבית: הוסיפו פרמטרים ל-
price_level(למשל, "בינוני" לעומת "יקר") ול-ratingמינימלי כדי לאפשר לצוותי הנדל"ן לסנן באופן דינמי אזורים שתואמים לפרופילים דמוגרפיים ספציפיים. - אזורי שירות בהתאמה אישית: במקום לסנן לפי שם העיר, מאפשרים למשתמשים להגדיר אזורי מחקר בהתאמה אישית.
- מבוסס-רדיוס: יוצרים שלושה פרמטרים מספריים: p_latitude, p_longitude ו-p_radius_meters. אפשר לקבל קואורדינטות מממשקי ה-API של הפלטפורמה של מפות Google, כולל Geocoding API. בשאילתה, מוסיפים את הפרמטרים הבאים לפונקציה ST_DWITHIN:
ST_DWITHIN(point, ST_GEOGPOINT(@p_longitude, @p_latitude), @p_radius_meters)
- מבוסס-מצולע: לצורות מורכבות בהתאמה אישית (כמו אזורי מכירות), המשתמשים לא יכולים להזין בקלות טקסט גיאומטרי. במקום זאת, צרו טבלת מיפוי ב-BigQuery שמכילה את הגיאומטריות של הצורות ואת השם הידידותי (למשל, "אזור א'"). יוצרים פרמטר טקסט
p_zone_nameב-Data Studio כדי לאפשר למשתמשים לבחור את האזור, ומשתמשים בשאילתת משנה כדי לאחזר את הגיאומטריה של הפונקציהST_CONTAINS.
- מבוסס-רדיוס: יוצרים שלושה פרמטרים מספריים: p_latitude, p_longitude ו-p_radius_meters. אפשר לקבל קואורדינטות מממשקי ה-API של הפלטפורמה של מפות Google, כולל Geocoding API. בשאילתה, מוסיפים את הפרמטרים הבאים לפונקציה ST_DWITHIN:
תורמים
- דוד שיינגרטן | מהנדס קשרי מפתחים
- Henrik Valve | מהנדס DevX