کلیدهای تجمیع چیستند، چگونه در API گزارشدهی تخصیص استفاده میشوند و چگونه میتوانید اهداف را به کلید تبدیل کنید.
به عنوان یک شرکت فناوری تبلیغات که کمپینهایی را در مکانهای مختلف برای دستههای مختلف محصولات اجرا میکند، میخواهید به تبلیغکنندگان کمک کنید تا به سؤالات زیر پاسخ دهند:
- هر یک از کمپینهای من در هر منطقه جغرافیایی، چه تعداد خرید از هر دسته محصول ایجاد کرده است؟
- هر یک از کمپینهای من در هر منطقه جغرافیایی، برای هر دسته از محصولات چقدر درآمد ایجاد کردهاند؟
در حالی که بسیاری از شرکتهای فناوری تبلیغات، تبلیغکنندگان را به پیکربندی انواع مختلف تبدیل تشویق میکنند، تمرکز بر مهمترین تبدیلها مانند خریدها، راه خوبی برای تأیید دقیق و جزئی بودن نتایج خلاصه برای این رویدادهای مهم است.
برای انجام این کار، باید قبل از جمعآوری دادهها، به سوالاتی که میخواهید به آنها پاسخ دهید، فکر کنید.
ابعاد، کلیدها و مقادیر
برای پاسخ به این سؤالات، بیایید نگاهی به ابعاد، کلیدها و ارزشها بیندازیم.
ابعاد
برای درک اینکه کمپینهای شما چگونه درآمد ایجاد میکنند، همانطور که در اینجا توضیح داده شده است، باید ابعاد زیر را پیگیری کنید:
- شناسه کمپین تبلیغاتی: شناسه مربوط به کمپین خاص.
- شناسه جغرافیایی: منطقه جغرافیایی که تبلیغ در آن نمایش داده شده است.
- دسته بندی محصول: نوع محصول همانطور که شما آن را تعریف کردهاید.
در حالی که شناسه کمپین و ابعاد شناسه جغرافیا هنگام نمایش تبلیغ (زمان نمایش تبلیغ) مشخص هستند، دسته محصول از یک رویداد محرک، زمانی که کاربر تبدیل را تکمیل میکند (زمان تبدیل)، مشخص میشود.
ابعادی که میخواهید برای این مثال ردیابی کنید، در تصویر زیر نشان داده شده است:

کلیدهای تجمیع (باکتها) چیستند؟
اصطلاحات کلید تجمیع و سطل به یک چیز اشاره دارند. کلید تجمیع در APIهای مرورگر که برای پیکربندی گزارشها استفاده میشوند، استفاده میشود. اصطلاح سطل در گزارشهای تجمیعپذیر و خلاصه و در APIهای سرویس تجمیع استفاده میشود.
کلید تجمیع (به اختصار کلید) قطعهای از داده است که مقادیر ابعاد مورد ردیابی را نشان میدهد. دادهها بعداً در امتداد هر کلید تجمیع تجمیع میشوند.
برای مثال، فرض کنید شما در حال ردیابی ابعاد «دستهبندی محصول»، «شناسه جغرافیایی» و «شناسه کمپین» هستید.
وقتی کاربری که در منطقه جغرافیایی با شناسه ۷ قرار دارد، تبلیغی برای کمپین با شناسه ۱۲ میبیند و بعداً با خرید محصولی در دسته محصولات ۲۵ به مشتری تبدیل میشود، میتوانید یک کلید تجمیع مانند تصویر زیر تنظیم کنید:

بعداً خواهید دید که یک کلید تجمیع در عمل دقیقاً شبیه این نیست، اما فعلاً بیایید روی اطلاعات موجود در کلید تمرکز کنیم.
مقادیر قابل جمع چیست؟
برای پاسخ به سوالات شما در مورد ابعادی که بیان کردیم، باید بدانید:
- تعداد خریدها (تعداد خرید). پس از تجمیع و ارائه در یک گزارش خلاصه، این تعداد کل خرید (ارزش خلاصه) خواهد بود.
- درآمد هر خرید (ارزش خرید). پس از تجمیع و ارائه در یک گزارش خلاصه، این درآمد کل (ارزش خلاصه) خواهد بود.
هر یک از این موارد - تعداد خرید برای یک تبدیل و ارزش خرید برای یک تبدیل - یک مقدار قابل جمع است. میتوانید مقادیر قابل جمع را به عنوان مقادیر اهداف اندازهگیری خود در نظر بگیرید.
| سوال | ارزش قابل جمع = هدف اندازهگیری |
|---|---|
| چند خرید … | تعداد خرید |
| چقدر درآمد … | ارزش خرید |
وقتی کاربری که در منطقه جغرافیایی با شناسه ۷ قرار دارد، تبلیغی برای کمپین با شناسه ۱۲ میبیند و بعداً با خرید محصولی از دسته محصولات ۲۵ به قیمت ۱۲۰ دلار (با فرض اینکه واحد پول شما دلار آمریکا باشد) به مشتری تبدیل میشود، میتوانید یک کلید تجمیع و مقادیر قابل تجمیع مانند این تنظیم کنید:

مقادیر قابل تجمیع به ازای هر کلید در بین بسیاری از کاربران جمع میشوند تا بینشهای تجمیعی، به شکل مقادیر خلاصه در گزارشهای خلاصه، ایجاد شوند.

مقادیر قابل جمع، برای ایجاد بینشهای تجمیعی برای اهداف اندازهگیری شما، جمعبندی میشوند.
توجه داشته باشید که این نمودار رمزگشایی را حذف کرده و یک مثال ساده شده بدون اعمال نویز را نشان میدهد. در بخش بعدی، این مثال را با نویز شرح خواهیم داد.
از کلیدها و مقادیر گرفته تا گزارشها
حال بیایید در مورد چگونگی ارتباط کلیدها و مقادیر قابل تجمیع با گزارشها بحث کنیم.
گزارشهای قابل تجمیع
وقتی کاربری روی یک تبلیغ کلیک میکند یا آن را مشاهده میکند و بعداً تبدیل میشود، شما به مرورگر دستور میدهید که یک جفت {کلید تجمیع، مقدار تجمیعپذیر} را ذخیره کند.
در مثال ما، وقتی کاربری روی یک تبلیغ کلیک میکند یا آن را مشاهده میکند و بعداً تبدیل به مشتری میشود، شما به مرورگر دستور میدهید که دو مشارکت (یکی برای هر هدف اندازهگیری) ایجاد کند.

