«مطابقت دادههای کاربرداده» (UPDM) دادههای طرف اولی را که درباره کاربر جمعآوری کردهاید (مانند اطلاعات وبسایتها، برنامهها، یا فروشگاههای فیزیکیتان) با فعالیت همان کاربر در حالت واردشده به سیستم در سراسر دادههای آگهی Google، ازجمله دادههای تحت مالکیت و مدیریت Google، مرتبط میکند. این شامل دادههای خریداریشده ازطریق محصولات Google Marketing Platform (GMP) میشود، برای مثال، YouTube خریداریشده بااستفاده از Display & Video 360. سایر محصولات GMP که تحت مالکیت و مدیریت Google نیستند پشتیبانی نمیشوند.
برای واجدشرایط بودن برای تطبیق دادههای کاربرداده، رویداد آگهی باید به کاربر واردشده به سیستم در دادههای آگهی Google پیوند داده شود.
این سند ویژگی تطبیق دادههای کاربرداده را شرح میدهد و راهنماییهایی درباره راهاندازی و استفاده ارائه میدهد.
نمای کلی برگه اتصالات
کسب اطلاعات آماری ارزشمند تبلیغات اغلب مستلزم بههم پیوستن دادهها از منابع متعدد است. ساختن راهحل خودتان برای این مشکل خط لوله داده به سرمایهگذاری زمانی و مهندسی قابلتوجهی نیاز دارد. صفحه «اتصالها» در Ads Data Hub این فرایند را با ارائه یک میانای گامبهگام و راهنماییشده برای وارد کردن، تبدیل کردن، و مطابقت دادن دادههای آگهیهای شما در BigQuery ساده میکند تا بتوانید از آن در پُرسمانهای Ads Data Hub یا هر محصول دیگری که از BigQuery میخواند استفاده کنید. غنیسازی پُرسمانهایتان با دادههای شخص اول میتواند تجربههای غنیتری برای مشتریان ارائه دهد و دربرابر تغییرات ردگیری آگهی در سطح صنعت مقاومتر است.
صفحه «اتصالها» با ابزارهایی ساخته شده است که به شما امکان میدهد اطلاعات شناساننده شخصی (PII) را رمزگذاری کنید و بهشیوهای حریمخصوصیمحور با شریکان همرسانی کنید. پساز انتخاب ستونهای حاوی اطلاعات شناساننده شخصی، Ads Data Hub دادهها را رمزگذاری میکند تا مطمئن شود دادههای طرف اول شما فقط توسط افرادی که اجازه دارند صادر یا خوانده میشود. دانستن اینکه کدام دادههای طرف اول برای مورد استفاده سنجش یا فعالسازی شما موردنیاز است میتواند دشوار باشد، بنابراین Ads Data Hub فهرست جامعی از موارد استفاده ازپیش تعریفشده ارائه میدهد، سپس شما را در کل تجربه استخراج، تبدیل، و بار کردن دادههایتان راهنمایی میکند. درحالیکه میتوانید انواع مختلفی از اتصالها را ایجاد کنید، این سند فرض میکند که از صفحه «اتصالها» برای تطبیق دادههای ارائهشده توسط کاربر استفاده میکنید.
منابع داده شخص اول پشتیبانیشده
میتوانید دادهها را از این منابع داده وارد کنید:
- BigQuery
- فضای ذخیرهسازی ابری
- FTP امن (sFTP)
- برفدانه
- MySQL
- PostgreSQL
- Amazon Redshift
- Amazon S3
چون تطبیق دادههای ارائهشده توسط کاربر فقط در فضای آگهی تحت مالکیت و مدیریت Google برای کاربران واردشده به سیستم دردسترس است، تحت تأثیر منسوخ شدن کوکیهای طرف سوم در آینده قرار نمیگیرد. ازآنجاییکه این دادهها نسبتبه دادههای طرف سوم دربرابر تغییرات صنعت مقاومتر هستند، میتوانند اطلاعات آماری غنیتری ارائه دهند که میتواند به تعامل بیشتر مشتری منجر شود.
یادگیری اصطلاحات
- اتصال دادههای ارائهشده توسط کاربر: اتصال دادههای ارائهشده توسط کاربر را راهاندازی کنید تا دادههایتان را وارد و مطابقت دهید، وارد کردن دادهها را زمانبندی کنید، دادهها را تبدیل کنید، و دادههای آگهیهایتان را بااستفاده از شناسه کاربر مطابقت دهید. رویداد آگهی باید به کاربر واردشده به سیستم در دادههای آگهی Google پیوند داده شود. به چندین پروژه Google Cloud نیاز دارد.
- اتصال داده شخص اول: اتصال داده شخص اول را بهعنوان ابزار آمادهسازی داده راهاندازی کنید تا واردات داده را زمانبندی کنید و دادهها را بدون ویژگیهای پیشرفته UPDM تبدیل کنید. این نوع اتصال فقط به یک پروژه Google Cloud نیاز دارد.
- منبع داده: محصول متصل، فایل واردشده، یا ادغام شخص ثالث – مثل BigQuery.
- مقصد: مورد استفاده، بهطور معمول عبارتست از محصول Google یا ویژگی محصول وقتی دادههای واردشده فعال هستند – مثل تطبیق دادههای کاربرداده Ads Data Hub.
- پروژه سرپرست: پروژه Google Cloud که حاوی دادههای تبلیغاتی اختصاصی شما در قالب خام آن است.
- مجموعهداده خروجی: مجموعهداده BigQuery که Ads Data Hub در آن مینویسد. بهطور پیشفرض، این مجموعه دادهای تحت پروژه سرپرست شما است. برای تغییر آن به پروژه Google Cloud دیگر، پیکربندی حسابهای خدمات را ببینید.
خلاصه فرایند
- راهاندازی تطبیق و دریافت داده
- شما مطمئن شوید دادههای شخص اول شما در BigQuery قرار دارد و حساب سرویس شما به آن دسترسی خواندن دارد. راهاندازی دریافت داده را ببینید.
- دریافت و مطابقت دادههای شخص اول
- شما دادههای شخص اول خود را قالببندی و در مجموعه داده BigQuery خود بارگذاری میکنید. برای سادهترین راهاندازی، از پروژه سرپرست استفاده کنید. بااینحال، میتوانید از هر مجموعهداده BigQuery که مالک آن هستید استفاده کنید.
- شما با ایجاد یک اتصال و تنظیم یک زمانبندی، درخواست مطابقت داده را آغاز میکنید.
- Google دادههای پروژه شما و دادههای تحت مالکیت Google را که حاوی شناسه کاربر Google و دادههای درهمسازیشده ارائهشده توسط کاربر است به هم متصل میکند تا جدولهای مطابقت را بسازد و بهروز کند.
- انتقال دادههای طرف اول را ببینید
- پُرسمانهای جاری در Ads Data Hub، براساس دادههای مطابقتدادهشده
- شما پُرسمانها را درمقابل جدولهای مطابقت اجرا میکنید، همانطور که پُرسمانهای معمولی را در Ads Data Hub اجرا میکنید. دادههای مطابقتدادهشده پُرسمان را ببینید.
آشنایی با الزامات حریم خصوصی
جمعآوری دادههای مشتری
هنگام استفاده از تطبیق دادههای کاربرداده، باید دادههای طرف اول را بارگذاری کنید. این اطلاعات میتواند اطلاعاتی باشد که از وبسایتها، برنامهها، فروشگاههای واقعیتان، یا هر اطلاعاتی که مشتری مستقیماً با شما همرسانی کرده است جمعآوری کردهاید.
باید:
- مطمئن شوید که خطمشی رازداری شما شفافسازی میکند که دادههای مشتری را با اشخاص ثالث همرسانی میکنید تا خدماتی را ازجانب شما انجام دهند، و درصورت لزوم قانونی، برای این همرسانی رضایت دریافت میکنید.
- فقط از میانای برنامهسازی کاربردی یا میانای تأییدشده Google برای بارگذاری دادههای مشتری استفاده کنید
- از همه قوانین و مقررات قابلاجرا، ازجمله هرگونه کد خودتنظیمی یا صنعتی که ممکن است اعمال شود، پیروی کنید
تأیید رضایت شخص اول
برای اطمینان از اینکه میتوانید از دادههای طرف اول خود در Ads Data Hub استفاده کنید، باید تأیید کنید که طبق خطمشی رضایت کاربر اتحادیه اروپا و خطمشی Ads Data Hub، رضایت مناسب را برای همرسانی دادههای کاربران نهایی منطقه اقتصادی اروپا با Google دریافت کردهاید. این الزام برای هر حساب Ads Data Hub اعمال میشود و باید هربار که دادههای طرف اول جدیدی بارگذاری میکنید بهروز شود. هر کاربری میتواند این تأیید را ازطرف کل حساب انجام دهد.
توجه داشته باشید که همان قوانین پُرسمان سرویس Google که برای پُرسمانهای تجزیهوتحلیل اعمال میشود برای پُرسمانهای UPDM نیز اعمال میشود. برای مثال، هنگام ایجاد جدول مطابقت، نمیتوانید پرسمانهای بینسرویسی را برای کاربران ساکن منطقه اقتصادی اروپا اجرا کنید.
برای آشنایی با نحوه تأیید رضایت در Ads Data Hub، به الزامات کسب رضایت برای منطقه اقتصادی اروپا مراجعه کنید.
اندازه داده
برای محافظت از حریم خصوصی کاربر نهایی، تطبیق دادههای کاربرداده این الزامات را درخصوص اندازه دادههای شما اعمال میکند:
- باید حداقل ۱۰۰۰ رکورد در فهرست کاربرتان بارگذاری کنید.
- هر بهروزرسانی موفق جدول مطابقت شما باید حداقل تعداد کاربران جدید مطابقتدادهشده را داشته باشد. این رفتار مشابه بررسی تفاوتها است.
- فهرستتان نباید از حداکثر تعداد مجاز گزارشها فراتر رود. برای اطلاع از حداکثر حد داده، با نماینده Google تماس بگیرید.
راهاندازی کردن دریافت دادهها
قبلاز شروع، باید حساب Ads Data Hub خود را برای ایجاد اتصالهای داده پیکربندی کنید، که از این طریق خط لوله مطابقت دادههای خود را ایجاد خواهید کرد. کافی است این مراحل را فقط یکبار انجام دهید.
از صفحه اتصالها، روی شروع راهاندازی کلیک کنید تا دستیار راهاندازی حساب در مرحله فعالسازی «مطابقت دادههای کاربرداده» باز شود.
به اتصالها بروید
چه اجازههایی برای BigQuery و Cloud Storage اعطا میشود؟
اگر UPDM را برای استفاده با BigQuery یا Cloud Storage راهاندازی میکنید، از این مرجع برای درک اجازههایی که به حسابهای سرویس Ads Data Hub اعطا میشود استفاده کنید.
BigQuery
| حساب سرویس «Datafusion» | |||||||||
| هدف | از حساب سرویس datafusion برای نمایش فهرست فیلدهای منبع در میانای کاربری Ads Data Hub استفاده میشود. | ||||||||
| قالب | service-some-number@gcp-sa-datafusion.iam.gserviceaccount.com |
||||||||
| دسترسی لازم است |
|
||||||||
| حساب سرویس Dataproc | |||||||||
| هدف | حساب سرویس dataproc مسئول اجرای خطوط لوله داده در پسزمینه است. | ||||||||
| قالب | some-number-compute@developer.gserviceaccount.com |
||||||||
| دسترسی لازم است |
|
||||||||
| حساب سرویس مطابقت دادههای کاربرداده | |||||||||
| هدف | از حساب سرویس «مطابقت دادههای کاربرداده» برای اجرای کار مطابقت استفاده میشود. | ||||||||
| قالب | service-some-number@gcp-sa-adsdataconnector.iam.gserviceaccount.com |
||||||||
| دسترسی لازم است |
|
||||||||
فضای ذخیرهسازی ابری
| حساب سرویس «Datafusion» | |||||||
| هدف | از حساب سرویس datafusion برای نمایش فهرست فیلدهای منبع در میانای کاربری Ads Data Hub استفاده میشود. | ||||||
| قالب | service-some-number@gcp-sa-datafusion.iam.gserviceaccount.com |
||||||
| دسترسی لازم است |
|
||||||
| حساب سرویس Dataproc | |||||||
| هدف | حساب سرویس dataproc مسئول اجرای خطوط لوله داده در پسزمینه است. | ||||||
| قالب | some-number-compute@developer.gserviceaccount.com |
||||||
| دسترسی لازم است |
|
||||||
| حساب سرویس مطابقت دادههای کاربرداده | |||||||
| هدف | از حساب سرویس «مطابقت دادههای کاربرداده» برای اجرای کار مطابقت استفاده میشود. | ||||||
| قالب | service-some-number@gcp-sa-adsdataconnector.iam.gserviceaccount.com |
||||||
| دسترسی لازم است |
|
||||||
منابع دادههای دیگر
برای منابع دادههای دیگر لازم نیست
دریافت و مطابقت دادن دادههای شخص اول
اجازههای منبع و الزامات اتصال
«اتصالهای Ads Data Hub» از حساب سرویس نشاندادهشده در تنظیمات >
جزئیات > حساب سرویس (معمولاً
service-<number>@gcp-sa-adsdatahub.iam.gserviceaccount.com) استفاده میکند. این نقشها را به آن
اعطا کنید:
- منبع BigQuery:
roles/bigquery.dataViewer(بازدیدکننده دادههای BigQuery) در مجموعه داده یا جدول منبع. - منبع Cloud Storage:
roles/storage.objectViewer(Storage Object Viewer) در مخزن یا شیء منبع. - مقصد وارد کردن دادههای شخص اول:
roles/bigquery.dataEditor(ویرایشگر داده BigQuery) در مجموعه داده مقصد، اگر جدول در مجموعه داده پیشفرض شما نباشد.
شرایط لازم فیلد و نوع داده
- تطبیق دادههای کاربرداده (UPDM):
user_idبهعلاوه حداقل یک فیلد اطلاعات شناساننده شخصی (email،phone، یا نشانی کامل:first_name،last_name،country،zip_code) را نگاشت کنید.-
user_id،country، وzip_code: نوشتار سادهSTRING(درهمسازینشده). برای منبع BigQuery، این ستونها باید ازقبلSTRINGباشند؛ انواع دیگر (برای مثال،INT64) هنگام ایجاد اتصال ناموفق میشوند. Connectionsuser_idرا بهBYTESدر جدول مسابقه ارسال میکند.countryباید کد ISO 3166-1 alpha-2 دوحرفی باشد. email،phone،first_name، وlast_name:HASH—باید ازقبل درهمسازی SHA-256 و کدبندی Base64 شده باشد (مقدار شانزدهشانزدهی ۶۴ نویسهای SHA-256 نیز پذیرفته میشود). Connections دادهها را درهمسازی نمیکند. مقادیر نوشتار ساده هنگام ایجاد اتصال گرفته نمیشوند؛ سپس هر اجرا با... must be encoded using TO_BASE64(SHA256(...))ناموفق میشود.- اتصالهای تطبیق دادههای کاربرداده جدول مقصد ندارند. همه آنها در یک حساب، و پُرسمانهای UPDM که بهصورت دستی اجرا میشوند، در همان دادههای مطابقت مینویسند، بنابراین هر اجرا جایگزین اجرای قبلی میشود. یک اتصال «مطابقت دادههای کاربرداده» برای هر حساب کافی است.
- برای قوانین هر فیلد، به قالببندی دادهها برای ورودی مراجعه کنید.
- وارد کردن دادههای شخص اول:
- فقط از انواع دادههای ارائهشده در میانای کاربر استفاده کنید:
INTEGER،STRING،HASH،DOUBLE،DATE، وTIMESTAMP. انواع دیگر BigQuery پشتیبانی نمیشوند. - منبع BigQuery: نوع نگاشتشده اعمال نمیشود؛ هر ستون مقصد نوع ستون منبع خود را حفظ میکند.
- منبع Cloud Storage: ستونها بهصورت
STRINGخوانده میشوند و به نوع نگاشتشده تبدیل میشوند. مقادیری که نمیتوانند تبدیل شوند، بدون اینکه اجرای دستور ناموفق شود، بهNULLتبدیل میشوند. - هر اجرا کل جدول مقصد را جایگزین میکند؛ چیزی به آن اضافه نمیکند. اگر منبع ردیفی نداشته باشد، مقصد خالی میشود. از جدول منبع یا جدولی که باید دادههای آن را حفظ کنید بهعنوان مقصد استفاده نکنید.
- فقط از انواع دادههای ارائهشده در میانای کاربر استفاده کنید:
الزامات ستون CSV فضای ذخیرهسازی ابری
- ردیف سرصفحه اضافه کنید. خط اول نادیده گرفته میشود؛ از نام ستونهای آن استفاده نمیشود.
- فایل باید دقیقاً حاوی ستونهای منبع نگاشتشده باشد، نه بیشتر و نه کمتر. ستونهای اضافی باعث ناموفق شدن اجرا میشود.
- وارد کردن دادههای شخص اول: ستونها باید به همان ترتیبی باشند که در نگاشتهای فیلد قرار دارند.
- تطبیق دادههای کاربرداده: ستونها باید به این ترتیب باشند و فقط فیلدهایی را که نگاشت میکنید نگه دارید:
user_id،email،phone،first_name،last_name،country،zip_code. ترتیب ردیفهای نگاشت اهمیتی ندارد. - ترتیب متفاوت ستونها شناسایی نمیشود: مقادیر بدون خطا در فیلدهای اشتباه بار میشود (یا نرخهای مطابقت کاهش مییابد).
منابع داده پشتیبانیشده و محدودیتهای اتصال
- منابع داده: فقط منابع BigQuery و Cloud Storage پشتیبانی میشوند.
- نامهای جدول BigQuery: جدولهای BigQuery مبدأ و مقصد به نام کامل
project.dataset.tableنیاز دارند. - مسیرهای فایل Cloud Storage: یک URI فایل (مانند
gs://bucket/path/file.csv) ارائه دهید. مسیرهای عام با*یا?پشتیبانی نمیشوند. - نامهای اتصال: هر اتصال در حساب باید نام یکتایی داشته باشد.
قالببندی دادهها برای ورودی
دادههای شما باید از این الزامات قالببندی پیروی کند تا بهدرستی مطابقت داده شود:
- در جاهایی که در شرح فیلد ورودی زیر نشان داده شده است، باید بااستفاده از درهمسازی SHA256 بارگذاری کنید.
- مطابقت دادههای کاربرداده از کدبندی Base64 پشتیبانی میکند. TO_BASE64 را ببینید.
- فیلدهای ورودی باید بهصورت رشته قالببندی شوند. برای مثال، اگر از
تابع چکیدهساز SHA256 BigQuery استفاده میکنید،
از تبدیل زیر استفاده کنید:
TO_BASE64(SHA256(user_data)).
شناسه کاربر
- نوع داده:
BYTES - درهمسازی: None
ایمیل
- برداشتن فاصلههای سفید اضافی در ابتدا و انتهای متن
- همه نویسهها را به حروف کوچک تبدیل میکند
- برای همه نشانیهای ایمیل، نام دامنه اضافه کنید، مثلاً gmail.com یا hotmail.co.jp
- اعرابها را بردارید—برای مثال، è، é، ê، یا ë را به e تغییر دهید
- همه نقطههای (.) قبلاز نام دامنه را در نشانیهای ایمیل
gmail.comوgooglemail.comبردارید - درهمسازی: SHA256 کدبندیشده با Base64
معتبر: TO_BASE64(SHA256("jeffersonloveshiking@gmail.com"))
نامعتبر: TO_BASE64(SHA256("JéffersonLôvesHiking@gmail.com"))
تلفن
- حذف فاصله سفید
- قالب در قالب E.164—برای مثال، نمونه ایالات متحده: +14155552671، نمونه پادشاهی متحد (UK): +442071838750
- همه نویسههای خاص بهجز «+» را قبلاز کد کشور بردارید
- درهمسازی: SHA256 کدبندیشده با Base64
معتبر: TO_BASE64(SHA256("+18005550101"))
نامعتبر: TO_BASE64(SHA256("(800) 555-0101"))
نام
- حذف فاصله سفید
- همه نویسهها را به حروف کوچک تبدیل میکند
- همه پیشوندها را بردارید، مثلاً خانم، آقای، خانم، دکتر
- تلفظها را حذف نکنید—برای مثال، è، é، ê، یا ë
- درهمسازی: SHA256 کدبندیشده با Base64
معتبر: TO_BASE64(SHA256("daní"))
نامعتبر: TO_BASE64(SHA256("Daní"))
نام خانوادگی
- حذف فاصله سفید
- همه نویسهها را به حروف کوچک تبدیل میکند
- همه پسوندها را بردارید - برای مثال Jr.، Sr., 2nd، 3rd، II، III، PHD، MD
- تلفظها را حذف نکنید—برای مثال، è، é، ê، یا ë
- درهمسازی: SHA256 کدبندیشده با Base64
معتبر: TO_BASE64(SHA256("délacruz"))
نامعتبر: TO_BASE64(SHA256("dé la Cruz, Jr."))
کشور
- کد کشور را وارد کنید، حتی اگر همه دادههای مشتری شما از یک کشور باشد
- دادههای کشور را درهم نکنید
- از کدهای کشور ISO 3166-1 alpha-2 استفاده کنید
- درهمسازی: None
معتبر: US
نامعتبر: United States of America یا USA
کد پستی
- دادههای کد پستی را درهم نکنید
- کد پستی ایالات متحده و بینالمللی مجاز است
- برای ایالات متحده:
- کدهای ۵ رقمی مجاز است—برای مثال، ۹۴۰۴۳
- ۵ رقم بهدنبال ۴ رقم داخلی نیز مجاز است—برای مثال، ۹۴۰۴۳-۱۳۵۱ یا ۹۴۰۴۳۱۳۵۱
- برای همه کشورهای دیگر:
- نیازی به قالببندی نیست (نیازی به استفاده از حروف کوچک یا برداشتن فاصلهها و نویسههای خاص نیست)
- افزونههای کد پستی را حذف کنید
- درهمسازی: None
اعتبارسنجی درهمسازی و کدبندی دادهها
میتوانید از اسکریپتهای اعتبارسنجی درهمسازی زیر استفاده کنید تا مطمئن شوید دادههایتان بهدرستی قالببندی شدهاند.
JavaScript
/**
* @fileoverview Provides the hashing algorithm, as well as some valid hashes of
* sample data for testing.
*/
async function hash(token) {
// Removes leading or trailing spaces and converts all characters to lowercase.
const formattedToken = token.trim().toLowerCase();
// Hashes the formatted string using the SHA-256 hashing algorithm.
const hashBuffer = await crypto.subtle.digest(
'SHA-256', (new TextEncoder()).encode(formattedToken));
// Converts the hash buffer to a base64-encoded string and returns it.
const base64Str = btoa(String.fromCharCode(...new Uint8Array(hashBuffer)));
return base64Str;
}
function main() {
// Expected hash for test@gmail.com:
// h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
hash('test@gmail.com').then(result => console.log(result));
// Expected hash for +18005551212:
// YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
hash('+18005551212').then(result => console.log(result));
// Expected hash for John: ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
hash('John').then(result => console.log(result));
// Expected hash for Doe: eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
hash('Doe').then(result => console.log(result));
}
main()
Python
"""Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Supports: Python 2, Python 3
Sample hashes:
- Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
- Phone '+18005551212': YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
- First name 'John': ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
- Last name 'Doe': eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
"""
import base64
import hashlib
def hash(token):
# Generates a base64-encoded SHA-256 hash of a normalized input string.
return base64.b64encode(
hashlib.sha256(
token.strip().lower().encode('utf-8')).digest()).decode('utf-8')
def print_hash(token, expected=None):
# Computes and displays the hash of a token, with optional validation.
hashed = hash(token)
if expected is not None and hashed != expected:
print(
'ERROR: Incorrect hash for token "{}". Expected "{}", got "{}"'.format(
token, expected, hashed))
return
print('Hash: "{}"\t(Token: {})'.format(hashed, token))
def main():
# Tests the hash function with sample tokens and expected results.
print_hash(
'test@gmail.com', expected='h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=')
print_hash(
'+18005551212', expected='YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=')
print_hash('John', expected='ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=')
print_hash('Doe', expected='eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=')
if __name__ == '__main__':
main()
رفتن
/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Sample hashes:
- Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
- Phone '+18005551212': YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
- First name 'John': ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
- Last name 'Doe': eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
*/
package main
import (
"crypto/sha256"
"encoding/base64"
"fmt"
"strings"
)
// Hash hashes an email, phone, first name, or last name into the correct format.
func Hash(token string) string {
formatted := strings.TrimSpace(strings.ToLower(token))
hashed := sha256.Sum256([]byte(formatted))
encoded := base64.StdEncoding.EncodeToString(hashed[:])
return encoded
}
// PrintHash prints the hash for a token.
func PrintHash(token string) {
fmt.Printf("Hash: \"%s\"\t(Token: %s)\n", Hash(token), token)
}
func main() {
PrintHash("test@gmail.com")
PrintHash("+18005551212")
PrintHash("John")
PrintHash("Doe")
}
جاوا
package updm.hashing;
import static java.nio.charset.StandardCharsets.UTF_8;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
/**
* Example of the hashing algorithm.
*
* <p>Sample hashes:
*
* <ul>
* <li>Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
* <li>Phone '+18005551212': YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
* <li>First name 'John': ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
* <li>Last name 'Doe': eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
* </ul>
*/
public final class HashExample {
private HashExample() {}
public static String hash(String token) {
// Normalizes and hashes the input token using SHA-256 and Base64 encoding.
String formattedToken = token.toLowerCase().strip();
byte[] hash;
try {
hash = MessageDigest.getInstance("SHA-256").digest(formattedToken.getBytes(UTF_8));
} catch (NoSuchAlgorithmException e) {
throw new IllegalStateException("SHA-256 not supported", e);
}
return Base64.getEncoder().encodeToString(hash);
}
public static void printHash(String token) {
// Calculates and prints the hash for the given token.
System.out.printf("Hash: \"%s\"\t(Token: %s)\n", hash(token), token);
}
public static void main(String[] args) {
// Executes hash calculations and prints results for sample tokens.
printHash("test@gmail.com");
printHash("+18005551212");
printHash("John");
printHash("Doe");
}
}
SQL
/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
The following code uses Google Standard SQL and can be run on BigQuery to generate match tables from unhashed data.
Sample hashes:
- Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
- Phone '+18005551212': YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
- First name 'John': ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
- Last name 'Doe': eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
The unhashed input table schema is assumed to be:
- Column name: UserID, Type: String
- Column name: Email, Type: String
- Column name: Phone, Type: String
- Column name: FirstName, Type: String
- Column name: LastName, Type: String
- Column name: PostalCode, Type: String
- Column name: CountryCode, Type: String
*/
-- Creates a new table with Base64-encoded SHA-256 hashes of specified columns.
CREATE TABLE `your_project_name.your_dataset_name.output_hashed_table_name`
AS
SELECT
UserID,
TO_BASE64(SHA256(LOWER(Email))) AS Email,
TO_BASE64(SHA256(Phone)) AS Phone,
TO_BASE64(SHA256(LOWER(FirstName))) AS FirstName,
TO_BASE64(SHA256(LOWER(LastName))) AS LastName,
PostalCode,
CountryCode,
FROM
`your_project_name.your_dataset_name.input_unhashed_table_name`;
کلیدهای پیوستن
برخیاز ترکیبهای دادههای ارائهشده توسط کاربر قویتر از بقیه هستند. در زیر فهرستی از ترکیبهای مختلف دادههای ارائهشده توسط کاربر آمده است که براساس قدرت نسبی رتبهبندی شدهاند. اگر از نشانی استفاده میکنید، باید این موارد را اضافه کنید: نام، نام خانوادگی، کشور، و کد پستی.
- ایمیل، تلفن، نشانی (قویترین)
- تلفن، نشانی
- ایمیل، نشانی
- ایمیل، تلفن
- نشانی
- تلفن
- ایمیل (ضعیفترین)
ایجاد جدول مطابقت
- روی اتصالها > ایجاد کردن اتصال > تطبیق دادههای کاربرداده کلیک کنید.
- منبع دادهای را انتخاب کنید، سپس روی متصل کردن کلیک کنید.
- درصورت درخواست، اصالتسنجی کنید، سپس روی بعدی کلیک کنید:
BigQuery
روی «اعمال کردن» کلیک کنید تا دسترسی به BigQuery را مجاز کنید.
فضای ذخیرهسازی ابری
روی «اعمال» کلیک کنید تا دسترسی به Cloud Storage را مجاز کنید.
MySQL
مکان، درگاه، نام کاربری، و گذرواژه پایگاه داده MySQL خودتان را وارد کنید.
S3
کلید دسترسی محرمانه Amazon S3 را وارد کنید.
PostgreSQL
مکان، درگاه، نام کاربری، گذرواژه، و پایگاه داده PostgreSQL خودتان را وارد کنید.
Redshift
مکان، درگاه، نام کاربری، گذرواژه، و پایگاه داده Redshift خودتان را وارد کنید.
sFTP
مکان، نام کاربری، و گذرواژه سرور sFTP خودتان را وارد کنید.
برفدانه
شناسه حساب Snowflake، نام کاربری، و گذرواژه را وارد کنید.
- منبع دادهتان را پیکربندی کنید، سپس روی بعدی کلیک کنید:
BigQuery
جدول BigQuery را برای وارد کردن انتخاب کنید.
فضای ذخیرهسازی ابری
مسیر gsutil را وارد کنید، مثلاً
gs://my-bucket/folder/و قالببندی فایل را انتخاب کنید.اگر این اولینباری است که این منبع را متصل کردهاید، هشداری ظاهر میشود. روی «اعمال کردن» کلیک کنید تا دسترسی را مجاز کنید، سپس روی «بعدی» کلیک کنید. توجه: باید نقشی با اجازه واگذاری
storage.buckets.setIamPolicyبرای دسته مربوطه داشته باشید.MySQL
پایگاه داده و جدول MySQL موردنظرتان را برای استفاده انتخاب کنید.
S3
URI فایلی را که میخواهید بارگذاری کنید درارتباطبا نشانی میزبان وارد کنید.
PostgreSQL
نام جدول (یا نمای) و طرحواره PostgreSQL را وارد کنید.
Redshift
نام جدول (یا نمای) Redshift و طرحواره را وارد کنید. بهطور پیشفرض، Redshift برای مکان پایگاه دادهها از نشانیهای وبی استفاده میکند که از این الگو پیروی میکنند:
cluster-identifier.account-number.aws-region.redshift.amazonaws.com.sFTP
مسیر و نام فایل را با قالب زیر وارد کنید:
/PATH/FILENAME.csvبرفدانه
پایگاه داده، طرحواره، و جدول (یا نمای) Snowflake موردنظرتان را برای استفاده وارد کنید.
- مجموعهداده BigQuery را برای استفاده بهعنوان مقصد واسطه انتخاب کنید، سپس روی بعدی کلیک کنید. با انجام این مرحله اطمینان حاصل میشود که دادههایتان درست قالببندی شده باشند.
- اختیاری: قالب دادههایتان را اصلاح کنید. تبدیلها شامل محاسبه درهمسازی، قالببندی حروف کوچک/بزرگ، و ادغام/تقسیم فیلدها است.
- روی کنش > > تبدیل کلیک کنید.
- در پانلی که بالا میآید، روی افزودن تبدیل یا افزودن تبدیل دیگر کلیک کنید
- نوع تبدیل را از منوِ کرکرهای انتخاب کنید و الزامات را وارد کنید.
- روی ذخیره کلیک کنید.
- حداقل یک کلید پیوستن انتخاب کنید و فیلدهایی را که استفاده خواهید کرد تخصیص دهید. Ads Data Hub بهطور خودکار فیلدهای دارای نامهای یکسان را که با نشان داده شدهاند نگاشت میکند. ویرایشهای لازم را انجام دهید، سپس روی بعدی کلیک کنید.
- تنظیم کردن برنامه زمانی:
- اتصال را نامگذاری کنید.
- بسامدی تنظیم کنید که تعیین کند دادهها هر چند وقت یکبار به مجموعه دادهای که در مرحله قبل انتخاب کردید وارد شود. هر اجرا دادههای جدول مقصد را رونویسی خواهد کرد.
- مشخص کنید که میخواهید تداخل شناسه کاربر چگونه مدیریت شود. میتوانید انتخاب کنید که مطابقت موجود را حفظ کنید یا آن را با دادههای جدید رونویسی کنید.
- روی تمام کلیک کنید؛ جدولهای مطابقت معمولاً ۱۲ ساعت پساز ایجاد شدن برای پُرسمان آماده هستند.
مشاهده جزئیات اتصال
صفحه جزئیات اتصال اطلاعاتی درباره اجراها و خطاهای اخیر اتصال موردنظر به شما میدهد. برای مشاهده جزئیات اتصال خاص:
- روی اتصالها کلیک کنید.
- روی نام اتصال کلیک کنید تا جزئیات آن را ببینید.
- اکنون میتوانید جزئیات اتصال و اجراهای اخیر را ببینید. هرکدام دو نوع خطای احتمالی را نشان میدهد: خطاهای سطح اتصال (اتصال اجرا نشد) و خطاهای سطح ردیف (ردیفی وارد نشد).
- وضعیت ناموفق نشان میدهد که کل اتصال اجرا نشده است (مثلاً مشکل اجازه حساب سرویس). روی وضعیت خطا کلیک کنید تا ببینید کدام خطاها بر اتصال تأثیر گذاشتهاند.
- وضعیت تکمیلشده نشان میدهد که اتصال باموفقیت اجرا شده است. بااینحال، ممکن است هنوز خطاهایی در سطح ردیف وجود داشته باشد که با مقدار غیرصفر در ستون «ردیفهای دارای خطا» نشان داده میشود. برای کسب اطلاعات بیشتر درباره اینکه کدام سوابق ناموفق بودهاند، روی مقدار کلیک کنید.
ویرایش کردن اتصال
جزئیات زیر را میتوان ویرایش کرد:
- نام رابط
- زمانبندی
- جدول مقصد
- تخصیص فیلدها
ویرایش منبع داده پشتیبانی نمیشود. برای تغییر منبع داده، اتصال جدیدی ایجاد کنید و اتصال قدیمی را حذف کنید.
برای ویرایش جزئیات اتصال:
- روی اتصالها کلیک کنید.
- روی نام اتصالی که میخواهید ویرایش کنید کلیک کنید.
- جزئیاتی را که میخواهید تغییر دهید ویرایش کنید:
- نام اتصال: روی ویرایش کلیک کنید، نام جدید را وارد کنید، سپس Enter را فشار دهید.
- زمانبندی: روی ویرایش کلیک کنید، زمانبندی جدید را تنظیم کنید، سپس روی ذخیره کلیک کنید.
- جدول مقصد: روی ویرایش کلیک کنید، نام مقصد جدید را وارد کنید، سپس روی ذخیره کلیک کنید.
- نگاشت فیلد: روی کلیک کنید، تغییرات را در فیلدها اعمال کنید، سپس روی ذخیره کلیک کنید.
- روی کلیک کنید؛
انتقال دادن اتصالات موجود
اتصالهای موجود در برگه اتصالها به تجربه بهروزشده «اتصالها» که مستقیماً در Ads Data Hub ساخته شده است منتقل میشوند. اتصالهای بهروزشده
منابع را میخوانند و مقصدهای نوشتن را بااستفاده از حساب سرویس نشاندادهشده در
تنظیمات > جزئیات > حساب سرویس (معمولاً
service-<number>@gcp-sa-adsdatahub.iam.gserviceaccount.com) بهجای
حسابهای سرویس قدیمی Data Fusion، Dataproc، و UPDM انجام میدهند.
این دستورهای اقدام را قبلاز انتقال اتصالهایتان تکمیل کنید:
- اعطای اجازههای حساب سرویس: به حساب سرویس نشاندادهشده در
تنظیمات > جزئیات > حساب سرویس (معمولاً
service-<number>@gcp-sa-adsdatahub.iam.gserviceaccount.com) نقشهای منبع و مقصد لازم را اعطا کنید (roles/bigquery.dataViewer،roles/storage.objectViewer، وroles/bigquery.dataEditorدر مجموعههای داده مقصد غیرپیشفرض). اتصالهای دارای منابع ناخوانا، حذفشده، یا تغییریافته ممکن است همچنان منتقل شوند (بهویژه منابع Cloud Storage که در زمان انتقال اعتبارسنجی نمیشوند)، اما اجراها تا زمانی که دسترسی اعطا نکنید یا منبع را اصلاح نکنید ناموفق خواهند بود. - تبدیل اتصالهای پشتیبانینشده: اتصالهای دارای پیکربندیهای زیر منتقل نخواهند شد. آنها را به اتصالات BigQuery یا
Cloud Storage پشتیبانیشده تبدیل کنید:
- سایر منابع داده (Amazon S3، Snowflake، MySQL، PostgreSQL، Amazon Redshift، sFTP، یا Salesforce): ابتدا دادهها را در BigQuery یا «فضای ذخیرهسازی ابری» آماده کنید، سپس اتصال BigQuery یا «فضای ذخیرهسازی ابری» ایجاد کنید.
- نگاشتهای فیلد یا انواع دادههای پشتیبانینشده: اتصال را بهروزرسانی یا بازآفرینی کنید تا الزامات فیلد و نوع داده را برآورده کند.
- مسیرهای جانشین Cloud Storage (
*یا?): شناسه منبع یکسان جانشین را با شناسه منبع یکسان تکفایل جایگزین کنید یا ابتدا فایلها را در BigQuery بار کنید. - نامهای اتصال تکراری: نام اتصالهای تکراری را تغییر دهید یا آنها را حذف کنید تا هر اتصال در حساب نامی یکتا داشته باشد.
- حذف اتصالهای استفادهنشده: اتصالهای قدیمی را که دیگر به آنها نیاز ندارید حذف کنید.
دادههای منطبق با پُرسمان
پُرسمان از جدولهای مطابقت
وقتی جدولهای مطابقت شما حاوی دادههای کافی برای برآورده کردن بررسیهای حریم خصوصی باشد، آماده اجرای پُرسمانها در جدولها هستید.
جدول اصلی برای دادههای شخص اول (1PD) با my_data نشان داده میشود.
این شامل اطلاعات شناساننده شخصی (PII) و دادههای غیر PII میشود.
استفاده از جدول اصلی میتواند گزارشهای شما را با اطلاعات آماری بیشتری بهبود بخشد، زیرا
در مقایسه با جدول مطابقت، تمام دادههای شخص اول موجود در محدوده را نشان میدهد.
هر جدول در طرحواره Ads Data Hub که حاوی فیلد user_id است،
با جدول مطابقت همراه است. برای مثال، برای جدول
adh.google_ads_impressions، Ads Data Hub جدول مطابقت دیگری نیز
بهنام adh.google_ads_impressions_updm تولید میکند که حاوی شناسههای کاربر شما است.
جدولهای مطابقت جداگانهای برای جدولهای شبکه جداشده از خطمشی ایجاد میشود. برای
مثال، برای جدول adh.google_ads_impressions_policy_isolated_network، Ads
Data Hub جدول مطابقت دیگری نیز بهنام
adh.google_ads_impressions_policy_isolated_network_updm تولید میکند که حاوی
شناسههای کاربر شما است.
این جدولها حاوی زیرمجموعهای از کاربران موجود در جدولهای اصلی هستند،
که در آن user_id مطابقت دارد. برای مثال، اگر جدول اصلی حاوی دادههای «کاربر الف» و «کاربر ب» باشد، اما فقط «کاربر الف» مطابقت داشته باشد، «کاربر ب» در جدول مطابقت نخواهد بود.
جدولهای مطابقت حاوی ستون دیگری بهنام customer_data_user_id هستند که
شناسه کاربر را بهصورت BYTES ذخیره میکند.
هنگام نوشتن پُرسمانها، مهم است که نوع فیلد را درنظر بگیرید. عملگرهای مقایسه SQL انتظار دارند که مقادیر ثابتی که مقایسه میکنید از یک نوع باشند. بسته به اینکه user_id چگونه در جدول دادههای طرف اول شما ذخیره شده است، ممکن است لازم باشد مقادیر موجود در جدول را قبلاز مطابقت دادن دادهها کدبندی کنید.
برای مطابقتهای موفق، باید کلید پیوستن خود را به BYTES تبدیل کنید:
JOIN ON
adh.google_ads_impressions_updm.customer_data_user_id = CAST(my_data.user_id AS BYTES)
بهعلاوه، مقایسه رشتهها در SQL به حروف بزرگ و کوچک حساس است، بنابراین ممکن است لازم باشد رشتهها را در هر دو طرف مقایسه خود کدگذاری کنید تا مطمئن شوید که میتوان آنها را بهدرستی مقایسه کرد.
پُرسمانهای نمونه
شمارش کاربران منطبق
این پُرسمان تعداد کاربران مطابقتدادهشده را در جدول ظهورهای «آگهیهای Google» شما میشمارد.
/* Count matched users in Google Ads impressions table */
SELECT COUNT(DISTINCT user_id)
FROM adh.google_ads_impressions_updm
محاسبه نرخ مطابقت
همه کاربران واجدشرایط مطابقت نیستند. برای مثال، کاربران خارجشده از سیستم،
کودکان، و کاربران بدون رضایت اعلامشده ازطریق «مطابقت دادههای کاربرداده» مطابقت داده نمیشوند. میتوانید از فیلد
is_updm_eligible برای محاسبه دقیقتر نرخهای مطابقت «مطابقت دادههای کاربرداده» استفاده کنید. توجه داشته باشید که
فیلد is_updm_eligible از ۱ اکتبر ۲۰۲۴ دردسترس بود. نمیتوانید از این فیلد برای محاسبه نرخهای مطابقت قبلاز آن تاریخ استفاده کنید.
/* Calculate the UPDM match rate */
CREATE TEMP TABLE total_events OPTIONS(privacy_checked_export=TRUE) AS
SELECT
customer_id,
COUNT(*) AS n
FROM adh.google_ads_impressions
WHERE is_updm_eligible
GROUP BY 1;
CREATE TEMP TABLE matched_events OPTIONS(privacy_checked_export=TRUE) AS
SELECT
customer_id,
COUNT(*) AS n
FROM adh.google_ads_impressions_updm
GROUP BY 1;
SELECT
customer_id,
SAFE_DIVIDE(matched_events.n, total_events.n) AS match_rate
FROM total_events
LEFT JOIN matched_events
USING (customer_id)
پیوستن به دادههای شخص اول و Google Ads
این پُرسمان نحوه پیوستن دادههای شخص اول به دادههای Google Ads را نشان میدهد:
/* Join first-party data with Google Ads data. The customer_data_user_id field
contains your ID as BYTES. You need to cast your join key into BYTES for
successful matches. */
SELECT
inventory_type,
COUNT(*) AS impressions
FROM
adh.yt_reserve_impressions_updm AS google_data_imp
LEFT JOIN
`my_data`
ON
google_data_imp.customer_data_user_id = CAST(my_data.user_id AS BYTES)
GROUP BY
inventory_type
پرسشگان مطابقت دادههای کاربرداده
برای مشاهده فهرست پرسشگان مربوط به «مطابقت دادههای کاربرداده»، به پرسشگان مطابقت دادههای کاربرداده مراجعه کنید.