نظرة عامة

يوضّح هذا المستند كيفية إنشاء تقارير جغرافية مكانية ديناميكية باستخدام إحصاءات الأماكن ومركز البيانات. استفِد من قيمة بيانات موقعك الجغرافي من خلال تمكين الأطراف المعنية غير التقنية من الإجابة عن أسئلتهم. يوضّح لك هذا الدليل كيفية تحويل التقارير الثابتة إلى أدوات تفاعلية على شكل خريطة حرارية لتحليل السوق، بدون الحاجة إلى كتابة طلبات SQL لكل طلب. تتيح هذه الميزة الوصول إلى بيانات المواقع الجغرافية المعقّدة، ما يسدّ الفجوة بين هندسة البيانات وذكاء الأعمال.
يوفّر استخدام هذا النمط المعماري العديد من المزايا الرئيسية:
- التمثيل المرئي للبيانات: تحوّل هذه الميزة بيانات إحصاءات الأماكن إلى خرائط ورسوم بيانية تفاعلية توضّح على الفور الكثافة المكانية والاتجاهات.
- استكشاف مبسّط بدون 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