أفضل الممارسات

ستوفّر لك أفضل الممارسات التالية أساليب لتطوير طلبات بحث عالية الأداء وتركّز على الخصوصية.

الخصوصية ودقة البيانات

إنشاء الاستعلامات حول بيانات وضع الحماية

أفضل الممارسات: طلب البحث عن بيانات الإنتاج فقط أثناء مرحلة الإنتاج

استخدِم بيانات وضع الحماية أثناء تطوير طلب البحث كلما أمكن ذلك. لا توفّر الوظائف التي تستخدم بيانات وضع الحماية فرصًا إضافية لعمليات التحقّق من الاختلافات لفلترة نتائج طلبات البحث. بالإضافة إلى ذلك، وبسبب عدم توفّر فحوصات الخصوصية، تعمل طلبات البحث في وضع الحماية بشكل أسرع، ما يسمح بتكرارها بشكل أسرع أثناء تطوير الطلبات.

إذا اضطررت إلى تطوير طلبات بحث عن بياناتك الفعلية (مثلاً عند استخدام جداول المطابقة)، لتقليل احتمال تداخل الصفوف، اختَر النطاقات الزمنية والمَعلمات الأخرى التي من غير المحتمل أن تتداخل مع كل تكرار لطلب البحث. وأخيرًا، قم بتشغيل الاستعلام على النطاق المطلوب من البيانات.

مراعاة النتائج التاريخية بعناية

أفضل الممارسات: تقليل احتمال تداخل مجموعة النتائج بين طلبات البحث التي تم تنفيذها مؤخرًا

يُرجى العِلم أنّ معدل التغيير بين نتائج طلبات البحث سيكون له تأثير في مدى احتمالية حذف النتائج لاحقًا بسبب عمليات فحص الخصوصية. ومن المرجح أن يتم تجاهل مجموعة النتائج الثانية التي تشبه إلى حد كبير مجموعة النتائج المعروضة مؤخرًا.

بدلاً من ذلك، عليك تعديل المَعلمات الرئيسية في طلب البحث، مثل النطاقات الزمنية أو أرقام تعريف الحملات، لتقليل احتمالية حدوث تداخل كبير.

عدم الاستعلام عن بيانات اليوم

أفضل الممارسات: لا تنفِّذ طلبات بحث متعددة حيث يقع تاريخ الانتهاء اليوم.

سيؤدي تشغيل استعلامات متعددة بتواريخ انتهاء تساوي اليوم غالبًا إلى تصفية الصفوف. تنطبق هذه الإرشادات أيضًا على تنفيذ طلبات البحث بعد منتصف الليل بقليل في بيانات الأمس.

لا تطلب البحث عن البيانات نفسها أكثر من اللازم.

أفضل الممارسات:

  • اختَر تاريخَي البدء والانتهاء المرتبطَين بإحكام.
  • بدلاً من تنفيذ طلبات بحث في نوافذ متداخلة، يمكنك تنفيذ طلباتك على مجموعات منفصلة من البيانات، ثم تجميع النتائج في BigQuery.
  • استخدِم النتائج المحفوظة بدلاً من إعادة تنفيذ طلب البحث.
  • إنشاء جداول مؤقتة لكل نطاق زمني تُجري فيه طلب بحث.

يحدّ Ads Data Hub من إجمالي عدد المرّات التي يمكنك فيها إجراء طلبات بحث عن البيانات نفسها. على هذا النحو، يجب أن تحاول تحديد عدد مرات الوصول إلى جزء معين من البيانات.

لا تستخدم تجميعات أكثر من اللازم في طلب البحث نفسه

أفضل الممارسات:

  • تقليل عدد التجميعات في طلب بحث
  • أعِد كتابة طلبات البحث لدمج التجميعات عند الإمكان.

تضع خدمة Ads Data Hub حدًا أقصى على عدد التجميعات على مستوى المستخدمين المسموح باستخدامها في طلب بحث فرعي هو 100. وبالتالي، ننصح بشكل عام بكتابة استعلامات تُنتج صفوفًا أكثر باستخدام مفاتيح تجميع مركزة وعمليات تجميع بسيطة، بدلًا من المزيد من الأعمدة التي تحتوي على مفاتيح تجميع واسعة النطاق وتجميعات معقدة. يجب تجنب النمط التالي:

SELECT
  COUNTIF(field_1 = a_1 AND field_2 = b_1) AS cnt_1,
  COUNTIF(field_1 = a_2 AND field_2 = b_2) AS cnt_2
FROM
  table

يجب إعادة كتابة طلبات البحث التي تحسب الأحداث استنادًا إلى مجموعة الحقول نفسها باستخدام عبارة GROUP BY.

