نظرة عامة

توضّح هذه المقالة كيفية إنشاء تقارير جغرافية مكانية ديناميكية باستخدام Places Insights و "مركز البيانات". يمكنك الاستفادة من بيانات الموقع الجغرافي من خلال منح أصحاب المصلحة غير الفنيين إمكانية الإجابة عن أسئلتهم بأنفسهم. يوضّح لك هذا الدليل كيفية تحويل التقارير الثابتة إلى أدوات تفاعلية على شكل خريطة حرارية لتحليل السوق، بدون الحاجة إلى كتابة طلبات بحث بلغة SQL لكل طلب. يمكنك منح إذن الوصول إلى بيانات الموقع الجغرافي المعقّدة، ما يقلّل الفجوة بين هندسة البيانات وذكاء الأعمال.
يوفّر استخدام هذا النمط المعماري عدة مزايا رئيسية:
- عرض البيانات بشكل مرئي: يتم تحويل بيانات إحصاءات الأماكن إلى خرائط ورسوم بيانية تفاعلية توضّح على الفور الكثافة المكانية والاتجاهات.
- استكشاف مبسط بدون استخدام SQL: يمكن لأعضاء الفريق، مثل محلّلي السوق أو مخطّطي العقارات، فلترة البيانات بشكل ديناميكي باستخدام مَعلمات محدّدة مسبقًا (مثل تغيير "المدينة" أو "الوقت من اليوم" باستخدام القوائم المنسدلة). ويمكنهم استكشاف البيانات بدون كتابة أي سطر من لغة SQL.
- تعاون سلس: تتيح لك ميزات المشاركة العادية في "مركز البيانات" توزيع هذه الإحصاءات التفاعلية بأمان.
سير عمل الحلّ
يضع سير العمل التالي بنية أساسية فعّالة لإعداد التقارير. وينتقل من خط أساس ثابت إلى تطبيق ديناميكي بالكامل، ما يضمن صحة البيانات قبل إضافة أي تعقيد.
المتطلبات الأساسية
قبل البدء، اتّبِع هذه التعليمات لإعداد Places Insights. ستحتاج إلى إذن الوصول إلى "مركز البيانات"، وهو أداة مجانية.
الخطوة 1: وضع خط أساس جغرافي مكاني ثابت
قبل إضافة التفاعل، ضَع طلب بحث أساسيًا وتأكّد من عرضه بشكل صحيح في "مركز البيانات". استخدِم إحصاءات الأماكن وإمكانات BigQuery الجغرافية المكانية لتجميع البيانات في شبكات سداسية باستخدام نظام الفهرسة H3. سيؤدي ذلك إلى إنشاء ناتج طلب بحث يمكن استخدامه مع نوع الرسم البياني "الخريطة الملوّنة" في "مركز البيانات" للعرض.
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;
ملاحظة حول التجميع المكاني
يستخدم طلب البحث هذا دالة من
CARTO Analytics
Toolbox (carto-os) متاحة للجميع في Google Cloud BigQuery. تحوِّل الدالة
H3_FROMGEOGPOINT نقاط مواقع جغرافية معيّنة إلى خلايا
H3،
وهو نظام يقسّم العالم إلى خلايا شبكة سداسية.
نستخدم هذا التحويل لأنّ "الخريطة الملوّنة" في "مركز البيانات" تتطلّب مضلّعات (أشكال) لعرض الألوان. من خلال تحويل النقاط إلى أشكال سداسية، يمكننا عرض كثافة المؤسسات في منطقة معيّنة، بدلاً من رسم آلاف النقاط المتراكبة.
ملاحظة حول حدّ التجميع
تتطلّب جميع طلبات البحث في Places Insights عبارة WITH AGGREGATION_THRESHOLD.
تضمن هذه الحماية للخصوصية عدم عرض البيانات إلا إذا كان العدد المجمّع 5 أو أكثر.
في سياق هذا العرض، إذا كانت خلية شبكة H3 تحتوي على أقل من 5 مطاعم، يتم حذف هذه الخلية من مجموعة النتائج بالكامل وستظهر فارغة على خريطتك.
لتنفيذ ذلك في "مركز البيانات":
- أنشئ تقريرًا فارغًا جديدًا.
- اختَر BigQuery كأداة ربط البيانات.
- اختَر طلب بحث مخصّص من القائمة اليمنى، ثم اختَر رقم تعريف المشروع الذي يتم تحصيل الرسوم منه.
- الصِق طلب البحث الأساسي الثابت أعلاه في المحرّر.
- ألغِ تحديد المَعلمات استخدام لغة SQL القديمة وتفعيل النطاق الزمني وتفعيل عنوان البريد الإلكتروني للمشاهد.
- انقر على إضافة.
1.2 إعداد العرض الجغرافي المكاني
بعد ربط البيانات، اضبط "مركز البيانات" للتعرّف على بيانات حدود H3 بشكل صحيح:
- أضِف عرضًا خريطة ملوّنة إلى لوحة عرض التقرير من قائمة إضافة رسم بياني.
- تأكّد من أنّ حقل
h3_geo، الذي يحتوي على هندسة المضلّع، مضبوط على نوع البيانات جغرافي مكاني.- انقر على رمز تعديل مصدر البيانات (قلم رصاص) بجانب اسم الاتصال.
- إذا كان
h3_geoمضبوطًا على نص (ABC)، استخدِم القائمة المنسدلة لاختيار جغرافي > جغرافي مكاني. - انقر على تم.
- اربط حقل
h3_indexبـ الموقع الجغرافي (الذي يعمل كمعرّف فريد). - اربط حقل
h3_geoبـ الحقل الجغرافي المكاني (الذي يعمل كهندسة المضلّع). - اربط حقل
restaurant_countبـ مقياس اللون.
سيؤدي ذلك إلى عرض خريطة لكثافة المطاعم حسب خلية H3. يشير اللون الأزرق الداكن (خيار اللون التلقائي) إلى خلية تحتوي على عدد أكبر من المطاعم.

