سطل های درآمد را برای طرح ارزش تبدیل شبکه SKAd محاسبه کنید

1. مقدمه

برخی از زمینه ها قبل از شروع

اگر توسعه‌دهنده برنامه iOS هستید، حتماً درباره به‌روزرسانی‌های حریم خصوصی iOS 14.5+ شنیده‌اید. برای اندازه‌گیری اقدامات تبدیل معنی‌دار پس از نصب، اپل API شبکه SKAd را ارائه می‌کند که به شما امکان می‌دهد ضمن رعایت حریم خصوصی کاربر، موفقیت کمپین‌های تبلیغاتی خود را اندازه‌گیری کنید. بر اساس نیازهای کسب و کار خود، می توانید بهینه ترین راه را برای استفاده از شبکه SKAd برای بدست آوردن بینش معنی دار در مورد کمپین های خود ارائه دهید. در این نرم‌افزار، یک روش نمونه را بررسی می‌کنیم تا از داده‌های GA4F شما در BigQuery استفاده کنیم تا نصب درآمد پس از برنامه را در سطل‌هایی گروه‌بندی کنیم، که سپس می‌توانید از آن برای تنظیم با شریک اسناد برنامه خود استفاده کنید. در حالی که این آزمایشگاه کد از یک رویکرد مبتنی بر درآمد استفاده می کند، شما همچنین می توانید از رویدادها یا رویکردهای مبتنی بر قیف برای اندازه گیری SKAN استفاده کنید. لطفاً برای راهنمایی دقیق تر به این مرکز راهنمایی مراجعه کنید. این فقط یک مثال است، نه یک توصیه رسمی Google . شما می توانید طرحواره خود را بر اساس نیازهای تجاری خاص خود طراحی کنید

آنچه را که قصد پوشش آن را داریم

  • داده های GA4F را در BigQuery کاوش کنید
  • داده‌های درآمد را برای کاربرانی که ظرف ۰ تا ۲ روز تبدیل کرده‌اند، پیدا کنید
  • داده های درآمد را در سطل ها گروه بندی کنید
  • توزیع کاربر در هر سطل را درک کنید
  • سطل ها را در Appsflyer SKAN Conversion Studio پیاده سازی کنید

پیش نیازها

2. دسترسی به BigQuery Export

با مراجعه به Project Settings > Integrations > BigQuery به مجموعه داده در GA4F بروید. ضامن باید ابتدا فعال شود و پس از فعال شدن، حدود 48 ساعت طول می کشد تا مجموعه داده در دسترس باشد. می توانید روی لینک زیر کلیک کنید و شما را به BigQuery می برد

1aa4e20bfd3419d1.png

چند پرس و جو را اجرا کنید

اکنون که در BigQuery هستید، باید جداول روزانه تولید شده را ببینید. در تصویر مثال زیر، 64 جدول روزانه را می بینیم، بنابراین صادرات به مدت 64 روز اجرا شده است. اگر برای اولین بار به آن دسترسی دارید، ممکن است فقط ۱ جدول روزانه برای داده های روز قبل ببینید. در سمت راست، طرح جدول را مشاهده می کنید. در اینجا می توانید به جزئیات بیشتر فیلدها مراجعه کنید

برای شروع نوشتن درخواست خود، می توانید روی Query > In New Tab کلیک کنید

42ba59ec655c5d1b.png

سپس می توانید نمونه پرس و جو را در تب جدید اجرا کنید

70ef90d32b7cd7f1.png

3. داده های درآمد را تجزیه و تحلیل کنید

در حال واکشی داده های نصب

اکنون برای شروع ساخت سطل های درآمدی، ابتدا باید به داده های کاربرانی که در 24 تا 72 ساعت گذشته در برنامه نصب کرده اند نگاه کنیم. SKAd Network 4.0 به شما امکان می دهد داده ها را در 0-2 روز مشاهده کنید، در حالی که SKAd Network 3.5 به طور پیش فرض اجازه 24 ساعت را می دهد. (بسته به قابلیت های App Attribution Partner شما، ممکن است بتوانید این پنجره فعالیت را به طور کلی به حداکثر ۷۲ ساعت تغییر دهید). هنگامی که کاربران برنامه را نصب می کنند و برای اولین بار آن را باز می کنند، رویداد 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'

چند نکته در مورد این پرس و جو باید توجه داشت

  • لطفاً نام جدول را با جدول صادر شده Analytics خود جایگزین کنید. شما می توانید از حروف عام برای پرس و جو از چندین جدول روزانه استفاده کنید. به عنوان مثال، 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) را می گیریم، و زمانی که رویداد in_app_purchase است، event_value_in_usd را می گیریم.
  • اگر چندین ارز ارسال می کنید، ابتدا باید برای این تجزیه و تحلیل با یک ارز واحد هماهنگ شوید. برای اهداف این مثال، ما فرض می‌کنیم که ارز برای درآمد حاصل از تبلیغات نیز USD است

خروجی چیزی شبیه به زیر خواهد بود (ستون user_pseudo_id در اینجا ویرایش شده است).

1e1e6943e4b3a6d8.png

ترکیب این داده ها

