حساب مجموعات الأرباح لمخطط قيمة الإحالة الناجحة على شبكة SKAd

حساب مجموعات الأرباح لمخطط قيمة الإحالة الناجحة على شبكة SKAd

لمحة عن هذا الدرس التطبيقي حول الترميز

subjectتاريخ التعديل الأخير: أكتوبر 18, 2023
account_circleتأليف: Surath Sarma

1. مقدمة

بعض السياقات قبل البدء

إذا كنت مطوّر تطبيقات iOS، من المفترض أنّك سمعت عن تحديثات الخصوصية لنظام التشغيل iOS 14.5 أو الإصدارات الأحدث. ولقياس إجراءات الإحالات الناجحة المفيدة بعد التثبيت، توفّر Apple واجهة برمجة تطبيقات SKAd Network API التي تتيح لك قياس مدى نجاح حملاتك الإعلانية مع احترام خصوصية المستخدم. واستنادًا إلى احتياجات نشاطك التجاري، يمكنك التوصّل إلى أفضل طريقة للاستفادة من "شبكة إعلانات SKAd" للحصول على إحصاءات مفيدة عن حملاتك. في هذا الدرس التطبيقي حول الترميز، ندرس منهجية للاستفادة من بيانات "إحصاءات Google لبرنامج Firebase" (GA4F) في BigQuery لتجميع الأرباح بعد تثبيت التطبيق في حِزم يمكنك استخدامها لإعدادها من خلال شريك إحالة التطبيقات. مع أنّ هذا الدرس التطبيقي حول الترميز يستخدم منهجًا قائمًا على الأرباح، يمكنك أيضًا استخدام الأساليب المستندة إلى الأحداث أو مسار الإحالة الناجحة لقياس SKAN. يُرجى الرجوع إلى مركز المساعدة هذا للحصول على إرشادات أكثر تفصيلاً. هذا مثال فقط، وليس اقتراحًا رسميًا من Google. يمكنك تصميم المخطّط الخاص بك استنادًا إلى احتياجات نشاطك التجاري المحدّدة.

الجوانب التي نعتزم تناولها

  • استكشاف بيانات "إحصاءات Google لبرنامج Firebase" (GA4F) في BigQuery
  • الاطّلاع على بيانات الأرباح للمستخدمين الذين أجروا إحالات ناجحة في غضون يوم أو يومَين
  • تجميع بيانات الأرباح في مجموعات
  • فهم توزيع المستخدمين في كل مجموعة
  • تنفيذ الحِزم في Appsflyer SKAN Conversion Studio

المتطلبات الأساسية

2. الوصول إلى BigQuery Export

انتقِل إلى مجموعة البيانات في "إحصاءات Google لبرنامج Firebase" من خلال الانتقال إلى إعدادات المشروع >. عمليات الدمج > BigQuery. يجب تفعيل مفتاح التبديل أولاً، وبعد تفعيله، يستغرق توفّر مجموعة البيانات حوالي 48 ساعة. يمكنك النقر فوق الرابط الموضح أدناه وسينقلك إلى BigQuery

1aa4e20bfd3419d1.png

تنفيذ بعض طلبات البحث

الآن بعد أن أصبحت في BigQuery، يُفترض أن ترى الجداول اليومية التي تم إنشاؤها. في لقطة الشاشة المثالية أدناه، يظهر لنا 64 جدولاً يوميًا، وبالتالي يستمر التصدير لمدة 64 يومًا. إذا كنت تصل إليه لأول مرة، فقد ترى جدولاً يوميًا واحدًا فقط لبيانات اليوم السابق. على يسار الصفحة، يمكنك الاطّلاع على مخطط الجدول. يمكنك الاطّلاع على المزيد من التفاصيل حول الحقول هنا.

لبدء كتابة الاستعلام، يمكنك النقر فوق Query > في علامة تبويب جديدة

42ba59ec655c5d1b.png

يمكنك بعد ذلك محاولة تشغيل نموذج الاستعلام في علامة التبويب الجديدة

70ef90d32b7cd7f1.png

3. تحليل بيانات الأرباح

جلب بيانات التثبيت

الآن لبدء إنشاء مجموعات بيانات الأرباح، علينا إلقاء نظرة أولاً على بيانات المستخدمين الذين ثبَّتوا في التطبيق خلال آخر 24 إلى 72 ساعة. تتيح لك شبكة SKAd Network 4.0 عرض البيانات خلال يوم واحد أو يومَين، في حين توفّر شبكة SKAd Network 3.5 مدة 24 ساعة تلقائيًا. (استنادًا إلى إمكانات شريك إحالة التطبيقات، قد تتمكن من تعديل فترة النشاط هذه بشكل عام لتصبح لا تزيد عن 72 ساعة). عندما يثبّت المستخدمون التطبيق ويفتحونه لأول مرة، يتم تنشيط حدث first_open من خلال حزمة تطوير البرامج (SDK) وتسجيله في BigQuery.