SELECT
  field_1,
  field_2,
  COUNT(1) AS cnt
FROM
  table
GROUP BY
  1, 2

يمكن تجميع النتائج بالطريقة نفسها في BigQuery.

يجب إعادة كتابة طلبات البحث التي تنشئ أعمدة من مصفوفة ثم تجمعها بعد ذلك لدمج هذه الخطوات.

SELECT
  COUNTIF(a_1) AS cnt_1,
  COUNTIF(a_2) AS cnt_2
FROM
  (SELECT
     1 IN UNNEST(field) AS a_1,
     2 IN UNNEST(field) AS a_2,
   FROM
     table)

يمكن إعادة كتابة الاستعلام السابق على النحو التالي:

SELECT f, COUNT(1) FROM table, UNNEST(field) AS f GROUP BY 1

يمكن إعادة كتابة طلبات البحث التي تستخدم مجموعات مختلفة من الحقول في مجموعات مختلفة إلى عدة طلبات بحث أكثر تركيزًا.

SELECT
  COUNTIF(field_1 = a_1) AS cnt_a_1,
  COUNTIF(field_1 = b_1) AS cnt_b_1,
  COUNTIF(field_2 = a_2) AS cnt_a_2,
  COUNTIF(field_2 = b_2) AS cnt_b_2,
FROM table

يمكن تقسيم الاستعلام السابق إلى:

SELECT
  field_1, COUNT(*) AS cnt
FROM table
GROUP BY 1

و

SELECT
  field_2, COUNT(*) AS cnt
FROM table
GROUP BY 1

يمكنك تقسيم هذه النتائج إلى طلبات بحث منفصلة، أو إنشاء الجداول ودمجها في طلب بحث واحد، أو دمجها في UNION إذا كانت المخططات متوافقة.

تحسين عمليات الدمج وفهمها

أفضل الممارسات: استخدِم LEFT JOIN بدلاً من INNER JOIN لربط النقرات أو الإحالات الناجحة بمرّات الظهور.

لا ترتبط بعض مرّات الظهور بالنقرات أو الإحالات الناجحة. وبالتالي، إذا INNER JOIN نقرة أو إحالة ناجحة على مرات الظهور، ستتم فلترة مرات الظهور غير المرتبطة بالنقرات أو الإحالات الناجحة من النتائج.

صورة تعرض أنواعًا متعدّدة من الدمج من خلال المخططات البيانية المتداخلة

الانضمام إلى بعض النتائج النهائية في BigQuery

أفضل الممارسات: تجنُّب طلبات بحث Ads Data Hub التي تضم نتائج مجمّعة. بدلاً من ذلك، اكتب استعلامين منفصلين وضم النتائج في BigQuery.

تتم تصفية الصفوف التي لا تفي بمتطلبات التجميع من النتائج. ولذلك، إذا تضم استعلامك صفًا مجمعًا بشكل غير كافٍ مع صف مجمّع بشكل كافٍ، فستتم تصفية الصف الناتج. إضافةً إلى ذلك، تكون طلبات البحث التي تتضمّن عدّة تجميعات أقل أداءً في Ads Data Hub.

يمكنك ربط النتائج (في BigQuery) من طلبات تجميع متعدّدة (من Ads Data Hub). ستشارك النتائج المحسوبة باستخدام طلبات البحث الشائعة المخططات النهائية.

يأخذ طلب البحث التالي نتائج Ads Data Hub الفردية (campaign_data_123 وcampaign_data_456) ويضمها في BigQuery:

SELECT t1.campaign_id, t1.city, t1.X, t2.Y
FROM `campaign_data_123` AS t1
FULL JOIN `campaign_data_456` AS t2
USING (campaign_id, city)

استخدام ملخّصات الصفوف التي تمت فلترتها

أفضل الممارسات: أضِف ملخّصات للصفوف التي تمت فلترتها إلى طلبات البحث.

ملخّصات الصفوف التي تمّت فلترتها تحتسب البيانات التي تمّت فلترتها بسبب عمليات فحص الخصوصية. يتم جمع البيانات من الصفوف التي تمّت فلترتها وإضافتها إلى صف استقبال الرسائل الخاطئة. لا يمكن إجراء تحليل إضافي للبيانات التي تمت تصفيتها، إلا أنها توفر ملخصًا لكمية البيانات التي تمت تصفيتها من النتائج.

حساب أرقام تعريف المستخدمين الصفرية

أفضل الممارسات: ضَع في الاعتبار أرقام تعريف المستخدمين التي تتضمّن أصفارًا في نتائجك.