الخطوة 2: تنفيذ المَعلمات الديناميكية
لجعل التقرير تفاعليًا، سنضيف عناصر تحكّم إلى التقرير تسمح للمستخدم بالاختيار من بين الخيارات التالية:
- المحلية: تتحكّم في المدينة التي يركّز عليها التقرير.
- يوم الأسبوع: يتم فلترة الأماكن استنادًا إلى اليوم الذي تكون فيه مفتوحة، باستخدام سجلّ
regular_opening_hoursفي المخطّط. - ساعة اليوم: يتم فلترة الأماكن استنادًا إلى ساعات عملها من خلال المقارنة مع الحقلَين
start_timeوend_time.
لتحقيق ذلك، ستمرِّر المَعلمات التي يختارها المستخدم مباشرةً إلى طلب بحث معدَّل في إحصاءات الأماكن في وقت التشغيل. في محرّر مصدر البيانات في "مركز البيانات"، عليك تحديد هذه المَعلمات بشكل صريح كمتغيّرات مكتوبة.
في "مركز البيانات"، انقر على قائمة المورد ، ثم على إدارة مصادر البيانات المضافة. في اللوحة التي تظهر، انقر على 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)، يجب أن تكون القيم التي يتم تمريرها من "مركز البيانات" بتنسيق HH:MM:SS (ساعة 24) صارم.
بعد إعداد جميع المَعلمات الثلاث وحفظها، عدِّل اتصال BigQuery Custom SQL للإشارة إلى هذه المتغيّرات باستخدام بنية @.
يمكنك إجراء ذلك من خلال النقر على "تعديل الاتصال" ولصق طلب البحث المعدَّل أدناه:
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:
يجب أن يبدو تقريرك النهائي على النحو التالي. سيؤدي تغيير قيمة في أحد عناصر التحكّم المنسدلة إلى أن يجلب "مركز البيانات" البيانات المطلوبة من Places Insights قبل عرضها على الخريطة.