تا به حال، دو پرس و جو انجام داده ایم، یکی برای یافتن داده های کاربرانی که برنامه را نصب و باز کرده اند، و دیگری برای یافتن درآمد آن کاربران. اکنون، بیایید آنچه را که در مورد محدودیت های شبکه SKAd بحث کردیم را به یاد بیاوریم. پنجره انتساب فقط ظرف 0-2 روز پس از نصب در دسترس است. بنابراین، ما باید مهرهای زمانی رویداد را برای نصب و درآمد بررسی کنیم، و فقط در صورتی که در آن محدوده زمانی اتفاق بیفتد، اطلاعات را دریافت کنیم. اکنون بیایید یک عکس ترکیبی در یک جستار بیاندازیم که کل درآمد را برای هر پست دو روز نصب برنامه ارائه می کند.

#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 بپیوندد، و سپس باید اطمینان حاصل کنیم که مهر زمانی ظرف 2 روز است. اگر از SKAd Network 3.5 استفاده می‌کنید، پیش‌فرض 24 ساعت است، بنابراین می‌توانید شرایط را به گونه‌ای تغییر دهید که فقط داده‌های 1 روز را شامل شود.

گروه بندی درآمد به سطل

پس از پرس و جو قبلی، user_pseudo_id و کل درآمد را خواهید داشت

2c1986b93e937d19.png

اکنون باید این را در سطل هایی ترکیب کنیم که بتوانیم برای محدوده ارزش تبدیل خود استفاده کنیم. برای این منظور از تابع approx_quantiles در BigQuery استفاده می کنیم که به طور خودکار این محدوده ها را برای شما ایجاد می کند. بیایید برای اهداف این مثال فرض کنیم که می‌خواهیم 5 محدوده ایجاد کنیم، بنابراین می‌توانیم از سطل AS SELECT approx_quantiles (total_revenue, 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,
      #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 را آخرین محدوده در نظر بگیریم. این به این دلیل است که ارائه‌دهندگان اسناد برنامه تمایل دارند ROAS را با استفاده از میانگین محدوده محاسبه کنند، بنابراین برای محاسبه یکنواخت‌تر، باید خروجی را حذف کرد.

اکنون سعی خواهیم کرد به تعداد کاربران برای هر تاریخ در همه محدوده ها نگاه کنیم تا بتوانیم حجم روزانه کاربران در هر سطل را درک کنیم. ما می توانیم این کار را با استفاده از این پرس و جو نمونه انجام دهیم، جایی که می توانید مقادیر سطل را با مقادیر جایگزین کنید. داده های واقعی شما، و پرس و جو چیزی شبیه به این خواهد بود

#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 پنجره های تبدیل متعددی را تا 2 روز، 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 را ارائه می دهد که در آن وارد کردن مستقیم آن به رابط کاربری بسیار ساده است. اگر از 3.5 استفاده می کنید می توانید مستقیماً از 4.0 استفاده کنید یا از حالت "Custom" استفاده کنید و اندازه گیری "درآمد" را اضافه کنید. سپس فقط می توانید محدوده های درآمدی را که از تجزیه و تحلیل قبلی محاسبه کرده اید، اضافه کنید.

f8c56abdf9b405f4.png

بهترین روش ها و یادگیری ها در تبلیغات گوگل

اگر کمپین‌هایی را در Google Ads اجرا می‌کنید و تأثیر آن را از طریق طرح ارزش تبدیل شبکه SKAd اندازه‌گیری می‌کنید، می‌خواهیم توصیه‌هایی به شما ارائه دهیم.

  • مطمئن شوید که پنجره تبدیلی که در Google Ads استفاده می کنید با پنجره فعالیتی که در پلتفرم App Attribution خود مشخص کرده اید مطابقت داشته باشد. برای شبکه SKAd 3.5، این احتمالاً ظرف 1 تا 3 روز خواهد بود، بنابراین می‌توانید با دنبال کردن مراحل ذکر شده در اینجا، آن را بر اساس آن در Google Ads تنظیم کنید.

4fd625aae9d4a43.png

  • اگر از Appsflyer استفاده می‌کنید، در حال حاضر شمارنده رویداد پیش‌فرض 1 است، به این معنی که چندین رویداد را برای هر کاربر در نظر نمی‌گیرد. اگر از یک مدل مبتنی بر رویداد برای اندازه‌گیری SKAN و مقایسه با کمپین‌های tCPA در Google Ads استفاده می‌کنید، می‌توانید با پیروی از این دستورالعمل از Appsflyer سفارشی‌سازی کنید.

6c7a4d703567700a.png

5. تبریک می گویم

تبریک می‌گوییم، شما با موفقیت طرح ارزش تبدیل شبکه SKAd خود را تنظیم کردید. اکنون می‌توانید داده‌های موجود در گزارش Google Ads SKAd Network خود را برای بررسی مقادیر تبدیل برای کمپین‌های Google Ads خود به محض اینکه این گزارش فعال شد، بررسی کنید.

تو یاد گرفتی

  • نحوه کاوش داده های خام غنی از GA4F در BigQuery
  • رویکرد تحلیلی برای محاسبه سطل درآمد برای کسب و کار شما
  • طرح را با AppsFlyer اجرا کنید
،

1. مقدمه

برخی از زمینه ها قبل از شروع

اگر توسعه‌دهنده برنامه iOS هستید، حتماً درباره به‌روزرسانی‌های حریم خصوصی iOS 14.5+ شنیده‌اید. برای اندازه‌گیری اقدامات تبدیل معنی‌دار پس از نصب، اپل API شبکه SKAd را ارائه می‌کند که به شما امکان می‌دهد ضمن رعایت حریم خصوصی کاربر، موفقیت کمپین‌های تبلیغاتی خود را اندازه‌گیری کنید. بر اساس نیازهای کسب و کار خود، می توانید بهینه ترین راه را برای استفاده از شبکه SKAd برای بدست آوردن بینش معنی دار در مورد کمپین های خود ارائه دهید. در این نرم‌افزار، یک روش نمونه را بررسی می‌کنیم تا از داده‌های GA4F شما در BigQuery استفاده کنیم تا نصب درآمد پس از برنامه را در سطل‌هایی گروه‌بندی کنیم، که سپس می‌توانید از آن برای تنظیم با شریک اسناد برنامه خود استفاده کنید. در حالی که این آزمایشگاه کد از یک رویکرد مبتنی بر درآمد استفاده می کند، شما همچنین می توانید از رویدادها یا رویکردهای مبتنی بر قیف برای اندازه گیری SKAN استفاده کنید. لطفاً برای راهنمایی دقیق تر به این مرکز راهنمایی مراجعه کنید. این فقط یک مثال است، نه یک توصیه رسمی Google . شما می توانید طرحواره خود را بر اساس نیازهای تجاری خاص خود طراحی کنید

آنچه را که قصد پوشش آن را داریم

  • داده های GA4F را در BigQuery کاوش کنید
  • داده‌های درآمد را برای کاربرانی که ظرف ۰ تا ۲ روز تبدیل کرده‌اند، پیدا کنید
  • داده های درآمد را در سطل ها گروه بندی کنید
  • توزیع کاربر در هر سطل را درک کنید
  • سطل ها را در Appsflyer SKAN Conversion Studio پیاده سازی کنید

پیش نیازها

2. دسترسی به BigQuery Export

با مراجعه به Project Settings > Integrations > BigQuery به مجموعه داده در GA4F بروید. ضامن باید ابتدا فعال شود و پس از فعال شدن، حدود 48 ساعت طول می کشد تا مجموعه داده در دسترس باشد. می توانید روی لینک زیر کلیک کنید و شما را به BigQuery می برد

1aa4e20bfd3419d1.png

چند پرس و جو را اجرا کنید

اکنون که در BigQuery هستید، باید جداول روزانه تولید شده را ببینید. در تصویر مثال زیر، 64 جدول روزانه را می بینیم، بنابراین صادرات به مدت 64 روز اجرا شده است. اگر برای اولین بار به آن دسترسی دارید، ممکن است فقط ۱ جدول روزانه برای داده های روز قبل ببینید. در سمت راست، طرح جدول را مشاهده می کنید. در اینجا می توانید به جزئیات بیشتر فیلدها مراجعه کنید

برای شروع نوشتن درخواست خود، می توانید روی Query > In New Tab کلیک کنید

42ba59ec655c5d1b.png

سپس می توانید نمونه پرس و جو را در تب جدید اجرا کنید

70ef90d32b7cd7f1.png

3. داده های درآمد را تجزیه و تحلیل کنید

در حال واکشی داده های نصب

اکنون برای شروع ساخت سطل های درآمدی، ابتدا باید به داده های کاربرانی که در 24 تا 72 ساعت گذشته در برنامه نصب کرده اند نگاه کنیم. SKAd Network 4.0 به شما امکان می دهد داده ها را در 0-2 روز مشاهده کنید، در حالی که SKAd Network 3.5 به طور پیش فرض اجازه 24 ساعت را می دهد. (بسته به قابلیت های App Attribution Partner شما، ممکن است بتوانید این پنجره فعالیت را به طور کلی به حداکثر ۷۲ ساعت تغییر دهید). هنگامی که کاربران برنامه را نصب می کنند و برای اولین بار آن را باز می کنند، رویداد 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'

چند نکته در مورد این پرس و جو باید توجه داشت

  • لطفاً نام جدول را با جدول صادر شده Analytics خود جایگزین کنید. شما می توانید از حروف عام برای پرس و جو از چندین جدول روزانه استفاده کنید. به عنوان مثال، 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) را می گیریم، و زمانی که رویداد in_app_purchase است، event_value_in_usd را می گیریم.
  • اگر چندین ارز ارسال می کنید، ابتدا باید برای این تجزیه و تحلیل با یک ارز واحد هماهنگ شوید. برای اهداف این مثال، ما فرض می‌کنیم که ارز برای درآمد حاصل از تبلیغات نیز USD است