المعرّف الذي يمكنك استخدامه في BigQuery هو user_pseudo_id (يُسمى أيضًا رقم تعريف مثيل التطبيق)، لذا يمكنك استخدام طلب البحث أدناه للعثور على هؤلاء المستخدمين.

SELECT
  user_pseudo_id
,
  event_name
,
  event_date
,
  event_timestamp
FROM
`project_name.dataset_name.events_2023*`
WHERE
  event_name
= 'first_open'
  AND platform
= 'IOS'

في ما يلي بعض الملاحظات حول طلب البحث هذا

  • يُرجى استبدال اسم الجدول بالجدول الذي تم تصديره في "إحصاءات Google". يمكنك استخدام أحرف البدل لطلب جداول يومية متعدّدة. على سبيل المثال، سيتم إجراء طلب بحث في عام 2023* على جميع البيانات في العام 2023
  • إذا كان لديك الكثير من المستخدمين، يمكنك أيضًا طلب بيانات آخر 30 يومًا فقط لمعالجتها بشكل أسرع.
  • نقوم بالتصفية على النظام الأساسي = "IOS". إذا كان لديك عدة تطبيقات iOS في مشروعك على Firebase، يمكنك أيضًا إضافة فلتر للتطبيق app_info.firebase_app_id للحصول على بيانات التطبيق المحدّد.

جلب بيانات الأرباح

والآن، لنلقِ نظرة على أحد طلبات البحث لمعرفة إيرادات المستخدمين. في هذه الحالة، نفترض أنّ أحداث الأرباح هما in_app_purchase وad_impression. تتوفّر الأرباح من in_app_purchase في event_value_usd، بينما بالنسبة إلى ad_impression، تتوفّر الأرباح في مَعلمة القيمة ضمن مَعلمات الأحداث. إذا لم تكن على دراية بمَعلمات الأحداث في BigQuery، ننصحك بالاطّلاع على التعريف هنا، ويمكنك تجربة نموذج طلب البحث هذا في مرجعنا الرسمي الذي يتناول أيضًا استخراج القيمة من event_params

SELECT
 
user_pseudo_id,
 
event_name,
 
EXTRACT(date FROM Parse_datetime('%Y%m%d', event_date)) AS event_date,
 
(
   
SELECT COALESCE(value.int_value, value.float_value, value.double_value, NULL)
   
FROM UNNEST(event_params)
   
WHERE
     
KEY = 'value'
     
AND event_name = 'ad_impression'
 
) AS ad_funded_revenue,
 
(
   
SELECT value.string_value
   
FROM UNNEST(event_params)
   
WHERE
     
KEY = 'currency'
     
AND event_name = 'ad_impression'
 
) AS ad_revenue_currency,
 
(
   
CASE
     
WHEN event_name = 'in_app_purchase' THEN event_value_in_usd
     
ELSE 0
     
END) AS iap_revenue_usd,
FROM `project_name.dataset_name.events_2023*`
WHERE
 
platform = 'IOS'
 
AND event_name IN (
   
'in_app_purchase',
   
'ad_impression')

دعنا نفهم ما يفعله الاستعلام هنا. هذه هي الأشياء التي قد تلاحظها

  • في عبارة WHERE، نعمل على تصفية أحداث الأرباح، لأنّنا مهتمون فقط بها، وكما هو الحال في المرة الأخيرة، نبحث عن بيانات iOS
  • والآن، في عبارة SELECT، نأخذ القيمة إلى جانب عملة حدث أرباح الإعلانات (ad_impression)، ونستخدِم event_value_in_usd عندما يكون الحدث in_app_purchase
  • إذا كنت ترسل عملات متعددة، فستحتاج أولاً إلى التوافق مع عملة واحدة لهذا التحليل. لأغراض هذا المثال، نفترض أن عملة الأرباح المموّلة من الإعلانات هي أيضًا الدولار الأمريكي

ستظهر المخرجات على النحو الموضّح أدناه (تم إخفاء عمود user_pseudo_id هنا).

1e1e6943e4b3a6d8.png

دمج هذه البيانات