قد يتم ضبط رقم تعريف المستخدم النهائي على 0 لعدة أسباب، بما في ذلك: إيقاف تخصيص الإعلانات، أو أسباب تنظيمية، وما إلى ذلك. وبناءً على ذلك، سيتم إدخال قيمة user_id من 0 على البيانات التي تنشأ من عدة مستخدمين.

إذا أردت معرفة إجمالي البيانات، مثل إجمالي عدد مرات الظهور أو النقرات، عليك تضمين هذه الأحداث. ومع ذلك، لن تكون هذه البيانات مفيدة لاستخلاص الإحصاءات عن العملاء، ويجب تصفيتها إذا كنت تجري هذا التحليل.

يمكنك استبعاد هذه البيانات من النتائج بإضافة WHERE user_id != "0" إلى طلبات البحث.


عروض أداء

تجنُّب إعادة تجميع البيانات

أفضل الممارسات: تجنَّب الطبقات المتعدّدة من تجميع البيانات على مستوى المستخدمين.

إنّ طلبات البحث التي تجمع بين النتائج التي سبق تجميعها، كما هو الحال عند استخدام طلب بحث يتضمن عدة GROUP BY أو تجميع مُدمَج، تتطلّب مزيدًا من الموارد للمعالجة.

في كثير من الأحيان، يمكن تقسيم طلبات البحث ذات الطبقات المتعددة من التجميع، ما يؤدي إلى تحسين الأداء. عليك محاولة الاحتفاظ بالصفوف على مستوى الحدث أو المستخدِم أثناء المعالجة، ثم دمجها في مجموعة واحدة.

يجب تجنب الأنماط التالية:

SELECT SUM(count)
FROM
  (SELECT campaign_id, COUNT(0) AS count FROM ... GROUP BY 1)

يجب إعادة كتابة الاستعلامات التي تستخدم طبقات تجميع متعددة لاستخدام طبقة واحدة من التجميع.

(SELECT ... GROUP BY ... )
JOIN USING (...)
(SELECT ... GROUP BY ... )

يجب تقسيم طلبات البحث التي يمكن تقسيمها بسهولة. يمكنك ضم النتائج في BigQuery.

التحسين من أجل BigQuery

بشكل عام، طلبات البحث الأقل أداءً أفضل من غيرها. عند تقييم أداء طلبات البحث، يعتمد مقدار العمل المطلوب على العوامل التالية:

إذا لم يلبّي تنفيذ طلب البحث اتفاقيات مستوى الخدمة، أو إذا كنت تواجه أخطاء بسبب نفاد الموارد أو انتهاء المهلة، يُرجى مراعاة ما يلي:

  • استخدام نتائج الاستعلامات السابقة بدلاً من إعادة حسابها. على سبيل المثال، قد يكون الإجمالي الأسبوعي هو المجموع المحسوب في BigQuery من 7 طلبات بحث مجمّعة في يوم واحد.
  • تحليل طلبات البحث إلى استعلامات فرعية منطقية (مثل تقسيم عبارات join متعددة إلى استعلامات متعددة)، أو تقييد مجموعة البيانات التي تتم معالجتها بطريقة أخرى. يمكنك دمج النتائج من المهام الفردية في مجموعة بيانات واحدة في BigQuery. على الرغم من أن هذا قد يساعد في استنفاد الموارد، إلا أنه قد يؤدي إلى إبطاء استعلامك.
  • إذا كنت تواجه موارد تجاوزت الأخطاء في BigQuery، جرِّب استخدام الجداول المؤقتة لتقسيم طلب البحث إلى طلبات بحث متعددة في BigQuery.
  • الإشارة إلى جداول أقل في استعلام واحد، حيث يستخدم هذا كميات كبيرة من الذاكرة ويمكن أن يتسبب في فشل الاستعلام.
  • إعادة كتابة طلبات البحث لكي تضم عددًا أقل من جداول المستخدمين.
  • إعادة كتابة استعلاماتك لتجنب ضم الجدول نفسه مرة أخرى.

مستشار طلبات البحث

إذا كانت لغة الاستعلامات البنيوية (SQL) صالحة ولكنّها قد تؤدي إلى تشغيل فلترة زائدة، يعرض مستشار طلب البحث نصائح قابلة للتنفيذ أثناء عملية تطوير طلب البحث، لمساعدتك في تجنُّب النتائج غير المرغوب فيها.

تشمل المشغلات الأنماط التالية:

لاستخدام مستشار طلبات البحث:

  • واجهة المستخدم: ستظهر الاقتراحات في محرِّر طلبات البحث، أعلى نص طلب البحث.
  • API. استخدِم طريقة customers.analysisQueries.validate.