خروجی چیزی شبیه به زیر خواهد بود (ستون user_pseudo_id در اینجا ویرایش شده است).

1e1e6943e4b3a6d8.png

ترکیب این داده ها

تا به حال، دو پرس و جو انجام داده ایم، یکی برای یافتن داده های کاربرانی که برنامه را نصب و باز کرده اند، و دیگری برای یافتن درآمد آن کاربران. اکنون، بیایید آنچه را که در مورد محدودیت های شبکه SKAd بحث کردیم را به یاد بیاوریم. پنجره انتساب فقط ظرف 0-2 روز پس از نصب در دسترس است. بنابراین، ما باید مهرهای زمانی رویداد را برای نصب و درآمد بررسی کنیم، و فقط در صورتی که در آن محدوده زمانی اتفاق بیفتد، اطلاعات را دریافت کنیم. اکنون بیایید یک عکس ترکیبی در یک جستار بیاندازیم که کل درآمد را برای هر پست دو روز نصب برنامه ارائه می کند.

#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 بپیوندد، و سپس باید اطمینان حاصل کنیم که مهر زمانی ظرف 2 روز است. اگر از SKAd Network 3.5 استفاده می‌کنید، پیش‌فرض 24 ساعت است، بنابراین می‌توانید شرایط را به گونه‌ای تغییر دهید که فقط داده‌های 1 روز را شامل شود.

