نظرة عامة

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

الخطوة 3: مشاركة النتائج
استخدِم أداة المشاركة المضمّنة في "مركز البيانات" لمشاركة التقرير. سيسمح هذا للمشاهدين بتحديث التصور ديناميكيًا بناءً على المعلمات التي يختارونها من القوائم المنسدلة.
الخاتمة
يؤدي هذا النمط إلى إنشاء أداة إعداد تقارير تفاعلية وقابلة للتوسّع تستفيد من إمكانات BigQuery الحاسوبية لعرض بيانات "إحصاءات الأماكن" المجمّعة في "مركز البيانات". تتجنب هذه البنية عيوب محاولة تصور مجموعات البيانات الأولية الضخمة وتوفر للمستخدمين النهائيين المرونة لاستكشاف البيانات عبر أبعاد مختلفة، مثل الوقت والموقع ونوع العمل، في الوقت الفعلي تقريبًا. هذه أداة قوية لمنح الأطراف المعنية غير الفنية المرونة لاستكشاف البيانات.
الخطوات التالية
يمكنك استكشاف صيغ أخرى من التقارير الديناميكية من خلال تحديد معلَمات لأجزاء مختلفة من مخطّط "إحصاءات الأماكن":
- تحليل ديناميكي للمنافسين: أنشئ مَعلمة لأسماء
brandللسماح للمستخدمين بالتبديل الفوري بين الخريطة الحرارية لمختلف المنافسين من أجل الاطّلاع على مدى انتشارهم النسبي في السوق. لمعرفة مدى توفّر بيانات العلامات التجارية، يُرجى الاطّلاع على المقالة لمحة عن بيانات إحصاءات الأماكن. - اختيار الموقع الجغرافي التفاعلي: يمكنك إضافة معلَمات لـ
price_level(مثل "متوسط" مقابل "باهظ الثمن") والحد الأدنى لـratingللسماح لفرق العقارات بالفلترة الديناميكية للمناطق التي تتطابق مع ملفات شخصية ديمغرافية معيّنة. - مناطق التغطية المخصّصة: بدلاً من الفلترة حسب اسم المدينة، يمكنك السماح للمستخدمين
بتحديد مناطق دراسة مخصّصة.
- استنادًا إلى نصف القطر: أنشِئ ثلاث مَعلمات رقمية: p_latitude وp_longitude وp_radius_meters. يمكن الحصول على الإحداثيات من واجهات برمجة تطبيقات "منصة خرائط Google"، بما في ذلك 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"، بما في ذلك Geocoding API. في طلب البحث،
أدخِل هذه القيم في دالة ST_DWITHIN:
المساهمون
- ديفيد ساجنغارتن، مهندس علاقات المطوّرين
- هنريك فالف | مهندس DevX