تطبیق دادههای ارائهشده توسط کاربر (UPDM) به دادههای شخص اولی که درباره یک کاربر جمعآوری کردهاید - مانند اطلاعات از وبسایتها، برنامهها یا فروشگاههای فیزیکی خود - با فعالیت ورود به سیستم همان کاربر در همه دادههای تبلیغات Google ، از جمله دادههای متعلق به Google و دادههای ادارهشده، میپیوندد. این شامل دادههایی میشود که از طریق محصولات Google Marketing Platform (GMP) خریداری شدهاند، برای مثال، YouTube با استفاده از Display & Video 360 خریداری شده است. سایر محصولات GMP که متعلق به Google و اداره نمیشوند، پشتیبانی نمیشوند.
برای واجد شرایط بودن برای مطابقت دادههای ارائهشده توسط کاربر، رویداد تبلیغاتی باید به کاربر واردشده در دادههای آگهی Google پیوند داده شود.
این سند ویژگی تطبیق دادههای ارائهشده توسط کاربر را توصیف میکند و راهنمایی در مورد راهاندازی و استفاده ارائه میدهد.
نمای کلی برگه اتصالات
به دست آوردن بینش تبلیغاتی ارزشمند اغلب مستلزم پیوند داده ها از منابع متعدد است. ایجاد راه حل خود برای این مشکل خط لوله داده ها نیازمند سرمایه گذاری زمانی قابل توجه و سرمایه گذاری مهندسی است. صفحه اتصالات در Ads Data Hub این فرآیند را با ارائه یک رابط گام به گام و هدایتشده برای وارد کردن، تبدیل و مطابقت دادههای تبلیغات خود در BigQuery ساده میکند تا بتوانید از آن در جستارهای Ads Data Hub یا هر محصول دیگری که از BigQuery خوانده میشود استفاده کنید. غنیسازی پرسشهای شما با دادههای شخص اول میتواند تجربیات غنیتری برای مشتری ارائه دهد و در برابر تغییرات ردیابی تبلیغات در سطح صنعت مقاومتر است.
صفحه اتصالات با ابزارهایی ساخته شده است که به شما امکان می دهد اطلاعات شناسایی شخصی (PII) را رمزگذاری کنید و به روشی حفظ حریم خصوصی با شرکا به اشتراک بگذارید. پس از انتخاب ستونهایی که حاوی PII هستند، Ads Data Hub دادهها را رمزگذاری میکند و اطمینان حاصل میکند که دادههای شخص اول شما فقط میتوانند توسط افرادی که مجوز انجام این کار را دارند صادر یا خوانده شوند. دانستن اینکه کدام دادههای شخص اول برای اندازهگیری یا مورد استفاده فعالسازی شما مورد نیاز است میتواند دشوار باشد، بنابراین Ads Data Hub فهرستی جامع از موارد استفاده از پیش تعریفشده را ارائه میکند، سپس شما را در کل تجربه استخراج، تبدیل، و بارگیری دادههایتان راهنمایی میکند. در حالی که می تواند چندین نوع اتصال ایجاد کند، این سند فرض می کند که از صفحه اتصالات برای تطبیق داده های ارائه شده توسط کاربر استفاده می کنید.
پشتیبانی از منابع داده شخص اول
می توانید داده ها را از این منابع داده وارد کنید:
- BigQuery
- فضای ذخیره سازی ابری
- FTP امن (sFTP)
- دانه برف
- MySQL
- PostgreSQL
- آمازون Redshift
- آمازون S3
از آنجایی که تطبیق دادههای ارائهشده توسط کاربر فقط در موجودی متعلق به Google و برای کاربرانی که به سیستم وارد شدهاند در دسترس است، تحت تأثیر از بین رفتن آتی کوکیهای شخص ثالث قرار نمیگیرد. از آنجایی که نسبت به دادههای شخص ثالث در برابر تغییرات صنعت مقاومتر است، میتواند بینش غنیتری ارائه دهد که میتواند منجر به تعامل بیشتر مشتری شود.
اصطلاحات را یاد بگیرید
- اتصال داده ارائه شده توسط کاربر: یک اتصال داده ارائه شده توسط کاربر را برای وارد کردن و مطابقت با داده های خود، برنامه ریزی وارد کردن داده ها، تبدیل داده ها و مطابقت داده های تبلیغات خود با استفاده از شناسه کاربری تنظیم کنید. رویداد تبلیغاتی باید به یک کاربر وارد شده در داده های تبلیغات Google پیوند داده شود. به چندین پروژه Google Cloud نیاز دارد.
- اتصال داده شخص اول: یک اتصال داده شخص اول را به عنوان ابزار آماده سازی داده، برای برنامه ریزی واردات داده ها و تبدیل داده ها بدون ویژگی های پیشرفته UPDM تنظیم کنید. این نوع اتصال تنها به یک پروژه Google Cloud نیاز دارد.
- منبع داده: یک محصول متصل، فایل وارد شده، یا یکپارچه سازی شخص ثالث – به عنوان مثال، BigQuery.
- مقصد: مورد استفاده؛ معمولاً یک محصول یا ویژگی محصول Google است که در آن دادههای وارد شده فعال میشود - برای مثال، تطبیق دادههای ارائهشده توسط Ads Data Hub.
- پروژه مدیریت: پروژه Google Cloud که حاوی داده های تبلیغاتی اختصاصی شما در قالب خام است.
- مجموعه داده خروجی: مجموعه داده BigQuery که Ads Data Hub روی آن می نویسد. به طور پیش فرض، این مجموعه داده تحت پروژه مدیریت شما است. برای تغییر آن به پروژه Google Cloud دیگری، به پیکربندی حسابهای سرویس مراجعه کنید.
خلاصه فرآیند
- تنظیم هضم و تطبیق داده ها
- شما مجوزهای مورد نیاز را به حساب های سرویس در پروژه مدیریت خود اعطا می کنید. به تنظیم انتقال داده مراجعه کنید.
- دریافت و تطبیق داده های شخص اول
- شما داده های شخص اول خود را در مجموعه داده BigQuery خود قالب بندی و آپلود می کنید. برای ساده ترین راه اندازی، از پروژه مدیریت خود استفاده کنید. با این حال، میتوانید از هر مجموعه داده BigQuery که دارید استفاده کنید.
- شما با ایجاد یک اتصال و تنظیم زمانبندی واردات، درخواست تطبیق دادهها را آغاز میکنید.
- Google دادهها را بین پروژه شما و دادههای متعلق به Google حاوی شناسه کاربری Google و دادههای ارائهشده توسط کاربر هششده برای ساخت و بهروزرسانی جداول مطابقت میپیوندد.
- به دریافت داده های شخص اول مراجعه کنید
- جستارهای در حال انجام در Ads Data Hub، بر اساس داده های منطبق
- شما پرس و جوها را در مقابل جداول مطابقت اجرا می کنید به همان روشی که پرس و جوهای معمولی را در Ads Data Hub اجرا می کنید. به داده های مطابقت پرس و جو مراجعه کنید.
در مورد الزامات حفظ حریم خصوصی اطلاعات کسب کنید
جمع آوری داده های مشتری
هنگام استفاده از تطابق داده های ارائه شده توسط کاربر، باید داده های شخص اول را آپلود کنید. این میتواند اطلاعاتی باشد که از وبسایتها، برنامهها، فروشگاههای فیزیکی یا هر اطلاعاتی که مشتری مستقیماً با شما به اشتراک گذاشته است جمعآوری کردهاید.
شما باید:
- اطمینان حاصل کنید که خطمشی رازداری شما فاش میکند که دادههای مشتری را با اشخاص ثالث به اشتراک میگذارید تا خدمات را از طرف شما انجام دهند، و در صورت لزوم رضایت شما برای چنین اشتراکگذاریهایی را در صورت لزوم دریافت میکند.
- فقط از API یا رابط تایید شده Google برای آپلود داده های مشتری استفاده کنید
- از تمام قوانین و مقررات قابل اجرا ، از جمله هر کد خود تنظیمی یا صنعتی که ممکن است اعمال شود، پیروی کنید
تایید رضایت شخص اول
برای اطمینان از اینکه میتوانید از دادههای شخص اول خود در Ads Data Hub استفاده کنید، باید تأیید کنید که طبق خطمشی رضایت کاربر اتحادیه اروپا و خطمشی Ads Data Hub رضایت مناسبی برای اشتراکگذاری دادهها از کاربران نهایی EEA با Google دریافت کردهاید. این الزام برای هر حساب Ads Data Hub اعمال میشود و هر بار که دادههای شخص اول جدید را آپلود میکنید باید بهروزرسانی شود. هر کاربر می تواند از طرف کل حساب این تایید را انجام دهد.
توجه داشته باشید که همان قوانین پرس و جو سرویس Google که برای جستارهای تجزیه و تحلیل اعمال می شود در مورد جستارهای UPDM نیز اعمال می شود. به عنوان مثال، هنگام ایجاد جدول تطبیق، نمی توانید پرس و جوهای سرویس متقابل را روی کاربران در EEA اجرا کنید.
برای آشنایی با نحوه تأیید رضایت در Ads Data Hub، به الزامات رضایت برای منطقه اقتصادی اروپا مراجعه کنید.
اندازه داده ها
برای محافظت از حریم خصوصی کاربر نهایی، تطبیق داده های ارائه شده توسط کاربر این الزامات را در مورد اندازه داده های شما اعمال می کند:
- شما باید حداقل 1000 رکورد را در لیست کاربران خود آپلود کنید.
- هر بهروزرسانی موفقیتآمیز جدول مطابقت شما باید شامل حداقل تعداد کاربرانی باشد که به تازگی مطابقت داده شدهاند. این رفتار شبیه به بررسی تفاوت است.
- لیست شما نباید از حداکثر تعداد رکوردها تجاوز کند. برای اطلاع از حداکثر محدودیت داده، با نماینده Google خود تماس بگیرید.
انتقال داده را تنظیم کنید
قبل از شروع، باید حساب Ads Data Hub خود را برای ایجاد اتصالات داده پیکربندی کنید، به این ترتیب خط لوله تطبیق داده خود را ایجاد خواهید کرد. این مراحل را فقط یک بار باید انجام دهید.
از صفحه اتصالات ، روی Begin setup کلیک کنید تا جادوگر تنظیم حساب در مرحله فعال سازی UPDM باز شود.
چه مجوزهایی برای BigQuery و Cloud Storage اعطا می شود؟
اگر UPDM را برای استفاده با BigQuery یا Cloud Storage راهاندازی کردهاید، از این مرجع برای درک مجوزهایی که به حسابهای سرویس Ads Data Hub اعطا میشود، استفاده کنید.
BigQuery
حساب سرویس Datafusion | |||||||||
هدف | حساب سرویس datafusion برای نمایش لیستی از فیلدهای منبع در Ads Data Hub UI استفاده می شود. | ||||||||
قالب | service- some-number @gcp-sa-datafusion.iam.gserviceaccount.com | ||||||||
دسترسی مورد نیاز |
| ||||||||
حساب سرویس Dataproc | |||||||||
هدف | حساب سرویس dataproc مسئول اجرای خطوط لوله داده در پس زمینه است. | ||||||||
قالب | some-number [email protected] | ||||||||
دسترسی مورد نیاز |
| ||||||||
حساب سرویس UPDM | |||||||||
هدف | حساب سرویس UPDM برای اجرای کار منطبق استفاده می شود. | ||||||||
قالب | service- some-number @gcp-sa-adsdataconnector.iam.gserviceaccount.com | ||||||||
دسترسی مورد نیاز |
|
فضای ذخیره سازی ابری
حساب سرویس Datafusion | |||||||
هدف | حساب سرویس datafusion برای نمایش لیستی از فیلدهای منبع در Ads Data Hub UI استفاده می شود. | ||||||
قالب | service- some-number @gcp-sa-datafusion.iam.gserviceaccount.com | ||||||
دسترسی مورد نیاز |
| ||||||
حساب سرویس Dataproc | |||||||
هدف | حساب سرویس dataproc مسئول اجرای خطوط لوله داده در پس زمینه است. | ||||||
قالب | some-number [email protected] | ||||||
دسترسی مورد نیاز |
| ||||||
حساب سرویس UPDM | |||||||
هدف | حساب سرویس UPDM برای اجرای کار منطبق استفاده می شود. | ||||||
قالب | service- some-number @gcp-sa-adsdataconnector.iam.gserviceaccount.com | ||||||
دسترسی مورد نیاز |
|
سایر منابع داده
برای سایر منابع داده ضروری نیست
داده های شخص اول را بلع و مطابقت دهید
فرمت داده ها برای ورودی
داده های شما باید به این الزامات قالب بندی مطابقت داشته باشند تا به درستی مطابقت داشته باشند:
- در جایی که در توضیحات فیلد ورودی زیر مشخص شده است، باید با استفاده از هش SHA256 آپلود کنید.
- فیلدهای ورودی باید به صورت رشته ای قالب بندی شوند. برای مثال، اگر از تابع هش SHA256 BigQuery با تابع رمزگذاری Base16 ( TO_HEX ) استفاده میکنید، از تبدیل زیر استفاده کنید:
TO_HEX(SHA256(user_data))
. - UPDM از کدگذاری Base16 و Base64 پشتیبانی می کند. شما باید رمزگذاری داده های شخص اول خود را با رمزگشایی مورد استفاده در جستجوی Ads Data Hub خود تراز کنید. اگر رمزگذاری داده شخص اول خود را تغییر دهید، باید جستجوی Ads Data Hub خود را برای رمزگشایی از همان پایگاه به روز کنید. نمونه های زیر از رمزگذاری Base16 استفاده می کنند.
شناسه کاربری
- متن ساده
- هش کردن: ندارد
ایمیل
- فضاهای سفید پیشرو و انتهایی را حذف کنید
- حروف کوچک همه کاراکترها
- یک نام دامنه برای همه آدرسهای ایمیل، مانند gmail.com یا hotmail.co.jp درج کنید
- لهجه ها را حذف کنید - برای مثال، è، é، ê، یا ë را به e تغییر دهید
- تمام نقاط (.) که قبل از نام دامنه در آدرس های ایمیل
gmail.com
وgooglemail.com
قرار دارند را حذف کنید. - هش کردن: Base16 با کد SHA256
معتبر: TO_HEX(SHA256("[email protected]"))
نامعتبر: TO_HEX(SHA256("JéffersonLô[email protected]"))
تلفن
- فضای خالی را بردارید
- قالب در فرمت E.164—به عنوان مثال، مثال ایالات متحده: +14155552671، مثال بریتانیا: +442071838750
- همه کاراکترهای خاص به جز "+" قبل از کد کشور را حذف کنید
- هش کردن: Base16 با کد SHA256
معتبر: TO_HEX(SHA256("+18005550101"))
نامعتبر: TO_HEX(SHA256("(800) 555-0101"))
نام کوچک
- فضای خالی را بردارید
- حروف کوچک همه کاراکترها
- همه پیشوندها را حذف کنید - به عنوان مثال Mrs., Mr., Ms., Dr.
- لهجهها را حذف نکنید - برای مثال، è، é، ê یا ë
- هش کردن: Base16 با کد SHA256
معتبر: TO_HEX(SHA256("daní"))
نامعتبر: TO_HEX(SHA256("Daní"))
نام خانوادگی
- فضای خالی را بردارید
- حروف کوچک همه کاراکترها
- تمام پسوندها را حذف کنید - برای مثال Jr., Sr., 2nd, 3rd, II, III, PHD, MD
- لهجهها را حذف نکنید - برای مثال، è، é، ê یا ë
- هش کردن: Base16 با کد SHA256
معتبر: TO_HEX(SHA256("delacruz"))
نامعتبر: TO_HEX(SHA256("de la Cruz, Jr."))
کشور
- حتی اگر تمام اطلاعات مشتری شما از یک کشور باشد، کد کشور را وارد کنید
- داده های کشور را هش نکنید
- از کدهای کشور ISO 3166-1 alpha-2 استفاده کنید
- هش کردن: ندارد
معتبر: US
نامعتبر: United States of America
یا USA
کد پستی
- داده های کد پستی را هش نکنید
- کد پستی و پستی ایالات متحده و بین المللی مجاز است
- برای ایالات متحده:
- کدهای 5 رقمی مجاز هستند - به عنوان مثال، 94043
- 5 رقم به دنبال پسوند 4 رقمی نیز مجاز است - برای مثال، 94043-1351 یا 940431351
- برای همه کشورهای دیگر:
- بدون نیاز به قالب بندی (بدون نیاز به حروف کوچک یا حذف فاصله و کاراکترهای خاص)
- پسوند کد پستی را کنار بگذارید
- هش کردن: ندارد
اعتبار سنجی هش و رمزگذاری داده ها
میتوانید از اسکریپتهای اعتبارسنجی هش زیر استفاده کنید تا مطمئن شوید که دادههایتان به درستی قالببندی شدهاند.
جاوا اسکریپت
پایه 16
/**
* @fileoverview Provides the hashing algorithm for User-Provided Data Match, 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 hashArrayBuffer = await crypto.subtle.digest(
'SHA-256', (new TextEncoder()).encode(formattedToken));
// Converts the hash buffer to a hexadecimal string.
return Array.from(new Uint8Array(hashArrayBuffer))
.map((b) => b.toString(16).padStart(2, '0'))
.join('');
}
function main() {
// Expected hash for [email protected]:
// 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
hash('[email protected]').then(result => console.log(result));
// Expected hash for +18005551212:
// 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
hash('+18005551212').then(result => console.log(result));
// Expected hash for John:
// 96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
hash('John').then(result => console.log(result));
// Expected hash for Doe:
// 799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
hash('Doe').then(result => console.log(result));
}
main()
پایه 64
/**
* @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 [email protected]:
// h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
hash('[email protected]').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()
پایتون
پایه 16
"""Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Supports: Python 2, Python 3
Sample hashes:
- Email '[email protected]': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
- Phone '+18005551212': 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
- First name 'John': 96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
- Last name 'Doe': 799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
"""
import base64
import hashlib
def updm_hash(token):
# Generates a SHA-256 hash of the input token after normalization.
return hashlib.sha256(token.strip().lower().encode('utf-8')).hexdigest()
def print_updm_hash(token):
# Prints the SHA-256 hash and the original token.
print('Hash: "{}"\t(Token: {})'.format(updm_hash(token), token))
def main():
# Hashes and prints sample tokens.
print_updm_hash('[email protected]')
print_updm_hash('+18005551212')
print_updm_hash('John')
print_updm_hash('Doe')
if __name__ == '__main__':
main()
پایه 64
"""Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Supports: Python 2, Python 3
Sample hashes:
- Email '[email protected]': 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(
'[email protected]', expected='h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=')
print_hash(
'+18005551212', expected='YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=')
print_hash('John', expected='ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=')
print_hash('Doe', expected='eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=')
if __name__ == '__main__':
main()
برو
پایه 16
/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Sample hashes:
- Email '[email protected]': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
- Phone '+18005551212': 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
- First name 'John': 96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
- Last name 'Doe': 799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
*/
package main
import (
"crypto/sha256"
"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 := fmt.Sprintf("%x", 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("[email protected]")
PrintHash("+18005551212")
PrintHash("John")
PrintHash("Doe")
}
پایه 64
/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Sample hashes:
- Email '[email protected]': 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("[email protected]")
PrintHash("+18005551212")
PrintHash("John")
PrintHash("Doe")
}
جاوا
پایه 16
package updm.hashing;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.base.Ascii;
import com.google.common.hash.Hashing;
/**
* Example of the UPDM hashing algorithm using hex-encoded SHA-256.
*
* <p>This uses the Guava Hashing to generate the hash: https://github.com/google/guava
*
* <p>Sample valid hashes:
*
* <ul>
* <li>Email "[email protected]": "87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674"
* <li>Phone "+18005551212": "61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44"
* <li>First name "John": "96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a"
* <li>Last name "Doe": "799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f"
* </ul>
*/
public final class HashExample {
private HashExample() {}
public static String hash(String token) {
// Normalizes and hashes the input token.
String formattedToken = Ascii.toLowerCase(token).strip();
return Hashing.sha256().hashString(formattedToken, UTF_8).toString();
}
public static void printHash(String token) {
// Calculates and prints the token's hash.
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("[email protected]");
printHash("+18005551212");
printHash("John");
printHash("Doe");
}
}
پایه 64
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 '[email protected]': 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("[email protected]");
printHash("+18005551212");
printHash("John");
printHash("Doe");
}
}
SQL
پایه 16
/*
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 '[email protected]': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
- Phone '+18005551212': 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
- First name 'John': 96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
- Last name 'Doe': 799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
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 hashed versions of specified columns from the input table.
CREATE TABLE `your_project_name.your_dataset_name.output_hashed_table_name`
AS
SELECT
UserID,
TO_HEX(SHA256(LOWER(Email))) AS Email,
TO_HEX(SHA256(Phone)) AS Phone,
TO_HEX(SHA256(LOWER(FirstName))) AS FirstName,
TO_HEX(SHA256(LOWER(LastName))) AS LastName,
PostalCode,
CountryCode,
FROM
`your_project_name.your_dataset_name.input_unhashed_table_name`;
پایه 64
/*
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 '[email protected]': 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`;
کلیدهای پیوستن
برخی از ترکیبات داده های ارائه شده توسط کاربر قوی تر از سایرین هستند. در زیر لیستی از ترکیبات مختلف داده های ارائه شده توسط کاربر ارائه شده است که بر اساس قدرت نسبی رتبه بندی شده اند. اگر از آدرسی استفاده می کنید، باید موارد زیر را وارد کنید: نام، نام خانوادگی، کشور و کد پستی.
- ایمیل، تلفن، آدرس (قوی ترین)
- تلفن، آدرس
- ایمیل، آدرس
- ایمیل، تلفن
- آدرس
- تلفن
- ایمیل (ضعیف ترین)
یک جدول مسابقه ایجاد کنید
- روی اتصالات > ایجاد اتصال > تطبیق داده های ارائه شده توسط کاربر کلیک کنید.
- یک منبع داده را انتخاب کنید، سپس روی اتصال کلیک کنید.
- اگر از شما خواسته شد احراز هویت کنید، سپس روی Next کلیک کنید:
BigQuery
برای اعطای دسترسی به BigQuery روی Apply کلیک کنید.
فضای ذخیره سازی ابری
برای اعطای دسترسی به فضای ذخیرهسازی ابری روی Apply کلیک کنید.
MySQL
محل پایگاه داده MySQL، پورت، نام کاربری و رمز عبور خود را وارد کنید.
S3
کلید دسترسی مخفی آمازون S3 خود را وارد کنید.
PostgreSQL
محل پایگاه داده، پورت، نام کاربری، رمز عبور و پایگاه داده PostgreSQL خود را وارد کنید.
انتقال به قرمز
محل پایگاه داده Redshift، پورت، نام کاربری، رمز عبور و پایگاه داده خود را وارد کنید.
sFTP
مکان سرور sFTP، نام کاربری و رمز عبور خود را وارد کنید.
دانه برف
شناسه حساب Snowflake، نام کاربری و رمز عبور خود را وارد کنید.
- منبع داده خود را پیکربندی کنید، سپس روی Next کلیک کنید:
BigQuery
جدول BigQuery را برای وارد کردن انتخاب کنید.
فضای ذخیره سازی ابری
مسیر gsutil را وارد کنید، مانند
gs://my-bucket/folder/
و قالب بندی فایل خود را انتخاب کنید.اگر برای اولین بار است که این منبع را متصل می کنید، یک هشدار ظاهر می شود. برای اعطای دسترسی روی Apply کلیک کنید، سپس روی Next کلیک کنید. توجه: شما باید نقشی با اجازه واگذاری
storage.buckets.setIamPolicy
برای سطل مربوطه داشته باشید.MySQL
پایگاه داده و جدول MySQL را که می خواهید استفاده کنید انتخاب کنید.
S3
URI فایلی را که می خواهید آپلود کنید، نسبت به آدرس میزبان وارد کنید.
PostgreSQL
طرح و نام جدول (یا مشاهده) PostgreSQL را وارد کنید.
انتقال به قرمز
طرحواره Redshift و نام جدول (یا مشاهده) را وارد کنید. بهطور پیشفرض، Redshift از نشانیهای اینترنتی مکان پایگاه داده استفاده میکند که از این الگو پیروی میکنند:
cluster-identifier.account-number.aws-region.redshift.amazonaws.com
.sFTP
مسیر و نام فایل را با فرمت
/ PATH / FILENAME .csv
وارد کنیددانه برف
پایگاه داده Snowflake، طرحواره و جدول (یا نمای) مورد نظر خود را وارد کنید.
- یک مجموعه داده BigQuery را برای استفاده به عنوان مقصد واسطه انتخاب کنید، سپس روی Next کلیک کنید. این مرحله تضمین می کند که داده های شما به درستی قالب بندی شده اند.
- اختیاری: قالب داده های خود را تغییر دهید. تبدیلها شامل هش محاسباتی، قالببندی حروف کوچک/ بزرگ و فیلدهای ادغام/تقسیم میشود.
- روی Action > > Transform کلیک کنید.
- در پانلی که ظاهر می شود، روی افزودن تبدیل یا افزودن یک تبدیل دیگر کلیک کنید
- یک نوع تبدیل را از منوی کشویی انتخاب کنید و شرایط مورد نیاز را وارد کنید.
- روی ذخیره کلیک کنید.
- حداقل یک کلید پیوستن را انتخاب کنید و فیلدهایی را که استفاده خواهید کرد نقشه برداری کنید. Ads Data Hub به طور خودکار فیلدهایی را با نامهای یکسان ترسیم میکند که با علامت نشان داده شده است. هر گونه ویرایش لازم را انجام دهید، سپس روی Next کلیک کنید.
- تنظیم برنامه:
- اتصال خود را نام ببرید
- یک فرکانس را تنظیم کنید و تعیین کنید که چقدر داده ها به مجموعه داده ای که در مرحله قبل انتخاب کردید وارد شوند. هر اجرا داده ها را در جدول مقصد بازنویسی می کند.
- نحوه رسیدگی به برخوردهای شناسه کاربری را مشخص کنید. میتوانید بین حفظ مطابقت موجود یا بازنویسی با دادههای جدید یکی را انتخاب کنید.
- روی Finish کلیک کنید. جداول تطبیق معمولاً 12 ساعت پس از ایجاد آنها آماده استعلام هستند.
مشاهده جزئیات اتصال
صفحه جزئیات اتصال اطلاعاتی در مورد اجراها و خطاهای اخیر یک اتصال داده شده به شما می دهد. برای مشاهده جزئیات یک اتصال خاص:
- روی Connections کلیک کنید.
- روی نام اتصال کلیک کنید تا جزئیات آن را مشاهده کنید.
- اکنون می توانید جزئیات اتصال و اجرای اخیر را مشاهده کنید. هر کدام دو نوع خطای ممکن را نشان میدهند: سطح اتصال (اتصال اجرا نشد) و خطاهای سطح ردیف (یک ردیف وارد نشده است).
- وضعیت ناموفق نشان می دهد که کل اتصال اجرا نشد (مثلاً مشکل مجوز حساب سرویس). روی وضعیت خطا کلیک کنید تا ببینید کدام خطاها بر اتصال تأثیر گذاشته است.
- وضعیت تکمیل شده نشان می دهد که اتصال با موفقیت انجام شد. با این حال، ممکن است همچنان خطاهای سطح ردیف وجود داشته باشد - که با یک مقدار غیر صفر در ستون "ردیف های دارای خطا" نشان داده شده است. برای کسب اطلاعات بیشتر در مورد اینکه کدام رکوردها ناموفق هستند، روی مقدار کلیک کنید.
یک اتصال را ویرایش کنید
جزئیات زیر قابل ویرایش است:
- نام اتصال
- برنامه ریزی کنید
- جدول مقصد
- نقشه برداری میدانی
ویرایش منبع داده پشتیبانی نمی شود. برای تغییر منبع داده، یک اتصال جدید ایجاد کنید و قدیمی را حذف کنید.
برای ویرایش جزئیات اتصال:
- روی Connections کلیک کنید.
- روی نام اتصالی که میخواهید ویرایش کنید کلیک کنید.
- جزئیاتی را که می خواهید تغییر دهید ویرایش کنید:
- نام اتصال: روی Edit کلیک کنید، نام جدید را وارد کنید، سپس Enter را فشار دهید.
- زمانبندی: روی ویرایش کلیک کنید، زمانبندی جدید را تنظیم کنید، سپس روی ذخیره کلیک کنید.
- جدول مقصد: روی ویرایش کلیک کنید، نام مقصد جدید را وارد کنید، سپس روی ذخیره کلیک کنید.
- نقشهبرداری فیلد: روی کلیک کنید، تغییراتی در فیلدها ایجاد کنید، سپس روی ذخیره کلیک کنید.
- کلیک کنید.
داده های منطبق را جستجو کنید
جداول مسابقه را استعلام کنید
وقتی جداول تطبیق شما حاوی داده های کافی برای بررسی حریم خصوصی باشد، شما آماده اجرای پرس و جوها در برابر جداول هستید.
جدول اصلی برای داده های شخص اول (1PD) با my_data
نمایش داده می شود. این شامل اطلاعات شناسایی شخصی (PII) و داده های غیر PII می شود. استفاده از جدول اصلی میتواند گزارشهای شما را با بینشهای بیشتری بهبود بخشد، زیرا تمام دادههای 1PD را در محدوده، در مقایسه با جدول تطبیقی، نشان میدهد.
هر جدول در طرحواره Ads Data Hub حاوی فیلد user_id
با یک جدول مطابقت همراه است. به عنوان مثال، برای جدول adh.google_ads_impressions
، Ads Data Hub همچنین یک جدول منطبق به نام adh.google_ads_impressions_updm
ایجاد می کند که حاوی شناسه های کاربری شما است. جداول منطبق جداگانه برای جداول جدا شده از سیاست ایجاد می شود. به عنوان مثال، برای جدول adh.google_ads_impressions_policy_isolated_youtube
، Ads Data Hub همچنین یک جدول مطابق با نام adh.google_ads_impressions_policy_isolated_youtube_updm
ایجاد میکند که حاوی شناسههای کاربری شما است.
این جداول شامل زیرمجموعهای از کاربران موجود در جداول اصلی است، جایی که یک مطابقت در user_id
وجود دارد. برای مثال، اگر جدول اصلی حاوی دادههایی برای کاربر A و کاربر B باشد، اما فقط کاربر A مطابقت داشته باشد، کاربر B در جدول مطابقت نخواهد بود.
جداول تطبیق شامل یک ستون اضافی به نام 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
محاسبه نرخ تطابق
همه کاربران واجد شرایط تطبیق نیستند. به عنوان مثال، کاربران خارج از سیستم، کودکان و کاربران بدون رضایت از طریق UPDM مطابقت ندارند. میتوانید از فیلد is_updm_eligible
برای محاسبه دقیقتر نرخهای مطابقت UPDM استفاده کنید. توجه داشته باشید که فیلد is_updm_eligible
از 1 اکتبر 2024 در دسترس بود. نمیتوانید از این فیلد برای محاسبه نرخهای مطابقت قبل از آن تاریخ استفاده کنید.
/* 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
سوالات متداول UPDM
برای فهرستی از سؤالات متداول مربوط به UPDM، سؤالات متداول UPDM را ببینید.
،تطبیق دادههای ارائهشده توسط کاربر (UPDM) به دادههای شخص اولی که درباره یک کاربر جمعآوری کردهاید - مانند اطلاعات از وبسایتها، برنامهها یا فروشگاههای فیزیکی خود - با فعالیت ورود به سیستم همان کاربر در همه دادههای تبلیغات Google ، از جمله دادههای متعلق به Google و دادههای ادارهشده، میپیوندد. این شامل دادههایی میشود که از طریق محصولات Google Marketing Platform (GMP) خریداری شدهاند، برای مثال، YouTube با استفاده از Display & Video 360 خریداری شده است. سایر محصولات GMP که متعلق به Google و اداره نمیشوند، پشتیبانی نمیشوند.
برای واجد شرایط بودن برای مطابقت دادههای ارائهشده توسط کاربر، رویداد تبلیغاتی باید به کاربر واردشده در دادههای آگهی Google پیوند داده شود.
این سند ویژگی تطبیق دادههای ارائهشده توسط کاربر را توصیف میکند و راهنمایی در مورد راهاندازی و استفاده ارائه میدهد.
بررسی اجمالی برگه اتصالات
به دست آوردن بینش های تبلیغاتی ارزشمند اغلب نیاز به دوخت داده های مختلف از منابع مختلف دارد. ایجاد راه حل شخصی شما برای این مشکل خط لوله داده نیاز به سرمایه گذاری زمان قابل توجهی و سرمایه گذاری مهندسی دارد. صفحه Connections در ADS Data Hub با ارائه یک رابط گام به گام و هدایت شده برای واردات ، تبدیل و تطبیق داده های تبلیغاتی خود در BigQuery ، این فرایند را ساده تر می کند ، به طوری که می توانید از آن در نمایش داده های هاب داده های تبلیغاتی خود یا هر محصول دیگری که از BigQuery خوانده می شود ، استفاده کنید. غنی سازی نمایش داده های شما با داده های شخص اول می تواند تجربیات غنی تر مشتری را ارائه دهد و در برابر تغییرات ردیابی تبلیغاتی در سطح صنعت مقاوم تر است.
صفحه اتصالات با ابزارهایی ساخته شده است که به شما امکان می دهد اطلاعات شناسایی شخصی (PII) را با شرکای محور حفظ و به اشتراک بگذارید. پس از انتخاب ستون ها حاوی PII ، ADS Data Hub داده ها را رمزگذاری می کند ، و اطمینان می دهد که داده های شخص اول شما فقط توسط افرادی که اجازه انجام این کار را دارند ، می توانند صادر یا خوانده شوند. دانستن اینکه کدام داده های شخص اول برای مورد اندازه گیری یا استفاده از فعال سازی مورد نیاز است ، می تواند دشوار باشد ، بنابراین ADS Data Hub لیست کاملی از موارد استفاده از پیش تعریف شده را ارائه می دهد ، سپس شما را از طریق کل تجربه استخراج ، تبدیل و بارگیری داده های شما راهنمایی می کند. در حالی که می تواند انواع مختلفی از اتصالات ایجاد کند ، این سند فرض می کند که شما از صفحه اتصالات برای تطبیق داده های ارائه شده توسط کاربر استفاده می کنید.
از منابع داده شخص اول پشتیبانی می کند
شما می توانید داده ها را از این منابع داده وارد کنید:
- BigQuery
- فضای ذخیره سازی ابری
- FTP Secure (SFTP)
- دانه برف
- MySQL
- PostgreSQL
- آمازون Redshift
- آمازون S3
از آنجا که تطبیق داده های ارائه شده توسط کاربر فقط در موجودی متعلق به Google و موجودی برای کاربران امضا شده در دسترس است ، با استهلاک آینده کوکی های شخص ثالث تحت تأثیر قرار نمی گیرد. از آنجا که نسبت به داده های شخص ثالث در برابر تغییرات صنعت مقاوم تر است ، می تواند بینش های غنی تری ارائه دهد ، که می تواند منجر به مشارکت بیشتر مشتری شود.
اصطلاحات را بیاموزید
- اتصال داده های ارائه شده توسط کاربر: یک اتصال داده های ارائه شده توسط کاربر را برای وارد کردن و مطابقت با داده های خود تنظیم کنید ، واردات داده ها را برنامه ریزی کنید ، داده ها را تبدیل کنید و داده های تبلیغات خود را با استفاده از شناسه کاربر مطابقت دهید. رویداد تبلیغاتی باید در داده های AD Google به یک کاربر امضا شده مرتبط باشد. به چندین پروژه Google Cloud نیاز دارد.
- اتصال داده های شخص اول: اتصال داده های شخص اول را به عنوان یک ابزار تهیه داده تنظیم کنید تا واردات داده ها را برنامه ریزی کرده و داده ها را بدون ویژگی های پیشرفته UPDM تبدیل کنید. این نوع اتصال فقط به یک پروژه Google Cloud نیاز دارد.
- منبع داده: یک محصول متصل ، پرونده وارداتی یا ادغام شخص ثالث-برای مثال ، BigQuery.
- مقصد: یک مورد استفاده ؛ به طور معمول یک محصول یا ویژگی محصول Google ، که در آن داده های وارداتی فعال می شوند-برای مثال ، ADS Data Hub تطبیق داده های ارائه شده توسط کاربر.
- پروژه مدیر: پروژه Google Cloud که حاوی داده های تبلیغاتی اختصاصی شما در قالب خام آن است.
- مجموعه داده های خروجی: مجموعه داده های BigQuery که Data Hub می نویسد. به طور پیش فرض ، این یک مجموعه داده تحت پروژه مدیر شما است. برای تغییر آن به یک پروژه دیگر Google Cloud ، به حساب های خدمات پیکربندی مراجعه کنید.
خلاصه فرآیند
- تنظیم مصرف داده و تطبیق
- شما مجوزهای لازم را به حساب های خدمات در پروژه مدیر خود اعطا می کنید. به تنظیم تنظیم داده ها مراجعه کنید.
- مصرف داده های شخص اول و تطبیق
- شما داده های شخص اول خود را در مجموعه داده های BigQuery خود قالب بندی و بارگذاری می کنید. برای ساده ترین راه اندازی ، از پروژه مدیر خود استفاده کنید. با این حال ، شما می توانید از هر مجموعه داده BigQuery که در اختیار دارید استفاده کنید.
- شما با ایجاد یک اتصال و تنظیم برنامه واردات ، یک درخواست تطبیق داده را آغاز می کنید.
- Google به داده های بین پروژه شما و داده های متعلق به Google حاوی شناسه کاربر Google و داده های ارائه شده توسط کاربر برای ساخت و به روزرسانی جداول مطابقت می پیوندد.
- داده های شخص اول را مشاهده کنید
- نمایش داده شدگان در مرکز داده های تبلیغاتی ، بر اساس داده های همسان
- شما در مقابل جداول مسابقه به همان روشی که نمایش داده شدگان به طور منظم در مرکز داده های تبلیغاتی انجام می دهید ، اجرا می کنید. داده های مطابق با پرس و جو را مشاهده کنید.
در مورد الزامات حریم خصوصی بیاموزید
جمع آوری داده های مشتری
هنگام استفاده از داده های ارائه شده توسط کاربر ، باید داده های شخص اول را بارگذاری کنید. این می تواند اطلاعاتی باشد که شما از وب سایت ها ، برنامه ها ، فروشگاه های فیزیکی یا هرگونه اطلاعاتی که مشتری مستقیماً با شما به اشتراک گذاشته است ، جمع آوری کرده اید.
شما باید:
- اطمینان حاصل کنید که خط مشی رازداری شما فاش می کند که داده های مشتری را با اشخاص ثالث برای انجام خدمات از طرف خود به اشتراک می گذارید ، و رضایت خود را برای چنین اشتراک گذاری در صورت نیاز قانونی به دست می آورید
- فقط از API یا رابط تأیید شده Google برای بارگذاری داده های مشتری استفاده کنید
- مطابق با کلیه قوانین و مقررات قابل اجرا ، از جمله هرگونه کدهای خود نظارتی یا صنعت که ممکن است اعمال شود
تأیید رضایت شخص اول
برای اطمینان از اینکه می توانید از داده های شخص اول خود در ADS Data Hub استفاده کنید ، باید تأیید کنید که رضایت مناسبی را برای به اشتراک گذاشتن داده ها از کاربران نهایی EEA با Google در هر خط مشی رضایت کاربر EU و خط مشی HUB ADS داده دریافت کرده اید. این نیاز برای هر حساب HUB Data ADS اعمال می شود ، و باید هر بار که داده های جدید شخص اول را بارگذاری می کنید به روز شود. هر کاربر می تواند این تأیید را از طرف کل حساب انجام دهد.
توجه داشته باشید که همان قوانین پرس و جو سرویس Google که در مورد نمایش داده های تجزیه و تحلیل اعمال می شود نیز در مورد نمایش داده های UPDM اعمال می شود. به عنوان مثال ، هنگام ایجاد یک جدول مسابقه ، نمی توانید نمایش داده های متقابل را برای کاربران در EEA اجرا کنید.
برای یادگیری نحوه تصدیق رضایت در مرکز داده های تبلیغاتی ، به الزامات رضایت منطقه اقتصادی اروپا مراجعه کنید.
اندازه داده ها
برای محافظت از حریم خصوصی کاربر نهایی ، تطبیق داده های ارائه شده توسط کاربر این شرایط را در مورد اندازه داده های شما اعمال می کند:
- شما باید حداقل 1000 رکورد را در لیست کاربر خود بارگذاری کنید.
- هر به روزرسانی موفق جدول مسابقه شما باید حداقل تعداد کاربران تازه همسان را شامل شود. این رفتار مشابه بررسی های تفاوت است.
- لیست شما نباید از حداکثر تعداد سوابق تجاوز کند. برای کسب اطلاعات در مورد حداکثر حد داده ، به نماینده Google خود دسترسی پیدا کنید.
تنظیم مصرف داده ها
قبل از شروع ، برای ایجاد اتصالات داده باید حساب HUB ADS Data را پیکربندی کنید ، به این ترتیب خط لوله تطبیق داده خود را تعیین خواهید کرد. شما فقط باید یک بار این مراحل را انجام دهید.
از صفحه Connections ، بر روی Setup کلیک کنید تا Wizard Setup Setup را در مرحله فعال سازی UPDM باز کنید.
چه مجوزهایی برای BigQuery و ذخیره سازی ابری اعطا می شود؟
اگر UPDM را برای استفاده با BigQuery یا Cloud Storage تنظیم کرده اید ، از این مرجع استفاده کنید تا مجوزهایی را که به حسابهای سرویس HUB Data ADS داده می شود ، درک کنید.
BigQuery
حساب سرویس DataFusion | |||||||||
هدف | از حساب سرویس DataFusion برای نمایش لیستی از زمینه های منبع در ADS Data Hub UI استفاده می شود. | ||||||||
قالب | service- some-number @gcp-sa-datafusion.iam.gserviceaccount.com | ||||||||
دسترسی لازم |
| ||||||||
حساب سرویس DataProc | |||||||||
هدف | حساب سرویس DATAPROC وظیفه اجرای خطوط لوله داده را در پس زمینه دارد. | ||||||||
قالب | some-number [email protected] | ||||||||
دسترسی لازم |
| ||||||||
حساب سرویس updm | |||||||||
هدف | از حساب سرویس UPDM برای اجرای کار تطبیق استفاده می شود. | ||||||||
قالب | service- some-number @gcp-sa-adsdataconnector.iam.gserviceaccount.com | ||||||||
دسترسی لازم |
|
فضای ذخیره سازی ابری
حساب سرویس DataFusion | |||||||
هدف | از حساب سرویس DataFusion برای نمایش لیستی از زمینه های منبع در ADS Data Hub UI استفاده می شود. | ||||||
قالب | service- some-number @gcp-sa-datafusion.iam.gserviceaccount.com | ||||||
دسترسی لازم |
| ||||||
حساب سرویس DataProc | |||||||
هدف | حساب سرویس DATAPROC وظیفه اجرای خطوط لوله داده را در پس زمینه دارد. | ||||||
قالب | some-number [email protected] | ||||||
دسترسی لازم |
| ||||||
حساب سرویس updm | |||||||
هدف | از حساب سرویس UPDM برای اجرای کار تطبیق استفاده می شود. | ||||||
قالب | service- some-number @gcp-sa-adsdataconnector.iam.gserviceaccount.com | ||||||
دسترسی لازم |
|
سایر منابع داده
برای سایر منابع داده لازم نیست
داده های شخص اول را درگیر کرده و مطابقت دهید
داده های قالب برای ورودی
داده های شما باید به این الزامات قالب بندی رعایت شوند تا به درستی مطابقت داشته باشند:
- در جایی که در توضیحات قسمت ورودی زیر مشخص شده است ، باید با استفاده از هشدار Sha256 بارگذاری کنید.
- زمینه های ورودی باید به عنوان رشته ها فرمت شوند. به عنوان مثال ، اگر از عملکرد هش Sha256 BigQuery با عملکرد رمزگذاری Base16 ( to_hex ) استفاده می کنید ، از تحول زیر استفاده کنید:
TO_HEX(SHA256(user_data))
. - UPDM از رمزگذاری Base16 و Base64 پشتیبانی می کند. شما باید رمزگذاری داده های شخص اول خود را با رمزگشایی مورد استفاده در پرس و جو توپی داده های تبلیغاتی خود تراز کنید. اگر رمزگذاری داده های شخص اول خود را تغییر دهید ، باید پرس و جو هاب داده های تبلیغاتی خود را به روز کنید تا از همان پایگاه رمزگشایی شود. مثالهای زیر از رمزگذاری Base16 استفاده می کنند.
شناسه کاربری
- متن ساده
- هش: هیچکدام
ایمیل
- آب های پیشرو و پیشرو را حذف کنید
- حروف کوچک همه نویسه ها
- نام دامنه را برای همه آدرس های ایمیل مانند gmail.com یا hotmail.co.jp درج کنید
- لهجه ها را حذف کنید - به عنوان مثال ، è ، é ، ê یا ë را به E تغییر دهید
- تمام دوره ها را حذف کنید (.) که قبل از نام دامنه در
gmail.com
و آدرس های ایمیلgooglemail.com
است - HASHING: Base16 رمزگذاری شده SHA256
معتبر: TO_HEX(SHA256("[email protected]"))
نامعتبر: TO_HEX(SHA256("JéffersonLô[email protected]"))
تلفن
- فضای خالی را بردارید
- قالب در قالب E.164 - برای مثال ، مثال ایالات متحده: +14155552671 ، مثال انگلیس: +442071838750
- تمام شخصیت های خاص را به جز "+" قبل از کد کشور حذف کنید
- HASHING: Base16 رمزگذاری شده SHA256
معتبر: TO_HEX(SHA256("+18005550101"))
نامعتبر: TO_HEX(SHA256("(800) 555-0101"))
نام کوچک
- فضای خالی را بردارید
- حروف کوچک همه نویسه ها
- همه پیشوند ها را حذف کنید-به عنوان مثال خانم ، آقای ، خانم ، دکتر
- لهجه ها را حذف نکنید - به عنوان مثال ، è ، é ، ê یا ë
- HASHING: Base16 رمزگذاری شده SHA256
معتبر: TO_HEX(SHA256("daní"))
نامعتبر: TO_HEX(SHA256("Daní"))
نام خانوادگی
- فضای خالی را بردارید
- حروف کوچک همه نویسه ها
- همه پسوندها را حذف کنید-به عنوان مثال جونیور ، Sr. ، 2 ، 3 ، II ، III ، PhD ، MD
- لهجه ها را حذف نکنید - به عنوان مثال ، è ، é ، ê یا ë
- HASHING: Base16 رمزگذاری شده SHA256
معتبر: TO_HEX(SHA256("delacruz"))
نامعتبر: TO_HEX(SHA256("de la Cruz, Jr."))
کشور
- کد کشور را وارد کنید حتی اگر تمام داده های مشتری شما از همان کشور باشد
- داده های کشور را هش ندهید
- از کدهای کشور ISO 3166-1 alpha-2 استفاده کنید
- هش: هیچکدام
معتبر: US
نامعتبر: United States of America
یا USA
کد پستی
- داده های کد پستی هش را ندارید
- هر دو کد پستی ایالات متحده و بین المللی مجاز است
- برای ایالات متحده:
- 5 کد رقمی مجاز است - برای مثال ، 94043
- 5 رقم و پس از 4 رقمی پسوند نیز مجاز است-برای مثال ، 94043-1351 یا 940431351
- برای همه کشورهای دیگر:
- هیچ قالب بندی لازم نیست (نیازی به کوچک کردن یا حذف فضاها و کاراکترهای خاص نیست)
- پسوند کد پستی را کنار بگذارید
- هش: هیچکدام
اعتبار سنجی هش و رمزگذاری داده ها
می توانید از اسکریپت های اعتبار سنجی هش زیر استفاده کنید تا اطمینان حاصل شود که داده های شما به درستی فرمت شده است.
جاوا اسکریپت
پایه 16
/**
* @fileoverview Provides the hashing algorithm for User-Provided Data Match, 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 hashArrayBuffer = await crypto.subtle.digest(
'SHA-256', (new TextEncoder()).encode(formattedToken));
// Converts the hash buffer to a hexadecimal string.
return Array.from(new Uint8Array(hashArrayBuffer))
.map((b) => b.toString(16).padStart(2, '0'))
.join('');
}
function main() {
// Expected hash for [email protected]:
// 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
hash('[email protected]').then(result => console.log(result));
// Expected hash for +18005551212:
// 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
hash('+18005551212').then(result => console.log(result));
// Expected hash for John:
// 96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
hash('John').then(result => console.log(result));
// Expected hash for Doe:
// 799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
hash('Doe').then(result => console.log(result));
}
main()
پایه 64
/**
* @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 [email protected]:
// h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
hash('[email protected]').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()
پایتون
پایه 16
"""Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Supports: Python 2, Python 3
Sample hashes:
- Email '[email protected]': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
- Phone '+18005551212': 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
- First name 'John': 96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
- Last name 'Doe': 799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
"""
import base64
import hashlib
def updm_hash(token):
# Generates a SHA-256 hash of the input token after normalization.
return hashlib.sha256(token.strip().lower().encode('utf-8')).hexdigest()
def print_updm_hash(token):
# Prints the SHA-256 hash and the original token.
print('Hash: "{}"\t(Token: {})'.format(updm_hash(token), token))
def main():
# Hashes and prints sample tokens.
print_updm_hash('[email protected]')
print_updm_hash('+18005551212')
print_updm_hash('John')
print_updm_hash('Doe')
if __name__ == '__main__':
main()
پایه 64
"""Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Supports: Python 2, Python 3
Sample hashes:
- Email '[email protected]': 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(
'[email protected]', expected='h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=')
print_hash(
'+18005551212', expected='YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=')
print_hash('John', expected='ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=')
print_hash('Doe', expected='eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=')
if __name__ == '__main__':
main()
برو
پایه 16
/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Sample hashes:
- Email '[email protected]': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
- Phone '+18005551212': 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
- First name 'John': 96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
- Last name 'Doe': 799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
*/
package main
import (
"crypto/sha256"
"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 := fmt.Sprintf("%x", 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("[email protected]")
PrintHash("+18005551212")
PrintHash("John")
PrintHash("Doe")
}
پایه 64
/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.
Sample hashes:
- Email '[email protected]': 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("[email protected]")
PrintHash("+18005551212")
PrintHash("John")
PrintHash("Doe")
}
جاوا
پایه 16
package updm.hashing;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.base.Ascii;
import com.google.common.hash.Hashing;
/**
* Example of the UPDM hashing algorithm using hex-encoded SHA-256.
*
* <p>This uses the Guava Hashing to generate the hash: https://github.com/google/guava
*
* <p>Sample valid hashes:
*
* <ul>
* <li>Email "[email protected]": "87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674"
* <li>Phone "+18005551212": "61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44"
* <li>First name "John": "96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a"
* <li>Last name "Doe": "799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f"
* </ul>
*/
public final class HashExample {
private HashExample() {}
public static String hash(String token) {
// Normalizes and hashes the input token.
String formattedToken = Ascii.toLowerCase(token).strip();
return Hashing.sha256().hashString(formattedToken, UTF_8).toString();
}
public static void printHash(String token) {
// Calculates and prints the token's hash.
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("[email protected]");
printHash("+18005551212");
printHash("John");
printHash("Doe");
}
}
پایه 64
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 '[email protected]': 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("[email protected]");
printHash("+18005551212");
printHash("John");
printHash("Doe");
}
}
SQL
پایه 16
/*
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 '[email protected]': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
- Phone '+18005551212': 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
- First name 'John': 96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
- Last name 'Doe': 799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
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 hashed versions of specified columns from the input table.
CREATE TABLE `your_project_name.your_dataset_name.output_hashed_table_name`
AS
SELECT
UserID,
TO_HEX(SHA256(LOWER(Email))) AS Email,
TO_HEX(SHA256(Phone)) AS Phone,
TO_HEX(SHA256(LOWER(FirstName))) AS FirstName,
TO_HEX(SHA256(LOWER(LastName))) AS LastName,
PostalCode,
CountryCode,
FROM
`your_project_name.your_dataset_name.input_unhashed_table_name`;
پایه 64
/*
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 '[email protected]': 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`;
به کلیدها بپیوندید
برخی از ترکیبات داده های ارائه شده توسط کاربر از سایر موارد قوی تر است. در زیر لیستی از ترکیبات مختلف داده های ارائه شده توسط کاربر ، که با قدرت نسبی رتبه بندی شده اند ، ارائه شده است. اگر از یک آدرس استفاده می کنید ، باید شامل موارد زیر باشد: نام ، نام خانوادگی ، کشور و کد پستی.
- ایمیل ، تلفن ، آدرس (قوی ترین)
- تلفن ، آدرس
- ایمیل ، آدرس
- ایمیل، تلفن
- آدرس
- تلفن
- ایمیل (ضعیف ترین)
یک جدول مسابقه ایجاد کنید
- روی اتصالات> ایجاد اتصال> تطبیق داده های ارائه شده توسط کاربر کلیک کنید.
- یک منبع داده را انتخاب کنید ، سپس روی اتصال کلیک کنید.
- در صورت درخواست ، تأیید کنید ، سپس روی Next کلیک کنید:
BigQuery
برای دسترسی به BigQuery ، روی Apply کلیک کنید.
فضای ذخیره سازی ابری
برای دسترسی به Cloud Storage ، روی Apply کلیک کنید.
MySQL
مکان پایگاه داده MySQL ، درگاه ، نام کاربری و رمز عبور خود را وارد کنید.
S3
کلید دسترسی مخفی Amazon S3 خود را وارد کنید.
PostgreSQL
مکان پایگاه داده PostgreSQL ، درگاه ، نام کاربری ، رمز عبور و پایگاه داده خود را وارد کنید.
انتقال به قرمز
مکان ، پورت ، نام کاربری ، رمز عبور و بانک اطلاعاتی خود را وارد کنید.
SFTP
مکان سرور SFTP ، نام کاربری و رمز عبور خود را وارد کنید.
دانه برف
شناسه حساب Snowflake ، نام کاربری و رمز عبور خود را وارد کنید.
- منبع داده خود را پیکربندی کنید ، سپس روی Next کلیک کنید:
BigQuery
جدول BigQuery را برای واردات انتخاب کنید.
فضای ذخیره سازی ابری
مسیر gsutil مانند
gs://my-bucket/folder/
را وارد کنید و قالب بندی پرونده خود را انتخاب کنید.اگر این اولین بار است که این منبع را به هم وصل کرده اید ، یک هشدار ظاهر می شود. برای دسترسی به Grant Access ، روی Apply کلیک کنید ، سپس روی Next کلیک کنید. توجه: شما باید با اجازه دادن به
storage.buckets.setIamPolicy
برای سطل مربوطه نقش داشته باشید.MySQL
پایگاه داده و جدول MySQL را که می خواهید استفاده کنید انتخاب کنید.
S3
URI را به پرونده ای که می خواهید بارگذاری کنید ، نسبت به آدرس میزبان وارد کنید.
PostgreSQL
نام و جدول (یا نمای) PostgreSQL را وارد کنید.
انتقال به قرمز
نام و نام جدول redshift (یا نمای) را وارد کنید. به طور پیش فرض ، redshift از URL های موقعیت مکانی پایگاه داده استفاده می کند که از این الگوی پیروی می کنند:
cluster-identifier.account-number.aws-region.redshift.amazonaws.com
.SFTP
مسیر و نام پرونده را وارد کنید ، فرمت شده به عنوان
/ PATH / FILENAME .csv
دانه برف
پایگاه داده ، طرحواره و جدول (یا نمای) را که می خواهید از آن استفاده کنید ، وارد بانک اطلاعاتی Snowflake کنید.
- یک مجموعه داده BigQuery را انتخاب کنید تا به عنوان یک مقصد واسطه استفاده شود ، سپس روی Next کلیک کنید. این مرحله تضمین می کند که داده های شما به درستی فرمت شده است.
- اختیاری: قالب داده های خود را اصلاح کنید. تحولات شامل هش محاسباتی ، قالب بندی مورد پایین/بالایی و زمینه های ادغام/تقسیم است.
- روی عمل > > تبدیل کلیک کنید.
- در پانلی که ظاهر می شود ، روی افزودن تحول یا اضافه کردن یک تحول دیگر کلیک کنید
- از منوی کشویی یک نوع تحول را انتخاب کرده و الزامات را وارد کنید.
- روی ذخیره کلیک کنید.
- حداقل یک کلید پیوست را انتخاب کنید و زمینه هایی را که استفاده خواهید کرد نقشه برداری کنید. ADS Data Hub به طور خودکار زمینه ها را با نام های یکسان نقشه می کند ، که توسط نشان داده شده است. هرگونه ویرایش لازم را انجام دهید ، سپس روی Next کلیک کنید.
- یک برنامه تنظیم کنید:
- اتصال خود را نام ببرید
- یک فرکانس را تنظیم کنید ، با بیان اینکه چند بار داده ها به مجموعه داده هایی که در مرحله قبل انتخاب کرده اید وارد می شوند. هر اجرا داده ها را در جدول مقصد بازنویسی می کند.
- مشخص کنید که چگونه می خواهید برخورد شناسه کاربر انجام شود. شما می توانید بین نگه داشتن مسابقه موجود یا رونویسی با داده های جدید انتخاب کنید.
- روی Finish کلیک کنید. جداول مسابقه به طور کلی آماده است تا 12 ساعت پس از ایجاد آنها پرس و جو شود.
مشاهده جزئیات اتصال
صفحه جزئیات اتصال به شما اطلاعاتی در مورد اجرای و خطاهای اخیر اتصال داده شده به شما می دهد. برای مشاهده جزئیات برای یک اتصال خاص:
- روی Connections کلیک کنید.
- برای مشاهده جزئیات آن ، روی نام اتصال کلیک کنید.
- اکنون می توانید جزئیات اتصال و اجرای اخیر را مشاهده کنید. هر یک از دو نوع خطای ممکن را نشان می دهد: سطح اتصال (اتصال اجرا نشده است) و خطاهای سطح ردیف (یک ردیف وارد نشده است).
- یک وضعیت ناموفق نشان می دهد که کل اتصال نتوانست اجرا کند (به عنوان مثال شماره اجازه حساب خدمات). روی وضعیت خطا کلیک کنید تا ببینید که خطاها بر اتصال تأثیر می گذارد.
- وضعیت تکمیل شده نشان می دهد که اتصال با موفقیت انجام شد. با این حال ، ممکن است هنوز خطاهای سطح ردیف وجود داشته باشد-که توسط یک مقدار غیر صفر در ستون "ردیف با خطا" نشان داده شده است. برای کسب اطلاعات بیشتر در مورد اینکه کدام سوابق شکست خورده است ، روی مقدار کلیک کنید.
یک اتصال را ویرایش کنید
جزئیات زیر قابل ویرایش است:
- نام اتصال
- برنامه ریزی کنید
- جدول مقصد
- نقشه برداری میدانی
ویرایش منبع داده پشتیبانی نمی شود. برای تغییر یک منبع داده ، یک اتصال جدید ایجاد کرده و مورد قدیمی را حذف کنید.
برای ویرایش جزئیات اتصال:
- روی Connections کلیک کنید.
- روی نام اتصال مورد نظر برای ویرایش کلیک کنید.
- جزئیاتی را که می خواهید تغییر دهید ویرایش کنید:
- نام اتصال: روی ویرایش کلیک کنید ، نام جدید را وارد کنید ، سپس Enter را فشار دهید.
- برنامه: روی ویرایش کلیک کنید ، برنامه جدید را تنظیم کنید ، سپس روی ذخیره کلیک کنید.
- جدول مقصد: روی ویرایش کلیک کنید ، نام مقصد جدید را وارد کنید ، سپس روی ذخیره کلیک کنید.
- نقشه برداری فیلد: روی کلیک کنید ، در زمینه ها تغییراتی ایجاد کنید ، سپس روی ذخیره کلیک کنید.
- کلیک کنید.
داده های مطابق با پرس و جو
جداول مسابقه را پرس و جو کنید
هنگامی که جداول مسابقه شما حاوی داده های کافی برای برآورده کردن چک های حریم خصوصی است ، شما آماده اجرای نمایش داده شدگان در برابر جداول هستید.
جدول اصلی برای داده های شخص اول (1PD) توسط my_data
نشان داده شده است. این شامل داده های شناسایی شخصی (PII) و داده های غیر PII است. استفاده از جدول اصلی می تواند گزارش های شما را با بینش بیشتر بهبود بخشد ، زیرا در مقایسه با جدول مسابقه ، تمام داده های 1PD را در دامنه نشان می دهد.
هر جدول در طرح هاب داده های ADS حاوی یک قسمت user_id
با یک جدول مسابقه همراه است. به عنوان مثال ، برای جدول adh.google_ads_impressions
، ADS Data Hub همچنین یک جدول مسابقه به نام adh.google_ads_impressions_updm
حاوی شناسه های کاربری شما ایجاد می کند. جداول مسابقه جداگانه برای جداول جدا شده سیاست ایجاد می شود. به عنوان مثال ، برای جدول adh.google_ads_impressions_policy_isolated_youtube
، ADS Data Hub همچنین یک جدول مسابقه به نام adh.google_ads_impressions_policy_isolated_youtube_updm
حاوی شناسه های کاربر شما ایجاد می کند.
این جداول حاوی زیر مجموعه ای از کاربران موجود در جداول اصلی است ، جایی که یک مسابقه در user_id
وجود دارد. به عنوان مثال ، اگر جدول اصلی حاوی داده هایی برای کاربر A و کاربر B باشد ، اما فقط کاربر A مطابقت دارد ، پس کاربر B در جدول مسابقه نخواهد بود.
جداول مسابقه حاوی یک ستون اضافی به نام customer_data_user_id
است که شناسه کاربر را به عنوان بایت ذخیره می کند.
مهم است که هنگام نوشتن سؤالات خود ، نوع قسمت را در نظر بگیرید. اپراتورهای مقایسه SQL انتظار دارند که لفظاتی که شما در مقایسه با آنها مقایسه می کنید از یک نوع باشند. بسته به نحوه ذخیره user_id
در جدول داده های شخص اول شما ، ممکن است قبل از مطابقت با داده ها مقادیر موجود در جدول را رمزگذاری کنید. برای مسابقات موفق باید کلید پیوستن خود را در بایت قرار دهید:
JOIN ON
adh.google_ads_impressions_updm.customer_data_user_id = CAST(my_data.user_id AS BYTES)
علاوه بر این ، مقایسه رشته ها در SQL به سرمایه گذاری حساس است ، بنابراین ممکن است شما نیاز به رمزگذاری رشته ها در هر دو طرف مقایسه خود داشته باشید تا اطمینان حاصل شود که می توان آنها را به طور دقیق مقایسه کرد.
نمونه پرس و جو
کاربران همسان را بشمارید
این پرس و جو تعداد کاربران همسان را در جدول برداشت های Google Ads شما در نظر می گیرد.
/* Count matched users in Google Ads impressions table */
SELECT COUNT(DISTINCT user_id)
FROM adh.google_ads_impressions_updm
نرخ مسابقه را محاسبه کنید
همه کاربران واجد شرایط تطبیق نیستند. به عنوان مثال ، کاربران امضا شده ، کودکان و کاربران غیرمجاز از طریق UPDM مطابقت ندارند. برای محاسبه نرخ دقیق تر مسابقه updm می توانید از قسمت is_updm_eligible
استفاده کنید. توجه داشته باشید که قسمت is_updm_eligible
از اول اکتبر 2024 در دسترس بود. شما نمی توانید از این قسمت برای محاسبه نرخ مسابقه قبل از آن تاریخ استفاده کنید.
/* 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 بپیوندید
این پرس و جو نحوه پیوستن به داده های شخص اول را با داده های 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
سؤالات متداول updm
برای لیستی از سؤالات متداول مربوط به UPDM ، به سؤالات متداول UPDM مراجعه کنید.