گروه بندی درآمد به سطل

پس از پرس و جو قبلی، user_pseudo_id و کل درآمد را خواهید داشت

2c1986b93e937d19.png

اکنون باید این را در سطل هایی ترکیب کنیم که بتوانیم برای محدوده ارزش تبدیل خود استفاده کنیم. برای این منظور از تابع approx_quantiles در BigQuery استفاده می کنیم که به طور خودکار این محدوده ها را برای شما ایجاد می کند. بیایید برای اهداف این مثال فرض کنیم که می‌خواهیم 5 محدوده ایجاد کنیم، بنابراین می‌توانیم از سطل AS SELECT approx_quantiles (total_revenue, 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,
      #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 را آخرین محدوده در نظر بگیریم. این به این دلیل است که ارائه‌دهندگان اسناد برنامه تمایل دارند ROAS را با استفاده از میانگین محدوده محاسبه کنند، بنابراین برای محاسبه یکنواخت‌تر، باید خروجی را حذف کرد.

اکنون سعی خواهیم کرد به تعداد کاربران برای هر تاریخ در همه محدوده ها نگاه کنیم تا بتوانیم حجم روزانه کاربران در هر سطل را درک کنیم. ما می توانیم این کار را با استفاده از این پرس و جو نمونه انجام دهیم، جایی که می توانید مقادیر سطل را با مقادیر جایگزین کنید. داده های واقعی شما، و پرس و جو چیزی شبیه به این خواهد بود

#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 پنجره های تبدیل متعددی را تا 2 روز، 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 را ارائه می دهد که در آن وارد کردن مستقیم آن به رابط کاربری بسیار ساده است. اگر از 3.5 استفاده می کنید می توانید مستقیماً از 4.0 استفاده کنید یا از حالت "Custom" استفاده کنید و اندازه گیری "درآمد" را اضافه کنید. سپس فقط می توانید محدوده های درآمدی را که از تجزیه و تحلیل قبلی محاسبه کرده اید، اضافه کنید.

f8c56abdf9b405f4.png

بهترین روش ها و یادگیری ها در تبلیغات گوگل

اگر کمپین‌هایی را در Google Ads اجرا می‌کنید و تأثیر آن را از طریق طرح ارزش تبدیل شبکه SKAd اندازه‌گیری می‌کنید، می‌خواهیم توصیه‌هایی به شما ارائه دهیم.

  • مطمئن شوید که پنجره تبدیلی که در Google Ads استفاده می کنید با پنجره فعالیتی که در پلتفرم App Attribution خود مشخص کرده اید مطابقت داشته باشد. برای شبکه SKAd 3.5، این احتمالاً ظرف 1 تا 3 روز خواهد بود، بنابراین می‌توانید با دنبال کردن مراحل ذکر شده در اینجا، آن را بر اساس آن در Google Ads تنظیم کنید.

4fd625aae9d4a43.png

  • اگر از Appsflyer استفاده می‌کنید، در حال حاضر شمارنده رویداد پیش‌فرض 1 است، به این معنی که چندین رویداد را برای هر کاربر در نظر نمی‌گیرد. اگر از یک مدل مبتنی بر رویداد برای اندازه‌گیری SKAN و مقایسه با کمپین‌های tCPA در Google Ads استفاده می‌کنید، می‌توانید با پیروی از این دستورالعمل از Appsflyer سفارشی‌سازی کنید.

6c7a4d703567700a.png

5. تبریک می گویم

تبریک می‌گوییم، شما با موفقیت طرح ارزش تبدیل شبکه SKAd خود را تنظیم کردید. اکنون می‌توانید داده‌های موجود در گزارش Google Ads SKAd Network خود را برای بررسی مقادیر تبدیل برای کمپین‌های Google Ads خود به محض اینکه این گزارش فعال شد، بررسی کنید.

تو یاد گرفتی

  • نحوه کاوش داده های خام غنی از GA4F در BigQuery
  • رویکرد تحلیلی برای محاسبه سطل درآمد برای کسب و کار شما
  • طرح را با AppsFlyer اجرا کنید
،

1. مقدمه

برخی از زمینه ها قبل از شروع

اگر توسعه‌دهنده برنامه iOS هستید، حتماً درباره به‌روزرسانی‌های حریم خصوصی iOS 14.5+ شنیده‌اید. برای اندازه‌گیری اقدامات تبدیل معنی‌دار پس از نصب، اپل API شبکه SKAd را ارائه می‌کند که به شما امکان می‌دهد ضمن رعایت حریم خصوصی کاربر، موفقیت کمپین‌های تبلیغاتی خود را اندازه‌گیری کنید. بر اساس نیازهای کسب و کار خود، می توانید بهینه ترین راه را برای استفاده از شبکه SKAd برای بدست آوردن بینش معنی دار در مورد کمپین های خود ارائه دهید. در این نرم‌افزار، یک روش نمونه را بررسی می‌کنیم تا از داده‌های GA4F شما در BigQuery استفاده کنیم تا نصب درآمد پس از برنامه را در سطل‌هایی گروه‌بندی کنیم، که سپس می‌توانید از آن برای تنظیم با شریک اسناد برنامه خود استفاده کنید. در حالی که این آزمایشگاه کد از یک رویکرد مبتنی بر درآمد استفاده می کند، شما همچنین می توانید از رویدادها یا رویکردهای مبتنی بر قیف برای اندازه گیری SKAN استفاده کنید. لطفاً برای راهنمایی دقیق تر به این مرکز راهنمایی مراجعه کنید. این فقط یک مثال است، نه یک توصیه رسمی Google . شما می توانید طرحواره خود را بر اساس نیازهای تجاری خاص خود طراحی کنید

آنچه را که قصد پوشش آن را داریم

  • داده های GA4F را در BigQuery کاوش کنید
  • داده‌های درآمد را برای کاربرانی که ظرف ۰ تا ۲ روز تبدیل کرده‌اند، پیدا کنید
  • داده های درآمد را در سطل ها گروه بندی کنید
  • توزیع کاربر در هر سطل را درک کنید
  • سطل ها را در Appsflyer SKAN Conversion Studio پیاده سازی کنید

پیش نیازها

2. دسترسی به BigQuery Export

با مراجعه به Project Settings > Integrations > BigQuery به مجموعه داده در GA4F بروید. ضامن باید ابتدا فعال شود و پس از فعال شدن، حدود 48 ساعت طول می کشد تا مجموعه داده در دسترس باشد. می توانید روی لینک زیر کلیک کنید و شما را به BigQuery می برد

1aa4e20bfd3419d1.png

چند پرس و جو را اجرا کنید

اکنون که در BigQuery هستید، باید جداول روزانه تولید شده را ببینید. در تصویر مثال زیر، 64 جدول روزانه را می بینیم، بنابراین صادرات به مدت 64 روز اجرا شده است. اگر برای اولین بار به آن دسترسی دارید، ممکن است فقط ۱ جدول روزانه برای داده های روز قبل ببینید. در سمت راست، طرح جدول را مشاهده می کنید. در اینجا می توانید به جزئیات بیشتر فیلدها مراجعه کنید

برای شروع نوشتن درخواست خود، می توانید روی Query > In New Tab کلیک کنید

42ba59ec655c5d1b.png

سپس می توانید نمونه پرس و جو را در تب جدید اجرا کنید

70ef90d32b7cd7f1.png

3. داده های درآمد را تجزیه و تحلیل کنید

در حال واکشی داده های نصب

اکنون برای شروع ساخت سطل های درآمدی، ابتدا باید به داده های کاربرانی که در 24 تا 72 ساعت گذشته در برنامه نصب کرده اند نگاه کنیم. SKAd Network 4.0 به شما امکان می دهد داده ها را در 0-2 روز مشاهده کنید، در حالی که SKAd Network 3.5 به طور پیش فرض اجازه 24 ساعت را می دهد. (بسته به قابلیت های App Attribution Partner شما، ممکن است بتوانید این پنجره فعالیت را به طور کلی به حداکثر ۷۲ ساعت تغییر دهید). هنگامی که کاربران برنامه را نصب می کنند و برای اولین بار آن را باز می کنند، رویداد 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'

چند نکته در مورد این پرس و جو باید توجه داشت

  • لطفاً نام جدول را با جدول صادر شده Analytics خود جایگزین کنید. شما می توانید از حروف عام برای پرس و جو از چندین جدول روزانه استفاده کنید. به عنوان مثال، 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) را می گیریم، و زمانی که رویداد in_app_purchase است، event_value_in_usd را می گیریم.
  • اگر چندین ارز ارسال می کنید، ابتدا باید برای این تجزیه و تحلیل با یک ارز واحد هماهنگ شوید. برای اهداف این مثال، ما فرض می‌کنیم که ارز برای درآمد حاصل از تبلیغات نیز USD است