بعداً خواهید دید که یک گزارش تجمیعی {کلید تجمیعی، مقدار تجمیعی} دقیقاً شبیه این نیست—اما فعلاً بیایید روی اطلاعات موجود در گزارش تمرکز کنیم.
وقتی به مرورگر دستور میدهید دو مشارکت ایجاد کند، مرورگر یک گزارش تجمیعی ایجاد میکند (اگر بتواند تبدیل را با مشاهده یا کلیک قبلی مطابقت دهد ).
یک گزارش تجمیعی شامل موارد زیر است:
- مشارکت(هایی) که پیکربندی کردهاید.
- فراداده درباره رویداد کلیک یا مشاهده و رویداد تبدیل: سایتی که تبدیل در آن رخ داده است و موارد دیگر. همه فیلدها را در یک گزارش تجمیعی مشاهده کنید .

گزارشهای قابل تجمیع با فرمت JSON هستند و از جمله موارد دیگر، شامل یک فیلد payload هستند که به عنوان ورودی داده برای گزارش خلاصه نهایی استفاده خواهد شد.
این payload شامل فهرستی از مشارکتها است که هر کدام یک جفت {کلید تجمیع، مقدار تجمیعپذیر} هستند:
-
bucket: کلید تجمیع، که به صورت یک رشته بایتتست کدگذاری شده است. -
value: مقدار قابل تجمیع برای آن هدف اندازهگیری، که به صورت یک bytestring کدگذاری شده است.
در اینجا یک مثال آورده شده است:
{
"data": [
{
"bucket": "111001001",
"value": "11111010000",
}
],
"operation": "histogram"
}
در عمل، گزارشهای قابل تجمیع به گونهای کدگذاری میشوند که باعث میشود سطلها و مقادیر متفاوت از مثال قبلی به نظر برسند (یعنی، یک سطل ممکن است به شکل \u0000\u0000\x80\u0000 به نظر برسد). سطل و مقدار هر دو رشتههای بایتست هستند.
گزارشهای خلاصه
گزارشهای قابل جمعآوری در مرورگرها و دستگاههای (کاربران) مختلف به شرح زیر جمعآوری میشوند:
- یک تکنسین تبلیغات، گزارشهای خلاصهای را برای مجموعهای از کلیدها و مجموعهای از گزارشهای قابل جمعآوری که از مرورگرها (کاربران) مختلف دریافت میشوند، درخواست میکند.
- گزارشهای قابل تجمیع توسط سرویس تجمیع رمزگشایی میشوند.
- برای هر کلید، مقادیر قابل تجمیع از گزارشهای قابل تجمیع با هم جمع میشوند.
- نویز به مقدار خلاصه اضافه میشود.

نتیجه یک گزارش خلاصه است که شامل مجموعهای از جفتهای {کلید تجمیع، مقدار خلاصه} است.
یک گزارش خلاصه شامل مجموعهای از جفتهای کلید-مقدار به سبک دیکشنری JSON است. هر جفت شامل موارد زیر است:
-
bucket: کلید تجمیع، که به صورت یک رشته بایتتست کدگذاری شده است. -
value: مقدار خلاصه به صورت اعشاری برای یک هدف اندازهگیری معین، که از تمام گزارشهای قابل جمعآوری موجود، با سطح نویز اضافه، خلاصه شده است.
مثال:
[
{"bucket": "111001001", "value": "2558500"},
{"bucket": "111101001", "value": "3256211"},
{...}
]
در عمل، گزارشهای خلاصه به گونهای کدگذاری میشوند که باعث میشود سطلها و مقادیر متفاوت از آنچه در مثال بیان شده است، به نظر برسند (یعنی، یک سطل ممکن است به شکل \u0000\u0000\x80\u0000 به نظر برسد). سطل و مقدار هر دو رشتههای بایتتست هستند.
کلیدهای تجمیع در عمل
کلیدهای تجمیع (باکتها) توسط یک شرکت فناوری تبلیغات، معمولاً در دو مرحله تعریف میشوند: زمانی که روی یک تبلیغ کلیک یا مشاهده میشود، و زمانی که کاربر تبدیل میشود.
ساختار کلید
ما از اصطلاح ساختار کلید برای تعیین مجموعه ابعاد کدگذاری شده در یک کلید استفاده خواهیم کرد.
برای مثال، شناسه کمپین × شناسه جغرافیایی × دسته محصول یک ساختار کلیدی است.

انواع کلید
مقادیر قابل تجمیع برای یک کلید مشخص در چندین کاربر/مرورگر جمع میشوند. اما دیدهایم که مقادیر قابل تجمیع میتوانند اهداف اندازهگیری متفاوتی مانند مقدار خرید یا تعداد خرید را دنبال کنند. شما میخواهید تأیید کنید که سرویس تجمیع، مقادیر قابل تجمیع از یک نوع را جمع میکند.
برای انجام این کار، درون هر کلید، قطعه دادهای را کدگذاری کنید که به شما بگوید مقدار خلاصه نشان دهنده چیست - هدف اندازهگیری که این کلید به آن اشاره دارد. یک راه برای انجام این کار، ایجاد یک بُعد اضافی برای کلید شما است که نشان دهنده نوع هدف اندازهگیری باشد.
با استفاده از مثال قبلیمان، این نوع هدف اندازهگیری دو مقدار ممکن متفاوت خواهد داشت:
- تعداد خرید اولین نوع هدف اندازهگیری است.
- ارزش خرید دومین نوع هدف اندازهگیری است.