حتى الآن، أجرينا طلبين، أحدهما للعثور على بيانات المستخدمين الذين ثبَّتوا التطبيق وفتحوه، والآخر لمعرفة أرباح هؤلاء المستخدمين. والآن، لنتذكر ما ناقشناه حول قيود شبكة إعلانات SKAd. تتوفّر فترة تحديد المصدر فقط خلال مدة تتراوح بين يوم ويومَين بعد التثبيت. وبالتالي، سنحتاج إلى التحقّق من الطوابع الزمنية للأحداث الخاصة بالتثبيت والأرباح، وعدم تلقّي المعلومات إلّا إذا حدثت خلال ذلك الإطار الزمني. لنأخذ لقطة الآن للدمج في استعلام يوفر إجمالي الإيرادات لكل مشاركة لمدة يومين من تثبيت التطبيق

#creating the install table
WITH
 
install_table AS (
   
SELECT
     
user_pseudo_id,
     
event_name,
     
event_date,
     
event_timestamp
   
FROM `project_name.dataset_name.events_2023*`
   
WHERE
     
event_name = 'first_open'
     
AND platform = 'IOS'
 
),
 
#creating the revenue table
 
revenue_table AS (
   
SELECT
     
user_pseudo_id,
     
event_name,
     
event_timestamp,
     
EXTRACT(date FROM Parse_datetime('%Y%m%d', event_date)) AS event_date,
     
(
       
SELECT COALESCE(value.int_value, value.float_value, value.double_value, NULL)
       
FROM UNNEST(event_params)
       
WHERE
         
KEY = 'value'
         
AND event_name = 'ad_impression'
     
) AS ad_funded_revenue,
     
(
       
SELECT value.string_value
       
FROM UNNEST(event_params)
       
WHERE
         
KEY = 'currency'
         
AND event_name = 'ad_impression'
     
) AS ad_revenue_currency,
     
(
       
CASE
         
WHEN event_name = 'in_app_purchase' THEN event_value_in_usd
         
ELSE 0
         
END) AS iap_revenue_usd,
   
FROM `project_name.dataset_name.events_2023*`
   
WHERE
     
platform = 'IOS'
     
AND event_name IN (
       
'in_app_purchase',
       
'ad_impression')
 
)
SELECT
 
it.user_pseudo_id AS user_pseudo_id,
 
#combine ad revenue and IAP revenue, assuming both are in same currency
 
sum(ifnull(rt.iap_revenue_usd,0) + ifnull(rt.ad_funded_revenue,0)) AS total_revenue,
FROM install_table it
INNER JOIN revenue_table rt
 
ON it.user_pseudo_id = rt.user_pseudo_id
WHERE
 
rt.event_timestamp >= it.event_timestamp
 
AND rt.event_timestamp
   
<= it.event_timestamp + 86400000000 * 2  #added 86400 000 millisecond as 24 hours, taking for 2 days later
GROUP BY 1

يحاول الاستعلام فقط دمج بيانات التثبيت وبيانات الأرباح في الحقل user_pseudo_id، وبعد ذلك يجب التأكّد من وصول الطابع الزمني خلال يومَين. إذا كنت تستخدم الإصدار 3.5 من شبكة إعلانات SKAd Network، تكون القيمة التلقائية هي 24 ساعة، لذا يمكنك أيضًا تغيير الشرط لتضمين بيانات يوم واحد فقط.

تجميع الأرباح في حِزم

بعد الاستعلام السابق، سيكون لديك user_pseudo_id وإجمالي الإيرادات

2c1986b93e937d19.png

سنحتاج الآن إلى دمج هذا القيم في مجموعات يمكننا استخدامها لنطاقات قيم الإحالات الناجحة الخاصة بنا. لهذا الغرض، سنستخدم الدالة approx_quantiles في BigQuery التي تنشئ هذه النطاقات تلقائيًا بالنيابة عنك. لنفترض لأغراض هذا المثال أننا نريد إنشاء 5 نطاقات، ولذلك يمكننا استخدام SELECT approx_quantiles(total_revenue, 5) AS مجموعات فقط

بذلك، دعنا ندمج هذا في استعلامنا العام

#creating the install table
WITH
 
install_table AS (
   
SELECT
     
user_pseudo_id,
     
event_name,
     
event_date,
     
event_timestamp
   
FROM `project_name.dataset_name.events_2023*`
   
WHERE
     
event_name = 'first_open'
     
AND platform = 'IOS'
 
),
 
#creating the revenue table
 