خروجی چیزی شبیه به زیر خواهد بود (ستون user_pseudo_id در اینجا ویرایش شده است).

1e1e6943e4b3a6d8.png

ترکیب این داده ها

تا به حال، دو پرس و جو انجام داده ایم، یکی برای یافتن داده های کاربرانی که برنامه را نصب و باز کرده اند، و دیگری برای یافتن درآمد آن کاربران. اکنون، بیایید آنچه را که در مورد محدودیت های شبکه SKAd بحث کردیم را به یاد بیاوریم. پنجره انتساب فقط ظرف 0-2 روز پس از نصب در دسترس است. بنابراین، ما باید مهرهای زمانی رویداد را برای نصب و درآمد بررسی کنیم، و فقط در صورتی که در آن محدوده زمانی اتفاق بیفتد، اطلاعات را دریافت کنیم. اکنون بیایید یک عکس ترکیبی در یک جستار بیاندازیم که کل درآمد را برای هر پست دو روز نصب برنامه ارائه می کند.

#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 بپیوندد، و سپس باید اطمینان حاصل کنیم که مهر زمانی ظرف 2 روز است. اگر از SKAd Network 3.5 استفاده می‌کنید، پیش‌فرض 24 ساعت است، بنابراین می‌توانید شرایط را به گونه‌ای تغییر دهید که فقط داده‌های 1 روز را شامل شود.

گروه بندی درآمد به سطل

پس از پرس و جو قبلی، user_pseudo_id و کل درآمد را خواهید داشت

2c1986b93e937d19.png