اگر n هدف اندازهگیری داشته باشید، نوع هدف اندازهگیری n نوع مختلف از مقادیر را خواهد داشت.
میتوانید ابعاد یک کلید را به عنوان یک معیار در نظر بگیرید. برای مثال، «تعداد خریدهای یک محصول خاص در هر کمپین در هر منطقه جغرافیایی».
اندازه کلید، اندازه ابعاد
حداکثر اندازه کلید بر حسب بیت تعریف میشود - تعداد صفرها و یکها در مبنای دو برای ایجاد کلید کامل. API امکان طول کلید ۱۲۸ بیت را فراهم میکند.
این اندازه امکان استفاده از کلیدهای بسیار جزئی را فراهم میکند، اما کلیدهای جزئیتر احتمالاً منجر به مقادیر نویزدارتری میشوند. میتوانید اطلاعات بیشتر در مورد نویز را در بخش «درک نویز» مطالعه کنید.
همانطور که قبلاً معرفی شد، ابعاد در کلید تجمیع کدگذاری میشوند. هر بعد دارای یک کاردینالیتی خاص است - یعنی تعداد مقادیر متمایزی که آن بعد میتواند بگیرد. بسته به کاردینالیتی آن، هر بعد باید با تعداد مشخصی بیت نمایش داده شود. با n بیت، میتوان 2n گزینه متمایز را بیان کرد.
برای مثال، یک بُعد مربوط به کشور ممکن است عدد ۲۰۰ داشته باشد، زیرا حدود ۲۰۰ کشور در جهان وجود دارد. برای رمزگذاری این بُعد به چند بیت نیاز است؟
۷ بیت فقط ۲ ۷ = ۱۲۸ گزینه متمایز را ذخیره میکند که کمتر از ۲۰۰ گزینه لازم است.
۸ بیت میتواند ۲.۸ = ۲۵۶ گزینه مجزا را ذخیره کند که بیشتر از ۲۰۰ گزینه لازم است، بنابراین میتوانید از n=۸ بیت برای رمزگذاری این بُعد استفاده کنید.
رمزگذاری کلید
وقتی کلیدها را در مرورگر تنظیم میکنید، باید به صورت هگزادسیمال کدگذاری شوند. در گزارشهای خلاصه، کلیدها به صورت دودویی (باینری) نمایش داده میشوند (و به آنها buckets میگویند).
دو قطعه کلید را برای یک کلید کامل تنظیم کنید
فرض کنید از یک کلید برای ردیابی ابعاد زیر استفاده میکنید:
- شناسه کمپین
- شناسه جغرافیایی
- دسته بندی محصولات
در حالی که شناسه کمپین و ابعاد شناسه جغرافیا هنگام نمایش تبلیغ (زمان نمایش تبلیغ) مشخص هستند، دسته محصول از یک رویداد محرک، زمانی که کاربر تبدیل را تکمیل میکند (زمان تبدیل)، مشخص میشود.
در عمل، این بدان معناست که شما یک کلید را در دو مرحله تنظیم خواهید کرد:
- شما یک بخش از کلید - شناسه کمپین × شناسه جغرافیا - را در زمان کلیک یا مشاهده تنظیم خواهید کرد.
- بخش دوم کلید - دسته بندی محصول - را در زمان تبدیل تنظیم خواهید کرد.
به این قسمتهای مختلف کلیدها، قطعات کلید (key pieces) گفته میشود.
یک کلید با گرفتن OR( v ) از قطعات کلید آن محاسبه میشود.

مثال:
- قطعه کلید سمت منبع =
0x159 - قطعه کلید سمت ماشه =
0x400 - کلید =
0x159 v 0x400 = 0x559
تراز کردن قطعات کلیدی
با دو قطعه کلید ۶۴ بیتی که با استفاده از پرکنندهها یا آفستهای ۶۴ بیتی (شانزده صفر) که با دقت در جایگذاری شدهاند، به ۱۲۸ بیت افزایش یافتهاند، OR کردن قطعات کلید معادل الحاق آنها است که استدلال و تأیید آن آسانتر است:
- قطعه کلید سمت منبع =
0xa7e297e7c8c8d0540000000000000000 - قطعه کلید سمت ماشه =
0x0000000000000000674fbe308a597271 - کلید =
0xa7e297e7c8c8d0540000000000000000 v 0x0000000000000000674fbe308a597271 = 0xa7e297e7c8c8d054674fbe308a597271
چندین کلید برای هر کلیک یا مشاهده تبلیغ
در عمل، میتوانید چندین کلید را برای هر رویداد منبع انتساب (کلیک روی تبلیغ یا مشاهده) تنظیم کنید. برای مثال، میتوانید موارد زیر را تنظیم کنید:
- کلیدی که شناسه جغرافیایی × شناسه کمپین را ردیابی میکند.
- کلید دیگری که نوع خلاقیت × شناسه کمپین را ردیابی میکند.
برای مثال دیگری به استراتژی B نگاهی بیندازید.
کدگذاری ابعاد به کلیدها
هنگام درخواست گزارشهای خلاصه، باید با درخواست گزارشهای خلاصه برای مجموعهای خاص از کلیدهای تجمیع، به سرویس تجمیع بگویید که میخواهید به چه معیارهایی دسترسی داشته باشید.
گزارشهای خلاصه شامل جفتهای خام {کلید، مقدار خلاصه} هستند و هیچ اطلاعات اضافی در مورد کلید ندارند. این به این معنی است که:
- هنگام تنظیم کلیدها هنگام مشاهده یا کلیک کاربر روی یک تبلیغ و بعداً تبدیل آن، باید کلیدها را به طور قابل اعتمادی بر اساس مقادیر ابعادی که نشان میدهند تنظیم کنید.
- هنگام تعریف کلیدهایی که میخواهید گزارشهای خلاصه برای آنها درخواست کنید، باید به طور قابل اعتمادی همان کلیدهایی را که هنگام مشاهده یا کلیک کاربر روی یک تبلیغ و تبدیل تنظیم شدهاند، بر اساس مقادیر ابعادی که میخواهید دادههای تجمیع شده را برای آنها مشاهده کنید، ایجاد کنید یا درجا به آنها دسترسی داشته باشید.
کدگذاری ابعاد با استفاده از نقشههای ساختار کلید
برای کدگذاری ابعاد در کلیدها، میتوانید قبل از تعریف کلیدهای خود (قبل از زمان نمایش تبلیغ)، یک نقشه ساختار کلید ایجاد و نگهداری کنید.
یک نقشه ساختار کلیدی، هر یک از ابعاد شما و موقعیت آنها را در کلید نشان میدهد.
در عمل، ایجاد و نگهداری نقشههای ساختار کلیدی به این معنی است که شما باید منطق رمزگشایی را پیادهسازی و نگهداری کنید. اگر به دنبال روشی هستید که نیازی به انجام این کار نداشته باشد، به جای آن، استفاده از رویکرد مبتنی بر هش را در نظر بگیرید.
در اینجا یک مثال آورده شده است:
فرض کنید که شما قصد دارید هم خریدها و هم ارزش خریدها را برای کمپینها، مناطق جغرافیایی و محصولات خاص پیگیری کنید.
دسته محصول، شناسه جغرافیایی و شناسه کمپین باید در کلیدهای شما بُعد باشند. علاوه بر این، از آنجا که میخواهید دو هدف اندازهگیری متفاوت - تعداد خرید و ارزش خرید - را پیگیری کنید، باید یک بُعد در کلید خود اضافه کنید که نوع کلید را پیگیری کند. این به شما امکان میدهد تعریف کنید که ارزش قابل تجمیع در واقع هنگام دریافت جفتهای {کلید، ارزش قابل تجمیع} در گزارشهای خلاصه، نشان دهنده چیست.
با این اهداف اندازهگیری، کلید شما ابعاد زیر را خواهد داشت:
- دسته بندی محصولات
- نوع هدف اندازهگیری
- شناسه جغرافیایی
- شناسه کمپین
حال، با نگاهی به هر بُعد، فرض میکنیم که برای مورد استفاده شما، باید موارد زیر را پیگیری کنید:
- ۲۹ دسته محصول مختلف
- ۸ منطقه جغرافیایی مختلف: آمریکای شمالی، آمریکای مرکزی، آمریکای جنوبی، اروپا، آفریقا، آسیا، کارائیب و اقیانوسیه.
- ۱۶ کمپین مختلف
در اینجا تعداد بیتهایی که برای رمزگذاری هر بُعد در کلید خود نیاز دارید، آمده است:
- دسته بندی محصول: ۵ بیت (۲ ۵ = ۳۲ > ۲۹).
- نوع هدف اندازهگیری: ۱ بیت. هدف اندازهگیری یا تعداد خرید است یا ارزش خرید، یعنی دو احتمال مجزا؛ بنابراین، یک بیت برای ذخیره این مورد کافی است.
شناسه جغرافیایی: ۳ بیت (۲ ۳ = ۸). همچنین میتوانید یک نقشه بُعد برای شناسه جغرافیایی تعریف کنید تا بدانید هر مقدار دودویی نشان دهنده کدام منطقه جغرافیایی است. نقشه بُعد شما برای بُعد شناسه جغرافیاییتان ممکن است به شکل زیر باشد:
مقدار دودویی در کلید جغرافیا ۰۰۰ آمریکای شمالی 001 آمریکای مرکزی 010 آمریکای جنوبی 011 اروپا ۱۰۰ آفریقا ۱۰۱ آسیا ۱۱۰ کارائیب ۱۱۱ اقیانوسیه شناسه کمپین: ۴ بیت (۲ ۴ = ۱۶)
کلیدهایی که از این ساختار پیروی میکنند، ۱۳ بیت طول خواهند داشت (۵ + ۱ + ۳ + ۴).
برای این مثال، نقشه ساختار کلید برای این کلیدها به شکل زیر خواهد بود:

ترتیب ابعاد درون کلید به خودتان بستگی دارد.
برای نشان دادن اینکه ابعاد چگونه یک ساختار کلیدی را تشکیل میدهند، از یک نمایش دودویی استفاده خواهیم کرد، به همین دلیل است که شناسه کمپین (بیتهای اول) سمت راستترین و دسته محصول (بیتهای آخر) سمت چپترین است.
در هر بُعد، باارزشترین بیت - بیتی که بیشترین مقدار عددی را دارد - بیت سمت چپ و کمارزشترین بیت - بیتی که کمترین مقدار عددی را دارد - بیت سمت راست است.
بیایید ببینیم چگونه از یک نقشه ساختار کلید برای رمزگشایی یک کلید استفاده میکنید.
بیایید 0b1100100111100 را به عنوان یک کلید نمونه دلخواه در نظر بگیریم، و فرض کنیم شما راهی دارید تا بفهمید که این کلید از نقشه ساختار کلید در تصویر قبلی پیروی میکند.
طبق نقشه ساختار کلید، این کلید به صورت زیر رمزگشایی میشود:
`11001 0 011 1100`
بنابراین کلید 0b1100100111100 نشان دهنده تعداد خریدهای دسته محصول 25، برای کمپین ID 12 است که در اروپا راه اندازی شده است.
کدگذاری ابعاد با استفاده از تابع هش
به جای استفاده از نقشه ساختار کلید، میتوانید از یک تابع هشینگ برای تولید پویای کلیدها به روشی سازگار و قابل اعتماد استفاده کنید.
این به شرح زیر عمل میکند:
- یک الگوریتم هشینگ انتخاب کنید.
- در زمان نمایش تبلیغ، رشتهای ایجاد کنید که شامل تمام ابعادی باشد که میخواهید ردیابی کنید و مقادیر آنها. برای تولید قطعه کلید سمت منبع، این رشته را هش کنید و یک پسوند ۶۴ بیتی از صفرها را برای همتراز کردن آن با قطعه کلید سمت تریگر و آسانتر کردن استدلال OR در نظر بگیرید.
- قطعه کلید سمت منبع
=<64-bit hex hash("COUNT, campaignID=12, geoID=7"))><64-bit 00000000…> - توجه داشته باشید که
COUNTدر رویکرد نگاشت ساختار کلید، همان چیزی را کدگذاری میکند کهmeasurementGoalType=0انجام میدهد.COUNTکمی سادهتر و صریحتر است.
- قطعه کلید سمت منبع
- در زمان تبدیل، رشتهای ایجاد کنید که شامل تمام ابعادی باشد که میخواهید ردیابی کنید و مقادیر آنها. برای تولید یک قطعه کلید سمت تریگر، این رشته را هش کنید و یک پیشوند ۶۴ بیتی از صفرها اضافه کنید:
- قطعه کلید سمت ماشه =
<64-bit 00000000…><64-bit hex hash("productCategory=25")>
- قطعه کلید سمت ماشه =
- مرورگر این قطعات کلیدی را برای تولید یک کلید OR میکند.
- کلید تجمیع ۱۲۸ بیتی
=<64-bit hex source-side key piece hash><64-bit hex source-side key piece hash>
- کلید تجمیع ۱۲۸ بیتی
- بعداً، وقتی آماده درخواست گزارش خلاصه برای این کلید بودید، آن را درجا تولید کنید:
- بر اساس ابعادی که به آنها علاقه دارید، مانند قبل، یک قطعه کلید سمت منبع و سمت ماشه ایجاد کنید.
- قطعه کلید سمت منبع
=<64-bit hex hash("COUNT, campaignID=12, geoID=7"))><64-bit 00000000…> - قطعه کلید سمت ماشه
=<64-bit 00000000…><64-bit hex hash("productCategory=25")> - قطعه کلید سمت ماشه =
toHex(hash("productCategory=25"))
- قطعه کلید سمت منبع
- درست مانند مرورگر، یا این قطعات کلیدی برای تولید همان کلیدی که مرورگر قبلاً تولید کرده است.
- کلید تجمیع ۱۲۸ بیتی
=<64-bit source-side key piece hash><64-bit source-side key piece hash>
- کلید تجمیع ۱۲۸ بیتی
- بر اساس ابعادی که به آنها علاقه دارید، مانند قبل، یک قطعه کلید سمت منبع و سمت ماشه ایجاد کنید.
چند نکته کاربردی اگر از این رویکرد مبتنی بر هش استفاده میکنید:
- همیشه از ترتیب یکسانی برای ابعاد استفاده کنید. این کار تضمین میکند که هشهای شما میتوانند به طور قابل اعتمادی بازسازی شوند. (
"COUNT, CampaignID=12, GeoID=7"هش مشابهی با"COUNT, GeoID=7, CampaignID=12"تولید نمیکند). یک راه ساده برای دستیابی به این هدف، مرتبسازی ابعاد به صورت الفبایی-عددی است. این کاری است که ما در مثال انجام خواهیم داد، به جز این واقعیت که ما همیشهCOUNTیاVALUEبه عنوان اولین مورد در بُعد قرار میدهیم - این انتخابی برای خوانایی است، زیراCOUNTیاVALUEاطلاعاتی را رمزگذاری میکنند که از نظر مفهومی کمی متفاوت از سایر ابعاد است. - مجموعه ابعادی را که در کلیدها استفاده میکنید، پیگیری کنید. شما میخواهید از تولید کلیدها بر اساس مجموعهای از ابعاد که هرگز استفاده نکردهاید، خودداری کنید.
- اگر از یک تابع هش مناسب استفاده شود، تصادم هش به ندرت رخ میدهد، اما بررسی هشهای استفاده شده قبلی (که باید برای تفسیر نتایج حاصل از سرویس تجمیع ذخیره شوند) میتواند از ایجاد کلیدهای جدید که با کلیدهای قدیمیتر تصادم میکنند، جلوگیری کند.
نحوه استفاده عملی از کلیدهای مبتنی بر هش را در بخش « یک تبدیل به ازای هر کلیک» یا مثال مربوطه ببینید .
مقادیر قابل جمع در عمل
این شرکت فناوری تبلیغات، هنگام تبدیل کاربر، مقادیر قابل جمعبندی را تعیین میکند.
برای محافظت از حریم خصوصی کاربران، مشارکتهای هر کاربر دارای یک سقف است. در تمام مقادیر قابل جمعآوری مرتبط با یک منبع واحد (کلیک روی تبلیغ یا مشاهده آن)، هیچ مقداری نمیتواند بالاتر از یک سقف مشارکت خاص باشد.
ما به این محدودیت به عنوان CONTRIBUTION_BUDGET اشاره خواهیم کرد. در توضیح ، این محدودیت بودجه L1 نامیده میشود، اما همان CONTRIBUTION_BUDGET است.
برای بحث عمیقتر در مورد بودجه مشارکتی، به گزارشهای خلاصه به بودجه مشارکتی مراجعه کنید.
مثال: یک تبدیل به ازای هر کلیک یا مشاهده
برای این مثال، فرض کنید که شما به دنبال پاسخ به سوالات زیر هستید:
- کدام دسته از محصولات در هر منطقه بیشترین ارزش را دارند؟
- کدام استراتژیهای کمپین در هر منطقه بیشترین اثربخشی را دارند؟
همچنین فرض کنیم که برای مورد استفاده شما، به بینشهای هفتگی نیاز دارید.
همچنین باید موارد زیر را پیگیری کنید:
- ۱۶ کمپین مختلف
- ۸ منطقه جغرافیایی مختلف: آمریکای شمالی، آمریکای مرکزی، آمریکای جنوبی، اروپا، آفریقا، آسیا، کارائیب و اقیانوسیه.
- ۲۹ دسته بندی مختلف محصول
چه چیزی را اندازه گیری کنیم
در حالی که بسیاری از شرکتهای فناوری تبلیغات، تبلیغکنندگان را به پیکربندی انواع مختلف تبدیل تشویق میکنند، تمرکز بر مهمترین تبدیلها مانند خریدها، راه خوبی برای تأیید دقیق و جزئی بودن نتایج کلی برای این رویدادهای مهم تبدیل است. در واقع، هرچه معیارهای بیشتری را اندازهگیری کنید، بودجه مشارکت شما برای هر معیار کمتر میشود و از این رو، هر مقدار احتمالاً نویز بیشتری خواهد داشت. بنابراین، باید با دقت انتخاب کنید که چه چیزی را اندازهگیری کنید.
در این مثال، ما بر روی تنظیمات کمپینهایی تمرکز خواهیم کرد که فقط یک تبدیل را به ازای هر کلیک یا مشاهده اندازهگیری میکنند: یک خرید.
شما همچنان تعداد خرید و ارزش خرید را اندازهگیری خواهید کرد و به انواع آمارهای مهم مانند ارزش کل خرید و تفکیک جغرافیایی دسترسی خواهید داشت. این امر ضمن تأیید یک روش مقیاسبندی ساده برای بودجه مشارکت شما، نویز را به طور مؤثر مدیریت میکند.
در مورد ارزها چطور؟
اجرای کمپینها در مناطق مختلف به این معنی است که باید ارزها را در نظر گرفت. شما میتوانید:
- واحد پول را به یک بُعد اختصاصی در کلیدهای تجمیع تبدیل کنید.
- یا ارز را از شناسه کمپین استنباط کنید و همه ارزها را به ارزهای مرجع تبدیل کنید.
در این مثال، فرض میکنیم که میتوانید واحد پول را از شناسه کمپین استنباط کنید. این به شما امکان میدهد هر مقدار خرید داده شده را از واحد پول محلی کاربر به واحد پول مرجع مورد نظر خود تبدیل کنید. همچنین میتوانید این تبدیل را در لحظه، زمانی که کاربر یک کالا را خریداری میکند، انجام دهید.
با این تکنیک، تمام مقادیر قابل تجمیع به یک ارز مرجع یکسان هستند و بنابراین میتوان آنها را جمع کرد تا یک ارزش خرید تجمیعشده کل - یک ارزش خرید خلاصه - ایجاد شود.
تبدیل اهداف به کلیدها
با اهداف و معیارهای اندازهگیری خود، گزینههای مختلفی برای استراتژی کلیدی خود دارید. بیایید روی دو مورد از این استراتژیها تمرکز کنیم:
- استراتژی الف: یک ساختار کلیدی دانهای.
- استراتژی ب: دو ساختار کلیدی زمخت.
استراتژی الف: یک درخت عمیق (یک ساختار کلید دانهای)
در استراتژی A، شما از یک ساختار کلیدی جزئی استفاده میکنید که شامل تمام ابعاد مورد نیاز شما میشود:

تمام کلیدهای شما از این ساختار استفاده میکنند.
شما این ساختار کلیدی را به دو نوع کلیدی تقسیم میکنید تا از دو هدف اندازهگیری پشتیبانی کنید.
- نوع کلید ۰: نوع هدف اندازهگیری = ۰، که شما تصمیم میگیرید آن را به عنوان تعداد خرید تعریف کنید.
- کلید نوع ۱: نوع هدف اندازهگیری = ۱، که شما تصمیم میگیرید آن را به عنوان یک ارزش خرید تعریف کنید.
گزارشهای خلاصه به شرح زیر است:

میتوانید استراتژی A را به عنوان یک استراتژی «درخت تکلایه» در نظر بگیرید:
- هر مقدار خلاصه در گزارشهای خلاصه به تمام ابعادی که ردیابی میکنید مرتبط است.
- میتوانید این مقادیر خلاصه را در کنار هر یک از این ابعاد جمع کنید، بنابراین این جمعبندیها میتوانند به عمق تعداد ابعادی که دارید، ادامه پیدا کنند.
با استراتژی A، به سوالات خود به شرح زیر پاسخ خواهید داد:
| سوال | پاسخ |
|---|---|
| کدام دسته از محصولات در هر منطقه بیشترین ارزش را دارند؟ | تعداد و ارزش خریدهای خلاصهشده در گزارشهای خلاصه را در تمام کمپینها جمع کنید. این به شما تعداد خرید و ارزش هر دسته محصول × شناسه جغرافیایی را میدهد. برای هر منطقه، ارزش خرید و تعداد دستههای مختلف محصولات را با هم مقایسه کنید. |
| کدام استراتژیهای کمپین در هر منطقه بیشترین اثربخشی را دارند؟ | تعداد و ارزش خریدهای خلاصه موجود در گزارشهای خلاصه را در تمام دستهبندیهای محصول جمع کنید. این به شما تعداد خرید و ارزش هر کمپین در هر منطقه جغرافیایی را میدهد. برای هر منطقه، ارزش خرید و تعداد کمپینهای مختلف را با هم مقایسه کنید. |
با استراتژی الف، میتوانید مستقیماً به این سوال سوم نیز پاسخ دهید:
«هر یک از کمپینهای من در هر منطقه جغرافیایی چقدر درآمد برای هر محصول ایجاد کردهاند؟»
اگرچه مقادیر خلاصهشده دارای نویز خواهند بود، میتوانید تعیین کنید که چه زمانی تفاوت در مقدار اندازهگیری شده بین هر کمپین صرفاً به دلیل نویز نیست. نحوه انجام این کار را در بخش «درک نویز» بیاموزید.
استراتژی ب: دو درخت کمعمق (دو ساختار کلیدی درشت)
در استراتژی B، شما از دو ساختار کلیدی کلی استفاده میکنید که هر کدام شامل زیرمجموعهای از ابعاد مورد نیاز شما هستند:

شما هر یک از این ساختارهای کلیدی را به دو نوع کلیدی تقسیم میکنید تا از دو هدف اندازهگیری پشتیبانی کنند.
- نوع هدف اندازهگیری = ۰، که شما تصمیم میگیرید آن را به عنوان تعداد خرید تعریف کنید.
- نوع هدف اندازهگیری = ۱، که شما تصمیم میگیرید آن را به عنوان یک ارزش خرید تعریف کنید.
در نهایت چهار نوع کلید خواهید داشت:
- نوع کلید I-0: ساختار کلید I، تعداد خرید.
- نوع کلید I-1: ساختار کلید I، ارزش خرید.
- نوع کلید II-0: ساختار کلید II، تعداد خرید.
- نوع کلید II-1: ساختار کلید II، ارزش خرید.
گزارشهای خلاصه به شرح زیر است:

میتوانید استراتژی ب را به عنوان یک استراتژی «دو درخت کمعمق» در نظر بگیرید:
- مقادیر خلاصه در گزارشهای خلاصه به یکی از دو مجموعه کوچک از ابعاد نگاشت میشوند.
- میتوانید این مقادیر خلاصه را در کنار هر یک از ابعاد موجود در این مجموعهها جمع کنید - این بدان معناست که این جمعبندیها به اندازه گزینه الف عمیق نیستند، زیرا ابعاد کمتری برای جمعبندی در مقابل آنها وجود دارد.
با استراتژی ب، به سوالات خود به شرح زیر پاسخ خواهید داد:
| سوال | پاسخ |
|---|---|
| کدام دسته از محصولات در هر منطقه بیشترین ارزش را دارند؟ | مستقیماً به تعداد و مقادیر خلاصه خرید موجود در گزارشهای خلاصه دسترسی داشته باشید. |
| کدام استراتژیهای کمپین در هر منطقه بیشترین اثربخشی را دارند؟ | مستقیماً به تعداد و مقادیر خلاصه خرید موجود در گزارشهای خلاصه دسترسی داشته باشید. |
تصمیم: استراتژی الف
استراتژی A سادهتر است؛ همه دادهها از یک ساختار کلیدی یکسان پیروی میکنند، که به این معنی است که شما فقط یک ساختار کلیدی برای نگهداری دارید.
با این حال، با استراتژی A، شما باید مقادیر خلاصهای را که در گزارشهای خلاصه دریافت میکنید، جمع کنید تا به برخی از سوالات خود پاسخ دهید. هر یک از این مقادیر خلاصه دارای نویز هستند. با جمع کردن آن دادهها، نویز را نیز جمع میکنید.
این مورد در مورد استراتژی B صدق نمیکند، جایی که مقادیر خلاصه ارائه شده در گزارشهای خلاصه، اطلاعات مورد نیاز شما را از قبل در اختیارتان قرار میدهند. این بدان معناست که استراتژی B احتمالاً منجر به تأثیر کمتری از نویز نسبت به استراتژی A خواهد شد.
چگونه باید تعیین کنید که از کدام استراتژی استفاده کنید؟ برای تبلیغکنندگان یا کمپینهای موجود، میتوانید به دادههای تاریخی تکیه کنید تا مشخص کنید که آیا حجم تبدیلها برای استراتژی A یا استراتژی B مناسبتر است. با این حال، برای تبلیغکنندگان یا کمپینهای جدید، میتوانید تصمیم بگیرید که:
- با استفاده از کلیدهای جزئی، دادههای یک ماه را جمعآوری کنید (استراتژی الف). از آنجا که مدت زمان جمعآوری دادهها را افزایش میدهید، مقادیر خلاصه بالاتر و نویز نسبتاً کمتر خواهد بود.
- با دقت معقول، تعداد تبدیلهای هفتگی و ارزش خرید را ارزیابی کنید.
در این مثال، فرض کنید تعداد خرید هفتگی و ارزش خرید به اندازهای بالا هستند که استراتژی A منجر به درصد نویزی میشود که شما برای مورد استفاده خود قابل قبول میدانید.
از آنجا که استراتژی الف سادهتر است و منجر به ایجاد نویز میشود که بر توانایی تصمیمگیری شما تأثیر نمیگذارد، تصمیم میگیرید که استراتژی الف را انتخاب کنید.
انتخاب الگوریتم هشینگ
شما تصمیم میگیرید که یک رویکرد مبتنی بر هش برای تولید کلیدهای خود اتخاذ کنید. برای انجام این کار، باید یک الگوریتم هشینگ را برای پشتیبانی از این رویکرد انتخاب کنید.
فرض کنید SHA-256 را انتخاب کردهاید. همچنین میتوانید از یک الگوریتم سادهتر و با امنیت کمتر، مانند MD5، استفاده کنید.
در مرورگر: تنظیم کلیدها و مقادیر
حالا که ساختار کلید و الگوریتم هشینگ را انتخاب کردهاید، آمادهاید تا کلیدها و مقادیر را هنگام کلیک یا مشاهده تبلیغات توسط کاربران و متعاقباً تبدیل، ثبت کنید.
در ادامه، مروری بر هدرهایی که برای ثبت کلیدها و مقادیر در مرورگر تنظیم خواهید کرد، خواهیم داشت:


قطعات کلیدی سمت منبع را تنظیم کنید
وقتی کاربری روی یک تبلیغ کلیک میکند یا آن را مشاهده میکند، کلیدهای تجمیع را در سربرگ Attribution-Reporting-Register-Aggregatable-Source تنظیم کنید. در این مرحله، برای هر کلید، فقط میتوانید بخشی از کلید یا قطعه کلید را که در زمان نمایش تبلیغ شناخته شده است، تنظیم کنید.
بیایید قطعات کلیدی را تولید کنیم:
| قطعه کلید سمت منبع برای شناسه کلید… | رشتهای حاوی مقادیر بُعدی که میخواهید تنظیم کنید | هش این رشته به صورت هگز، که به ۶۴ بیت اول (۶۴/۴ = ۱۶ کاراکتر ۱ ) تقلیل یافته است. | هش هگز با صفرهای اضافه شده برای سادهسازی OR-ing. این قطعه کلید سمت منبع است. |
|---|---|---|---|
key_purchaseCount | COUNT, CampaignID=12, GeoID=7 | 0x3cf867903fbb73ec | 0x3cf867903fbb73ec0000000000000000 |
key_purchaseValue | VALUE, CampaignID=12, GeoID=7 | 0x245265f432f16e73 | 0x245265f432f16e730000000000000000 |
حالا بیایید قطعات کلیدی را تنظیم کنیم:
// Upon receiving the request from the publisher site
res.set(
"Attribution-Reporting-Register-Aggregatable-Source",
JSON.stringify([
{
"id": "key_purchaseCount",
"key_piece": "0x3cf867903fbb73ec0000000000000000"
},
{
"id": "key_purchaseValue",
"key_piece": "0x245265f432f16e730000000000000000"
}
])
);
توجه داشته باشید که شناسههای کلید در گزارشهای نهایی ظاهر نمیشوند . آنها فقط هنگام تنظیم کلیدها در مرورگر استفاده میشوند، به طوری که قطعات کلید سمت منبع و سمت تریگر بتوانند با یکدیگر نگاشت شده و در یک کلید کامل ترکیب شوند.
اختیاری: گزارشهای سطح رویداد
اگر نیاز دارید از گزارشهای سطح رویداد در کنار گزارشهای قابل تجمیع استفاده کنید، بررسی کنید که برای یک منبع مشخص، دادههای سطح رویداد (شناسه رویداد منبع و دادههای تریگر) و کلید تجمیع قابل تطبیق باشند.
اگر مثلاً قصد دارید از گزارشهای سطح رویداد برای اجرای مدلهایی استفاده کنید که نشان میدهند کدام نوع تبلیغات معمولاً منجر به بیشترین تعداد خرید میشوند، میتوانید از هر دو گزارش استفاده کنید.
یک کاربر تبدیل میکند
وقتی کاربری تبدیل میشود، معمولاً یک درخواست پیکسل به سرور فناوری تبلیغات ارسال میشود. پس از دریافت این درخواست:
- قطعات کلیدی سمت تبدیل (سمت ماشه) را برای تکمیل کلید تنظیم کنید. این قطعات کلیدی را با استفاده از هدر
Attribution-Reporting-Register-Aggregatable-Trigger-Dataتنظیم خواهید کرد. - با استفاده از سربرگ
Attribution-Reporting-Register-Aggregatable-Values، مقدار قابل تجمیع را برای آن تبدیل تنظیم کنید.
قطعات کلید کنار ماشه را برای تکمیل کلید تنظیم کنید
بیایید قطعات کلیدی را تولید کنیم:
| قطعه کلید سمت ماشه برای شناسه کلید… | رشتهای حاوی مقادیر بُعدی که میخواهید تنظیم کنید | هش این رشته به صورت هگز، که به ۶۴ بیت اول (۶۴/۴ = ۱۶ کاراکتر ۱ ) تقلیل یافته است. | هش هگز با صفرهای اضافه شده برای سادهسازی OR-ing. این قطعه کلید سمت منبع است. |
|---|---|---|---|
key_purchaseCount | ProductCategory=25 | 0x1c7ce88c4904bbe2 | 0x000000000000000f9e491fe37e55a0c |
key_purchaseValue | (همان) | (همان) | (همان) |
حالا بیایید قطعات کلیدی را تنظیم کنیم:
// Upon receiving the pixel request from the advertiser site
res.set(
"Attribution-Reporting-Register-Aggregatable-Trigger-Data",
JSON.stringify([
// Each dictionary independently adds pieces to multiple source keys
{
"key_piece": "0x0000000000000000f9e491fe37e55a0c",
"source_keys": ["key_purchaseCount", "key_purchaseValue"]
},
])
);
توجه داشته باشید که چگونه با فهرست کردن چندین شناسه کلید در source_keys ، یک قطعه کلید یکسان را به چندین کلید اضافه میکنید - قطعه کلید به هر دو کلید اضافه خواهد شد.
تنظیم مقادیر قابل جمع
قبل از تنظیم مقادیر قابل جمع، باید آنها را مقیاسبندی کنید تا نویز کاهش یابد.
فرض کنید یک خرید برای محصول نوع ۲۵ به قیمت ۵۲ دلار انجام شده است.
شما این موارد را مستقیماً به عنوان مقادیر قابل جمع تنظیم نخواهید کرد:
key_purchaseCount: 1 تبدیلkey_purchaseValue: ۵۲ دلار
در عوض، قبل از ثبت این مقادیر قابل جمع، باید آنها را مقیاسبندی کنید تا نویز به حداقل برسد.
شما دو هدف دارید که باید بودجه مشارکت خود را صرف آنها کنید، بنابراین ممکن است تصمیم بگیرید بودجه مشارکت را به دو قسمت تقسیم کنید.
In this case, each goal is allocated a maximum of CONTRIBUTION_BUDGET/2 (=65,536/2=32,768).
Let's assume the maximum purchase value for a single user, based on purchase history across all users of the site, is $1,500. There may be outliers, for example very few users who spent over that sum, but you may decide to ignore these outliers.
Your scaling factor for the purchase value should be:
(( CONTRIBUTION_BUDGET /2) / 1,500) = 32,768/1,500 = 21.8 ≈ 22
Your scaling factor for purchase count is 32,768/1 = 32,768, since you decided to track at most one purchase per ad click or view (source event).
You can now set these values:
-
key_purchaseCount: 1 × 32,768 = 32,768 -
key_purchaseValue: 52 × 22 = 1,144
In practice, you would set them as follows, using the dedicated header Attribution-Reporting-Register-Aggregatable-Values :
// Instruct the browser to schedule-send a report
res.set(
"Attribution-Reporting-Register-Aggregatable-Values",
JSON.stringify({
"key_purchaseCount": 32768,
"key_purchaseValue": 1144,
})
);
The aggregatable report is generated
The browser matches the conversion to a previous view or click and generates an aggregatable report, which includes the encrypted payload next to report metadata.
The following is an example of the data that could be found within the payload of the aggregatable report, if it was readable in cleartext:
[
{
key: 0x3cf867903fbb73ecf9e491fe37e55a0c, // = source-side key piece OR conversion-side key piece for the key key_purchaseCount
value: 32768 // the scaled value for 1 conversion, in the context of [CONTRIBUTION_BUDGET/2]
},
{
key: 0x245265f432f16e73f9e491fe37e55a0c, // source-side key piece OR conversion-side key piece for the key key_purchaseValue
value: 1144 // the scaled value for $52, in the context of [CONTRIBUTION_BUDGET/2]
},
]
Here, you can see two separate contributions within one single aggregatable report.
Request a summary report
- Batch aggregatable reports. Follow the advice offered in Batching .
- Generate the keys you want to see data for. For example, to see summary data for
COUNT(total number of purchases) andVALUE(total purchase value) for the Campaign ID 12 × Geography ID 7 × Product category 25:- Generate the source-side key piece, as you did when setting it in the browser .
- Generate the trigger-side key piece, as you did when setting it in the browser .
| Metric you want to request 1 | Source-side key piece | Trigger-side key piece | Key to request to the aggregation service 2 |
|---|---|---|---|
Total purchase count ( COUNT ) | 0x3cf867903fbb73ec 0000000000000000 | 0x00000000000000 00f9e491fe37e55a0c | 0x3cf867903fbb73 ecf9e491fe37e55a0c |
Total purchase value ( VALUE ) | 0x245265f432f16e73 0000000000000000 | 0x0000000000000000 f9e491fe37e55a0c | 0x245265f432f16e73 f9e491fe37e55a0c |
- Request summary data to the aggregation service for these keys.
Handle the summary report
Ultimately, you receive a summary report that may look like this:
[
{"bucket": "00111100111110000110011110010000001111111011101101110011111011001111100111100100100100011111111000110111111001010101101000001100",
"value": "2558500"},
{"bucket": "00100100010100100110010111110100001100101111000101101110011100111111100111100100100100011111111000110111111001010101101000001100",
"value": "687060"},
…
]
The first bucket is the COUNT key in binary. The second bucket is the VALUE key in binary. Note that while the keys are heterogeneous ( COUNT versus VALUE ), they're contained in the same report.
Scale down the values
- 2,558,500 refers to the number of purchases for this key, scaled up by your previously calculated scaling factor. The scaling factor for the purchase count was 32,768. Divide 2,558,500 by the goal's contribution budget: 2,558,500/32,768 = 156.15 purchases.
- 687,060 → 687,060/22 = $31,230 total purchase value.
As a result, the summary reports give you the following insights:
- Within the reporting time period, campaign #12
run in Europe drove about 156 purchases (± noise)
for the product category #25
```
```text
- Within the reporting time period, campaign #12
run in Europe drove $31,230 of purchases (± noise)
for the product category #25.