revenue_table AS (
   
SELECT
     
user_pseudo_id,
     
event_name,
     
event_timestamp,
     
EXTRACT(date FROM Parse_datetime('%Y%m%d', event_date)) AS event_date,
     
(
       
SELECT COALESCE(value.int_value, value.float_value, value.double_value, NULL)
       
FROM UNNEST(event_params)
       
WHERE
         
KEY = 'value'
         
AND event_name = 'ad_impression'
     
) AS ad_funded_revenue,
     
(
       
SELECT value.string_value
       
FROM UNNEST(event_params)
       
WHERE
         
KEY = 'currency'
         
AND event_name = 'ad_impression'
     
) AS ad_revenue_currency,
     
(
       
CASE
         
WHEN event_name = 'in_app_purchase' THEN event_value_in_usd
         
ELSE 0
         
END) AS iap_revenue_usd,
   
FROM `project_name.dataset_name.events_2023*`
   
WHERE
     
platform = 'IOS'
     
AND event_name IN (
       
'in_app_purchase',
       
'ad_impression')
 
),
 
total_revenue_table AS (
   
SELECT
     
it.user_pseudo_id AS user_pseudo_id,
     
#combine ad revenue and IAP revenue, assuming both are in same currency
     
sum(ifnull(rt.iap_revenue_usd,0) + ifnull(rt.ad_funded_revenue,0)) AS total_revenue,
   
FROM install_table it
   
INNER JOIN revenue_table rt
     
ON it.user_pseudo_id = rt.user_pseudo_id
   
WHERE
     
rt.event_timestamp >= it.event_timestamp
     
AND rt.event_timestamp
       
<= it.event_timestamp + 86400000000 * 2  #added 86400 000 millisecond as 24 hours
   
GROUP BY 1
 
)
SELECT approx_quantiles(total_revenue, 5) AS buckets FROM total_revenue_table

سيقسم هذا الاستعلام الأرباح إلى 5 مجموعات بيانات وسيحاول BigQuery الحفاظ على توزيع نسبة مئوية متسقة

ba46f5d993449948.png

تحليل توزيع المستخدمين باستخدام هذه المجموعات

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

  • 0.1
  • 0.5
  • 2
  • 2.5
  • 5 [لن يتم استخدام القيمة الأخيرة في ضبط النطاق]

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

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

#creating the install table
WITH
 
install_table AS (
   
SELECT
     
user_pseudo_id,
     
event_name,
     
event_date,
     
event_timestamp
   
FROM `project_name.dataset_name.events_2023*`
   
WHERE
     
event_name = 'first_open'
     
AND platform = 'IOS'
 
),
 
#creating the revenue table
 
revenue_table AS (
   
SELECT
     
user_pseudo_id,
     
event_name,
     
event_timestamp,
     
EXTRACT(date FROM Parse_datetime('%Y%m%d', event_date)) AS event_date,
     
(
       
SELECT COALESCE(value.int_value, value.float_value, value.double_value, NULL)
       
FROM UNNEST(event_params)
       
WHERE
         
KEY = 'value'
         
AND event_name = 'ad_impression'
     
) AS ad_funded_revenue,
     
(
       
SELECT value.string_value
       
FROM UNNEST(event_params)
       
WHERE
         
KEY = 'currency'
         
AND event_name = 'ad_impression'
     
) AS ad_revenue_currency,
     
(
       
CASE
         
WHEN event_name = 'in_app_purchase' THEN event_value_in_usd
         
ELSE 0
         
END) AS iap_revenue_usd,
   
FROM `project_name.dataset_name.events_2023*`
   
WHERE
     
platform = 'IOS'
     
AND event_name IN (
       
'in_app_purchase',
       
'ad_impression')
 
),
 
total_revenue_table AS (
   
SELECT
     
it.user_pseudo_id AS user_pseudo_id,
     
rt.event_date,
     
#combine ad revenue and IAP revenue, assuming both are in same currency
     
sum(ifnull(rt.iap_revenue_usd,0) + ifnull(rt.ad_funded_revenue,0)) AS total_revenue,
   
FROM install_table it
   
INNER JOIN revenue_table rt
     
ON it.user_pseudo_id = rt.user_pseudo_id
   
WHERE
     
rt.event_timestamp >= it.event_timestamp
     
AND rt.event_timestamp
       
<= it.event_timestamp + 86400000000 * 2  #added 86400 000 millisecond as 24 hours
   
GROUP BY 1, 2
 
)
SELECT
 
event_date,
 
sum(CASE WHEN total_revenue BETWEEN 0 AND 0.1 THEN 1 ELSE 0 END) AS Bucket1,
 