الخطوة 3: مشاركة النتائج
استخدِم أداة المشاركة المضمّنة في "مركز البيانات" لمشاركة التقرير. سيسمح ذلك للمشاهدين بتعديل العرض بشكل ديناميكي استنادًا إلى المَعلمات التي يختارونها من القوائم المنسدلة.
الخاتمة
ينشئ هذا النمط أداة إعداد تقارير تفاعلية وقابلة للتوسّع تستفيد من قوة الحوسبة في BigQuery لعرض بيانات إحصاءات الأماكن المجمّعة في "مركز البيانات". تتجنّب هذه البنية الأساسية المشاكل المحتملة لمحاولة عرض مجموعات البيانات الأولية الضخمة وتمنح المستخدمين النهائيين المرونة لاستكشاف البيانات على مستوى سمات مختلفة، مثل الوقت والموقع الجغرافي ونوع المؤسسة، في الوقت الفعلي تقريبًا. هذه أداة فعّالة لمنح أصحاب المصلحة غير الفنيين المرونة لاستكشاف البيانات.
الخطوات التالية
استكشِف أشكالاً أخرى من التقارير الديناميكية من خلال تحديد مَعلمات لأجزاء مختلفة من مخطّط إحصاءات الأماكن:
- تحليل ديناميكي للمنافسين: أنشئ مَعلمة لأسماء
brandللسماح للمستخدمين بتبديل خريطة التمثيل اللوني على الفور بين المنافسين المختلفين للاطّلاع على مدى انتشارهم النسبي في السوق. راجِع مقالة لمحة عن بيانات إحصاءات الأماكن للاطّلاع على مدى توفّر بيانات العلامات التجارية. - اختيار تفاعلي للموقع الجغرافي: أضِف مَعلمات لـ
price_level(مثل "متوسط" مقابل "باهظ") وratingكحد أدنى للسماح لفِرق العقارات بالفلترة بشكل ديناميكي للمناطق التي تتطابق مع ملفات ديمغرافية معيّنة. - مناطق التجميع المخصّصة: بدلاً من الفلترة حسب اسم المدينة، اسمح للمستخدمين بتحديد مناطق دراسة مخصّصة.
- استنادًا إلى النطاق: أنشئ ثلاث مَعلمات رقمية: p_latitude وp_longitude وp_radius_meters. يمكن الحصول على الإحداثيات من منصة خرائط Google APIs، بما في ذلك Geocoding API. في طلب البحث، أدخِل هذه الإحداثيات في الدالة ST_DWITHIN:
ST_DWITHIN(point, ST_GEOGPOINT(@p_longitude, @p_latitude), @p_radius_meters)
- استنادًا إلى المضلّع: بالنسبة إلى الأشكال المخصّصة المعقّدة (مثل المناطق الجغرافية للمبيعات)، لا يمكن للمستخدمين إدخال نص الهندسة بسهولة. بدلاً من ذلك، أنشئ جدول بحث في BigQuery يحتوي على أشكال الهندسة وأسماء سهلة الاستخدام (مثل "المنطقة أ"). أنشئ مَعلمة نصية
p_zone_nameفي "مركز البيانات" للسماح للمستخدمين باختيار المنطقة، واستخدِم طلب بحث فرعيًا لاسترداد الهندسة للدالةST_CONTAINS.
- استنادًا إلى النطاق: أنشئ ثلاث مَعلمات رقمية: p_latitude وp_longitude وp_radius_meters. يمكن الحصول على الإحداثيات من منصة خرائط Google APIs، بما في ذلك Geocoding API. في طلب البحث، أدخِل هذه الإحداثيات في الدالة ST_DWITHIN:
المساهمون
- David Szajngarten | مهندس علاقات المطوّرين
- Henrik Valve | مهندس تجربة المطوّرين