اکنون باید این را در سطل هایی ترکیب کنیم که بتوانیم برای محدوده ارزش تبدیل خود استفاده کنیم. برای این منظور از تابع approx_quantiles در BigQuery استفاده می کنیم که به طور خودکار این محدوده ها را برای شما ایجاد می کند. بیایید برای اهداف این مثال فرض کنیم که می‌خواهیم 5 محدوده ایجاد کنیم، بنابراین می‌توانیم از سطل AS SELECT approx_quantiles (total_revenue, 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,
      #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 را آخرین محدوده در نظر بگیریم. این به این دلیل است که ارائه‌دهندگان اسناد برنامه تمایل دارند ROAS را با استفاده از میانگین محدوده محاسبه کنند، بنابراین برای محاسبه یکنواخت‌تر، باید خروجی را حذف کرد.

اکنون سعی خواهیم کرد به تعداد کاربران برای هر تاریخ در همه محدوده ها نگاه کنیم تا بتوانیم حجم روزانه کاربران در هر سطل را درک کنیم. ما می توانیم این کار را با استفاده از این پرس و جو نمونه انجام دهیم، جایی که می توانید مقادیر سطل را با مقادیر جایگزین کنید. داده های واقعی شما، و پرس و جو چیزی شبیه به این خواهد بود

#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 پنجره های تبدیل متعددی را تا 2 روز، 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 را ارائه می دهد که در آن وارد کردن مستقیم آن به رابط کاربری بسیار ساده است. اگر از 3.5 استفاده می کنید می توانید مستقیماً از 4.0 استفاده کنید یا از حالت "Custom" استفاده کنید و اندازه گیری "درآمد" را اضافه کنید. سپس فقط می توانید محدوده های درآمدی را که از تجزیه و تحلیل قبلی محاسبه کرده اید، اضافه کنید.

f8c56abdf9b405f4.png

بهترین روش ها و یادگیری ها در تبلیغات گوگل

اگر کمپین‌هایی را در Google Ads اجرا می‌کنید و تأثیر آن را از طریق طرح ارزش تبدیل شبکه SKAd اندازه‌گیری می‌کنید، می‌خواهیم توصیه‌هایی به شما ارائه دهیم.

  • مطمئن شوید که پنجره تبدیلی که در Google Ads استفاده می کنید با پنجره فعالیتی که در پلتفرم App Attribution خود مشخص کرده اید مطابقت داشته باشد. برای شبکه SKAd 3.5، این احتمالاً ظرف 1 تا 3 روز خواهد بود، بنابراین می‌توانید با دنبال کردن مراحل ذکر شده در اینجا، آن را بر اساس آن در Google Ads تنظیم کنید.

4fd625aae9d4a43.png

  • اگر از Appsflyer استفاده می‌کنید، در حال حاضر شمارنده رویداد پیش‌فرض 1 است، به این معنی که چندین رویداد را برای هر کاربر در نظر نمی‌گیرد. اگر از یک مدل مبتنی بر رویداد برای اندازه گیری SKAN و مقایسه با کمپین های TCPA در تبلیغات Google استفاده می کنید ، می توانید با دنبال کردن این راهنمایی از AppSflyer ، سفارشی سازی را انتخاب کنید

6C7A4D703567700A.PNG

5. تبریک می گویم

تبریک می گویم ، شما با موفقیت شمای ارزش تبدیل شبکه SKAD خود را تنظیم کرده اید. اکنون می توانید داده های موجود در گزارش شبکه Google Ads Skad خود را کنترل کنید تا مقادیر تبدیل تبلیغات Google Ads خود را پس از زنده بودن بررسی کنید

شما آموخته اید

  • نحوه کشف داده های خام غنی از GA4F در BigQuery
  • رویکرد تحلیلی برای محاسبه سطل های درآمد برای تجارت شما
  • این طرح را با AppSflyer مستقر کنید
،

1. مقدمه

برخی از زمینه ها قبل از شروع کار

اگر شما یک توسعه دهنده برنامه iOS هستید ، باید از به روزرسانی های حریم خصوصی iOS 14.5+ شنیده باشید. برای اندازه گیری اقدامات تبدیل معنی دار پس از نصب ، اپل API شبکه SKAD را فراهم می کند که به شما امکان می دهد ضمن احترام به حریم شخصی کاربر ، موفقیت تبلیغات تبلیغاتی خود را اندازه گیری کنید. بر اساس نیازهای تجاری خود ، می توانید بهینه ترین روش برای استفاده از شبکه SKAD را برای گرفتن بینش های معنی دار در مورد کمپین های خود ارائه دهید. در این CodeLab ، ما یک روش مثال را برای استفاده از داده های GA4F خود در BigQuery برای گروه بندی نصب برنامه پست درآمدی به سطل بررسی می کنیم ، که می توانید از آن برای تنظیم با شریک انتساب برنامه خود استفاده کنید. در حالی که این CodeLab از یک رویکرد مبتنی بر درآمد استفاده می کند ، می توانید از رویدادها یا رویکردهای مبتنی بر قیف برای اندازه گیری SKAN نیز استفاده کنید. لطفاً برای راهنمایی های دقیق تر به این مرکز راهنما مراجعه کنید. این فقط یک نمونه است ، نه یک توصیه رسمی Google . شما می توانید طرح خود را بر اساس نیازهای تجاری خاص خود طراحی کنید

آنچه ما قصد پوشش آن را داریم

  • داده های GA4F را در BigQuery کاوش کنید
  • داده های درآمد را برای کاربرانی که ظرف 0-2 روز تبدیل شده اند پیدا کنید
  • داده های درآمد گروهی به سطل
  • توزیع کاربر را در هر سطل درک کنید
  • سطل ها را در استودیوی تبدیل AppSflyer Skan پیاده سازی کنید

پیش نیازها

  • GA4F SDK در برنامه iOS شما ، و کلیه رویدادهای درآمد یکپارچه (IN_APP_PURCHASE یا درآمد بودجه AD )
  • Firebase به BigQuery Export فعال شده است
  • شریک انتساب برنامه ، که در حال ضبط تمام رویدادهای درآمد است

2. دسترسی به صادرات BigQuery

با مراجعه به تنظیمات پروژه> ادغام> BigQuery به مجموعه داده های GA4F بروید. ضامن ابتدا باید فعال شود و پس از فعال شدن آن ، حدود 48 ساعت طول می کشد تا مجموعه داده در دسترس باشد. می توانید روی پیوند نشان داده شده در زیر کلیک کنید و شما را به BigQuery می برد

1AA4E20BFD3419D1.PNG

برخی از نمایش داده ها را اجرا کنید

اکنون که در BigQuery هستید ، باید جداول روزانه تولید شده را ببینید. در تصویر زیر ، 64 میز روزانه را می بینیم ، بنابراین صادرات به مدت 64 روز در حال اجرا است. اگر برای اولین بار به آن دسترسی پیدا می کنید ، ممکن است فقط 1 جدول روزانه برای داده های روز قبل مشاهده کنید. در سمت راست ، طرح جدول را می بینید. می توانید به جزئیات بیشتر در زمینه ها در اینجا مراجعه کنید

برای شروع نوشتن پرس و جو خود ، می توانید بر روی Query> در برگه جدید کلیک کنید

42ba59ec655c5d1b.png

سپس می توانید در برگه جدید پرس و جو نمونه را اجرا کنید

70ef90d32b7cd7f1.png

3. داده های درآمد را تجزیه و تحلیل کنید

واکشی داده ها

اکنون برای شروع ساخت سطل های درآمد ، ابتدا باید داده هایی را برای کاربرانی که طی 24 تا 72 ساعت گذشته در برنامه نصب کرده اند ، جستجو کنیم. Skad Network 4.0 به شما امکان می دهد داده ها را در 0-2 روز مشاهده کنید ، در حالی که 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'

چند مورد که باید در مورد این پرس و جو یادداشت کنید

  • لطفاً نام جدول را با جدول صادر شده تجزیه و تحلیل خود جایگزین کنید. برای پرس و جو از چندین میز روزانه می توانید از کارتهای وحشی استفاده کنید. به عنوان مثال ، 2023* در تمام داده ها در سال 2023 پرس و جو خواهد شد
  • اگر کاربران زیادی دارید ، می توانید فقط 30 روز گذشته را برای پردازش سریعتر پرس و جو کنید
  • ما روی پلتفرم = 'iOS' فیلتر می کنیم. در صورت داشتن چندین برنامه iOS در پروژه Firebase خود ، می توانید یک فیلتر برای APP_INFO.FIREBASE_APP_ID اضافه کنید تا داده های برنامه خاص را بدست آورید

واکشی داده های درآمد

حال ، بیایید به یک پرس و جو برای یافتن درآمد برای کاربران خود نگاه کنیم. در این حالت ، ما فرض می کنیم که رویدادهای درآمد شما در_پ_پوریس و AD_IMPRACTION است. درآمد حاصل از IN_APP_PURCHASE در event_value_usd در دسترس است ، در حالی که برای AD_IMPRACTION ، درآمد در پارامتر ارزش ، در پارامترهای رویداد موجود است. اگر با پارامترهای رویداد در 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 هستیم
  • اکنون ، در بند منتخب ، ما ارزش و همچنین ارز را برای رویداد درآمد آگهی (AD_IMPRASSION) می گیریم ، و وقتی رویداد IN_APP_PURCHASE است ، Event_value_in_usd را می گیریم.
  • اگر در صورت ارسال چندین ارز ، ابتدا برای این تجزیه و تحلیل باید با یک ارز واحد تراز کنید. برای اهداف این مثال ، فرض خواهیم کرد که ارز برای درآمد بودجه تبلیغ شده نیز دلار است

خروجی چیزی شبیه به زیر خواهد بود (ستون برای user_pseudo_id در اینجا رد شده است).

1e1e6943e4b3a6d8.png

ترکیب این داده ها

تاکنون ، ما دو نمایش داده شده را اجرا کرده ایم ، یکی برای یافتن داده ها برای کاربرانی که برنامه را نصب و باز کرده اند و دیگری برای یافتن درآمد برای آن کاربران. حال ، بیایید به یاد بیاوریم که در مورد محدودیت های شبکه SKAD بحث کردیم. پنجره انتساب فقط ظرف 0-2 روز نصب در دسترس است. از این رو ، ما باید در صورت وقوع در آن بازه زمانی ، جدول زمانی رویداد را برای نصب و درآمد بررسی کنیم و فقط اطلاعات را بگیریم. حال بیایید با ترکیب یک پرس و جو که در کل درآمد هر پست دو روز نصب برنامه را فراهم می کند ، شلیک کنیم

#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 بپیوندد ، و سپس باید اطمینان حاصل کنیم که زمان سنجی ظرف 2 روز است. اگر از Skad Network 3.5 استفاده می کنید ، پیش فرض 24 ساعت است ، بنابراین می توانید شرایط را نیز تغییر دهید تا فقط داده های 1 روزه را شامل شود

گروه بندی درآمد به سطل

پس از پرس و جو قبلی ، شما باید user_pseudo_id و کل درآمد را داشته باشید

2C1986B93E937D19.PNG

اکنون باید این را در سطل هایی که می توانیم برای محدوده ارزش تبدیل خود استفاده کنیم ، ترکیب کنیم. برای این منظور ، ما از عملکرد تقریبی_Quantiles در BigQuery استفاده خواهیم کرد ، که به طور خودکار این محدوده ها را برای شما ایجاد می کند. بیایید برای اهداف این مثال فرض کنیم که ما می خواهیم 5 دامنه ایجاد کنیم ، بنابراین می توانیم فقط از انتخاب های Crime_quantiles (total_revenue ، 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,
      #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 را به عنوان آخرین محدوده در نظر بگیریم. این امر به این دلیل است که ارائه دهندگان انتساب برنامه تمایل دارند ROAS را با استفاده از میانگین دامنه محاسبه کنند ، بنابراین برای محاسبه یکنواخت تر باید دور از دسترس خارج شود.

اکنون ما سعی خواهیم کرد که تعداد کاربران هر تاریخ را در تمام محدوده ها بررسی کنیم تا بتوانیم حجم روزانه کاربران در هر سطل را درک کنیم. ما می توانیم با استفاده از این پرس و جو نمونه ، جایی که می توانید مقادیر سطل را جایگزین کنید ، این کار را انجام دهیم. داده های واقعی شما ، و پرس و جو چیزی شبیه به این است

#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 4.0

Skad Network 4.0 پنجره های تبدیل متعدد تا 2 روز ، 3-7 روز و 8-35 روز را ارائه می دهد. در رویکرد بالا ، می توانید به راحتی پنجره را تغییر دهید تا داده ها را برای این سناریوهای اضافی نیز تجزیه و تحلیل کنید. مقادیر دانه درشت کم ، متوسط ​​و زیاد نیز موجود است. باز هم ، اگر می خواهید از این رویکرد استفاده کنید ، می توانید به عنوان 3 سطل فکر کنید ، بنابراین ، با تغییر تعداد سطل به 3 ، می توانید آستانه های کم ، متوسط ​​و زیاد را بدست آورید

4. استقرار با ارائه دهنده انتساب خود

بسته به بستر خاص ، این راهنمایی ممکن است تغییر کند. لطفاً برای به روزرسانی ترین اطلاعات در این باره با نمایندگان پلتفرم کار کنید. برای اهداف این مثال ، ما باید بررسی کنیم که چگونه می توانیم این کار را در AppSflyer مستقر کنیم

در پرس و جو که قبلاً دویدیم ، محدوده نهایی که به عنوان خروجی دریافت کردیم به شرح زیر بود

BA46F5D993449948.PNG

  • دامنه 1: 0 تا 0.1
  • دامنه 2: 0.1 تا 0.5
  • دامنه 3: 0.5 تا 2
  • دامنه 4: 2 تا 2.5

به یاد داشته باشید که ما تصمیم گرفتیم که آخرین محدوده درآمد را نادیده بگیریم ، زیرا این یک چیز مهمتر خواهد بود و میانگین محاسبات را برای ارائه دهنده انتساب برنامه شما کاهش می دهیم.

AppSflyer استودیوی تبدیل SKAN را ارائه می دهد ، جایی که ورود مستقیم به UI بسیار ساده است. در صورت استفاده از 3.5 می توانید از 4.0 مستقیم استفاده کنید یا از حالت "سفارشی" استفاده کنید و اندازه گیری "درآمد" را اضافه کنید. سپس می توانید محدوده درآمد را که از تجزیه و تحلیل قبلی محاسبه کرده اید اضافه کنید.

F8C56ABDF9B405F4.png

بهترین شیوه ها و یادگیری در تبلیغات Google

ما می خواهیم اگر کمپین هایی را در تبلیغات Google اجرا کنید ، و اندازه گیری تأثیر از طریق یک طرح ارزش تبدیل شبکه Skad ، شما را با برخی از توصیه ها ترک کنیم.

  • اطمینان حاصل کنید که پنجره تبدیل مورد استفاده در Google Ads با پنجره فعالیت که در پلت فرم انتساب برنامه خود مشخص کرده اید مطابقت دارد. برای Skad Network 3.5 ، این احتمالاً ظرف 1-3 روز خواهد بود ، بنابراین می توانید با پیروی از مراحل ذکر شده در اینجا ، آن را در تبلیغات Google تنظیم کنید

4FD625AAE9D4A43.PNG

  • اگر از AppSflyer استفاده می کنید ، در حال حاضر پیشخوان رویداد پیش فرض 1 است ، به این معنی که برای هر کاربر چندین رویداد را به حساب نمی آورد. اگر از یک مدل مبتنی بر رویداد برای اندازه گیری SKAN و مقایسه با کمپین های TCPA در تبلیغات Google استفاده می کنید ، می توانید با دنبال کردن این راهنمایی از AppSflyer ، سفارشی سازی را انتخاب کنید

6C7A4D703567700A.PNG

5. تبریک می گویم

تبریک می گویم ، شما با موفقیت شمای ارزش تبدیل شبکه SKAD خود را تنظیم کرده اید. اکنون می توانید داده های موجود در گزارش شبکه Google Ads Skad خود را کنترل کنید تا مقادیر تبدیل تبلیغات Google Ads خود را پس از زنده بودن بررسی کنید

شما آموخته اید

  • نحوه کشف داده های خام غنی از GA4F در BigQuery
  • رویکرد تحلیلی برای محاسبه سطل های درآمد برای تجارت شما
  • این طرح را با AppSflyer مستقر کنید