sum(CASE WHEN total_revenue BETWEEN 0.1 AND 0.5 THEN 1 ELSE 0 END) AS Bucket2,
 
sum(CASE WHEN total_revenue BETWEEN 0.5 AND 2 THEN 1 ELSE 0 END) AS Bucket3,
 
sum(CASE WHEN total_revenue BETWEEN 2 AND 2.5 THEN 1 ELSE 0 END) AS Bucket4,
 
sum(CASE WHEN total_revenue > 2.5 THEN 1 ELSE 0 END) AS Bucket5
FROM total_revenue_table
GROUP BY 1 ORDER BY 1 DESC

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

bf7d73085fe94cb6.png

لمحة عن SKAd Network 4.0

يوفّر SKAd Network 4.0 فترات إحالة ناجحة متعدّدة تصل مدتها إلى يومَين و3 إلى 7 أيام ومن 8 إلى 35 يومًا. في النهج أعلاه، يمكنك بسهولة تغيير النافذة لتحليل البيانات أيضًا لهذه السيناريوهات الإضافية. تتوفر أيضًا القيم التقريبية الدقيقة لـ LOW وMEDIUM وHIGH. مرة أخرى، إذا كنت ترغب في استخدام هذا المنهج، يمكنك التفكير في هذا على أنه 3 مجموعات بيانات، وبالتالي، عن طريق تغيير عدد المجموعات إلى 3، يمكنك الحصول على الحد الأدنى للقيم LOW وMEDIUM وHIGH

4. النشر مع مزوِّد خدمة تحديد المصدر

وقد تتغيّر هذه الإرشادات وفقًا للمنصة المحدّدة. يُرجى التعاون مع ممثلي المنصة للحصول على أحدث المعلومات حول هذا الموضوع. لأغراض هذا المثال، سنلقي نظرة على كيفية نشر هذه الميزة على AppsFlyer في الوقت الحالي.

في الاستعلام الذي قمنا بتشغيله سابقًا، كانت النطاقات النهائية التي تلقيناها كمخرجات على النحو التالي

ba46f5d993449948.png

  • النطاق 1 : 0 إلى 0.1
  • النطاق 2 : 0.1 إلى 0.5
  • النطاق 3 : 0.5 إلى 2
  • النطاق 4 : 2 إلى 2.5

تذكَّر أنّنا قررنا تجاهل نطاق الأرباح الأخير لأنّه سيكون قيمة شاذة وسيؤدي إلى تحريف متوسط العمليات الحسابية لمقدِّم خدمة إحالة التطبيقات.

يوفّر AppsFlyer خدمة SKAN Conversion Studio، حيث يمكن إدخالها مباشرةً في واجهة المستخدم بكل سهولة. يمكنك إما استخدام الإصدار 4.0 مباشرةً أو استخدام "مخصّص" إذا كنت تستخدم 3.5، وأضف "الأرباح" القياس. يمكنك بعد ذلك إضافة نطاقات الأرباح التي حسبتها من التحليل السابق.

f8c56abdf9b405f4.png

أفضل الممارسات والدروس المستفادة من "إعلانات Google"

نودّ أن نقدّم لك بعض الاقتراحات في حال عرض حملات على "إعلانات Google" وقياس التأثير من خلال مخطّط قيمة الإحالة الناجحة على شبكة إعلانات SKAd

  • تأكّد من أن فترة الإحالة الناجحة التي تستخدِمها على "إعلانات Google" تتطابق مع فترة النشاط التي حدّدتها على منصّة إحالة التطبيقات. وبالنسبة إلى الإصدار 3.5 من شبكة SKAd، من المرجّح أن يستغرق ذلك من يوم إلى 3 أيام، لذا يمكنك تعديله وفقًا لذلك في "إعلانات Google" باتّباع الخطوات المذكورة هنا.

4fd625aae9d4a43.png

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

6c7a4d703567700a.png

5. تهانينا

تهانينا، لقد أعددت مخطط قيمة الإحالة الناجحة على شبكة إعلانات SKAd بنجاح. يمكنك الآن مراقبة البيانات في تقرير "شبكة إعلانات Google" للاطّلاع على قيم الإحالات الناجحة لحملاتك على "إعلانات Google" بعد نشرها.

لقد تعلمت

  • كيفية استكشاف البيانات الأولية الغنية بصريًا من "إحصاءات Google لبرنامج Firebase" (GA4F) في BigQuery
  • منهج تحليلي لحساب مجموعات الأرباح لنشاطك التجاري
  • نشر المخطط باستخدام AppsFlyer