تجمع ميزة "مطابقة البيانات المقدَّمة من المستخدم" (UPDM) بين بيانات الطرف الأول التي جمعتها عن مستخدم معيّن، مثل المعلومات من مواقعك الإلكترونية أو تطبيقاتك أو متاجرك، ونشاط هذا المستخدم نفسه أثناء تسجيل الدخول إلى جميع بيانات الأداء مع إعلانات Google، بما في ذلك البيانات المملوكة وتحت إدارة Google. ويشمل ذلك البيانات التي يتم شراؤها من خلال منتجات "منصّة Google للتسويق"، مثل YouTube الذي يتم شراؤه باستخدام "مساحة العرض والفيديو 360". لا تتوفّر منتجات "منصة Google للتسويق" الأخرى التي لا تملكها Google وتديرها.
لتصبح مؤهَّلاً لمطابقة البيانات المقدَّمة من المستخدم، يجب ربط حدث الإعلان بالمستخدم الذي سجّل الدخول إلى بيانات الأداء مع إعلانات Google.
يصف هذا المستند ميزة مطابقة البيانات المقدَّمة من المستخدم، ويقدّم إرشادات حول الإعداد والاستخدام.
نظرة عامة على علامة التبويب "عمليات الربط"
يتطلّب الحصول على إحصاءات إعلانية قيّمة في كثير من الأحيان تجميع البيانات من مصادر متعددة. يتطلّب إنشاء حلّ خاص بك لمشكلة مسار البيانات هذه استثمارًا كبيرًا للوقت والجهد الهندسي. تسهّل صفحة "عمليات الربط" في Ads Data Hub هذه العملية من خلال توفير واجهة موجَّهة خطوة بخطوة لاستيراد بيانات الأداء مع إعلاناتك وتحويلها ومطابقتها في BigQuery، حتى تتمكّن من استخدامها في طلبات البحث في Ads Data Hub أو أي منتج آخر يقرأ من BigQuery. يمكن أن يؤدي تحسين طلبات البحث باستخدام بيانات الطرف الأول إلى تقديم تجارب أكثر ثراءً للمستخدمين، كما أنّه أكثر مقاومة للتغييرات على مستوى المجال في ما يتعلّق بتتبُّع الإعلانات.
تم إنشاء صفحة "عمليات الربط" باستخدام أدوات تتيح لك تشفير معلومات تكشف الهوية الشخصية (PII) ومشاركتها مع الشركاء بطريقة تركّز على الخصوصية. بعد اختيار الأعمدة التي تحتوي على معلومات تكشف الهوية الشخصية، تشفّر Ads Data Hub البيانات، ما يضمن أنّه لا يمكن تصدير بيانات الطرف الأول أو قراءتها إلا من قِبل المستخدمين الذين لديهم إذن بذلك. قد يكون من الصعب معرفة بيانات الطرف الأول المطلوبة لحالة استخدام القياس أو التفعيل، لذا توفّر Ads Data Hub قائمة شاملة بحالات الاستخدام المحدّدة مسبقًا، ثم ترشدك خلال تجربة استخراج البيانات وتحويلها وتحميلها بالكامل. على الرغم من إمكانية إنشاء أنواع متعددة من عمليات الربط، يفترض هذا المستند أنّك تستخدم صفحة "عمليات الربط" لمطابقة البيانات المقدَّمة من المستخدِم.
مصادر بيانات الطرف الأول المتوافقة
يمكنك استيراد البيانات من مصادر البيانات التالية:
- BigQuery
- Cloud Storage
- بروتوكول النقل الآمن للملفات (sFTP)
- Snowflake
- MySQL
- PostgreSQL
- Amazon Redshift
- Amazon S3
بما أنّ ميزة "مطابقة البيانات المقدَّمة من المستخدم" لا تتوفّر إلا في المستودع الذي تملكه وتديره Google للمستخدمين الذين سجّلوا الدخول، فهي لا تتأثر بالإيقاف النهائي القادم لملفات تعريف الارتباط الخارجية. بما أنّها أكثر قدرة على مقاومة التغيرات في المجال مقارنةً بالبيانات التابعة لجهات خارجية، يمكنها تقديم إحصاءات أكثر تفصيلاً، ما يؤدي إلى زيادة تفاعل العملاء.
التعرُّف على المصطلحات
- اتصال البيانات المقدَّمة من المستخدم: يمكنك إعداد اتصال البيانات المقدَّمة من المستخدم لاستيراد بياناتك ومطابقتها، وجدولة عمليات استيراد البيانات، وتحويل البيانات، ومطابقة بيانات الأداء مع إعلانات باستخدام رقم تعريف المستخدم. يجب ربط حدث الإعلان بمستخدم سجّل الدخول إلى بيانات الأداء مع إعلانات Google. يتطلّب ذلك مشاريع متعددة على Google Cloud.
- ربط بيانات الطرف الأول: يمكنك إعداد ربط بيانات الطرف الأول كأداة لإعداد البيانات، وذلك لجدولة عمليات استيراد البيانات وتحويلها بدون الميزات المتقدّمة لميزة "مطابقة البيانات المقدَّمة من المستخدم". يتطلّب هذا النوع من الربط مشروعًا واحدًا فقط على 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. يُرجى الاطّلاع على البيانات المطابقة لطلب البحث.
التعرّف على متطلبات الخصوصية
جمع بيانات العملاء
عند استخدام ميزة "مطابقة البيانات المقدَّمة من المستخدِم"، عليك تحميل بيانات الطرف الأول. ويمكن أن تكون هذه المعلومات التي جمعتها من مواقعك الإلكترونية أو تطبيقاتك أو متاجرك أو أي معلومات شاركها أحد العملاء معك مباشرةً.
يجب تنفيذ ما يلي:
- التأكّد من أنّ سياسة الخصوصية لديك توضح أنّك تشارك بيانات العملاء مع أطراف ثالثة لتقديم خدمات نيابةً عنك، وأنّك تحصل على موافقة لهذه المشاركة إذا كان ذلك مطلوبًا قانونًا
- استخدام واجهة برمجة تطبيقات (API) أو واجهة وافقت Google عليها فقط لتحميل بيانات العملاء
- الالتزام بكل القوانين واللوائح السارية، بما في ذلك أي قواعد ذاتية التنظيم أو قواعد متّبعة في المجال قد تنطبق
إقرار موافقة الطرف الأول
لضمان إمكانية استخدام بيانات الطرف الأول في Ads Data Hub، عليك تأكيد حصولك على الموافقة المناسبة لمشاركة بيانات تمت مشاركتها من المستخدمين النهائيين في المنطقة الاقتصادية الأوروبية مع Google بموجب سياسة موافقة المستخدم في الاتحاد الأوروبي وسياسة Ads Data Hub. ينطبق هذا الشرط على كل حساب على Ads Data Hub، ويجب تعديله في كل مرة يتم فيها تحميل بيانات الطرف الأول الجديدة. ويمكن لأي مستخدم واحد تقديم هذا الإقرار نيابةً عن الحساب بأكمله.
يُرجى العِلم أنّ قواعد طلبات البحث نفسها في خدمات Google التي تنطبق على طلبات البحث التحليلية تنطبق أيضًا على طلبات البحث في ميزة "مطابقة البيانات المقدَّمة من المستخدم". على سبيل المثال، لا يمكنك تنفيذ طلبات بحث على مستوى خدمات متعددة بشأن المستخدمين في المنطقة الاقتصادية الأوروبية عند إنشاء جدول مطابقات.
لمعرفة كيفية الإقرار بالموافقة في Ads Data Hub، يُرجى الاطّلاع على متطلبات الموافقة في المنطقة الاقتصادية الأوروبية.
حجم البيانات
لحماية خصوصية المستخدمين النهائيين، تفرض ميزة "مطابقة البيانات المقدَّمة من المستخدم" هذه المتطلبات في ما يتعلق بحجم بياناتك:
- يجب تحميل 1,000 سجلّ على الأقل في قائمة المستخدمين.
- يجب أن يتضمّن كل تعديل ناجح لجدول المطابقة حدًا أدنى من المستخدمين الذين تمت مطابقتهم حديثًا. يتشابه هذا السلوك مع عمليات التحقُّق من الاختلافات.
- يجب ألا تتجاوز قائمتك الحد الأقصى لعدد السجلات. لمعرفة الحد الأقصى للبيانات، يُرجى التواصل مع ممثل Google.
إعداد عملية نقل البيانات
قبل البدء، عليك ضبط حسابك على Ads Data Hub لإنشاء اتصالات البيانات، وهي الطريقة التي ستنشئ بها مسار مطابقة البيانات. يجب تنفيذ هذه الخطوات مرة واحدة فقط.
من صفحة عمليات الربط، انقر على بدء الإعداد لفتح معالج إعداد الحساب في مرحلة تفعيل ميزة "مطابقة البيانات المقدَّمة من المستخدم".
ما هي الأذونات التي يتم منحها لـ BigQuery وCloud Storage؟
إذا أعددت ميزة "مطابقة البيانات المقدَّمة من المستخدم" لاستخدامها مع BigQuery أو Cloud Storage، يمكنك الاستعانة بهذا المرجع لفهم الأذونات الممنوحة لحسابات خدمة Ads Data Hub.
BigQuery
| حساب خدمة Datafusion | |||||||||
| الغرض | يُستخدَم حساب خدمة Data Fusion لعرض قائمة بحقول المصادر في واجهة مستخدم Ads Data Hub. | ||||||||
| التنسيق | service-some-number@gcp-sa-datafusion.iam.gserviceaccount.com |
||||||||
| أذونات الوصول المطلوبة |
|
||||||||
| حساب خدمة Dataproc | |||||||||
| الغرض | يكون حساب خدمة Dataproc مسؤولاً عن تشغيل مسارات التعلّم الخاصة بالبيانات في الخلفية. | ||||||||
| التنسيق | some-number-compute@developer.gserviceaccount.com |
||||||||
| أذونات الوصول المطلوبة |
|
||||||||
| حساب خدمة "مطابقة البيانات المقدَّمة من المستخدم" | |||||||||
| الغرض | يتم استخدام حساب خدمة UPDM لتشغيل مهمة المطابقة. | ||||||||
| التنسيق | service-some-number@gcp-sa-adsdataconnector.iam.gserviceaccount.com |
||||||||
| أذونات الوصول المطلوبة |
|
||||||||
Cloud Storage
| حساب خدمة Datafusion | |||||||
| الغرض | يُستخدَم حساب خدمة Data Fusion لعرض قائمة بحقول المصادر في واجهة مستخدم Ads Data Hub. | ||||||
| التنسيق | service-some-number@gcp-sa-datafusion.iam.gserviceaccount.com |
||||||
| أذونات الوصول المطلوبة |
|
||||||
| حساب خدمة Dataproc | |||||||
| الغرض | يكون حساب خدمة Dataproc مسؤولاً عن تشغيل مسارات التعلّم الخاصة بالبيانات في الخلفية. | ||||||
| التنسيق | some-number-compute@developer.gserviceaccount.com |
||||||
| أذونات الوصول المطلوبة |
|
||||||
| حساب خدمة "مطابقة البيانات المقدَّمة من المستخدم" | |||||||
| الغرض | يتم استخدام حساب خدمة UPDM لتشغيل مهمة المطابقة. | ||||||
| التنسيق | 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) في مجموعة البيانات المقصودة، إذا لم يكن الجدول ضِمن مجموعة البيانات التلقائية
متطلبات الحقول وأنواع البيانات
- مطابقة البيانات المقدَّمة من المستخدم:
- يجب ربط
user_idبالإضافة إلى حقل واحد على الأقل من حقول معلومات تحديد الهوية الشخصية (emailأوphoneأو العنوان الكامل:first_nameوlast_nameوcountryوzip_code). -
user_idوcountryوzip_code:STRINGبنص عادي (غير مجزّأ) بالنسبة إلى مصدر BigQuery، يجب أن تكون هذه الأعمدة من نوعSTRING، لأنّ الأنواع الأخرى (مثلINT64) ستؤدي إلى تعذُّر إنشاء عملية الربط. تحوّل ميزة "الربط" السمةuser_idإلىBYTESفي جدول المطابقة. يجب أن يكونcountryرمزًا مكوّنًا من حرفَين وفقًا لمعيار ISO 3166-1 alpha-2. -
emailوphoneوfirst_nameوlast_name:HASH: يجب أن تكون مجزّأة باستخدام خوارزمية SHA-256 ومشفّرة باستخدام Base64 (يتم أيضًا قبول قيمة SHA-256 سداسية عشرية مكوّنة من 64 حرفًا). لا تجزّئ Connections البيانات. لا يتم رصد قيم النص العادي عند إنشاء الاتصال، وبالتالي يتعذّر تنفيذ كل عملية باستخدام... must be encoded using TO_BASE64(SHA256(...)). - لا تتضمّن عمليات ربط ميزة "مطابقة البيانات المقدَّمة من المستخدم" جدولاً للوجهة. جميع طلبات البحث في الحساب، وطلبات البحث في ميزة "مطابقة البيانات المقدَّمة من المستخدم" التي يتم تنفيذها يدويًا، تكتب في بيانات المطابقة نفسها، وبالتالي يحلّ كل تنفيذ محلّ التنفيذ السابق. يكفي ربط واحد لميزة "مطابقة البيانات المقدَّمة من المستخدم" لكل حساب.
- يُرجى الاطّلاع على تنسيق البيانات للإدخال لمعرفة القواعد الخاصة بكل حقل.
- يجب ربط
- استيراد بيانات الطرف الأول:
- استخدِم فقط أنواع البيانات المتوفّرة في واجهة المستخدم:
INTEGERوSTRINGوHASHوDOUBLEوDATEوTIMESTAMP. لا تتوافق أنواع BigQuery الأخرى. - مصدر BigQuery: لا يتم تطبيق النوع المرتبط، ويحتفظ كل عمود وجهة بنوع عمود المصدر.
- مصدر Cloud Storage: تتم قراءة الأعمدة على أنّها
STRINGويتم تحويلها إلى النوع الذي تم ربطه. تصبح القيم التي لا يمكن تحويلهاNULLبدون أن يفشل التشغيل. - يحلّ كل تنفيذ محلّ جدول الوجهة بالكامل، ولا يتم إلحاقه. إذا لم يتضمّن المصدر أي صفوف، تصبح الوجهة فارغة. لا تستخدم الجدول المصدر أو الجدول الذي تحتاج إلى الاحتفاظ ببياناته كجدول الوجهة.
- استخدِم فقط أنواع البيانات المتوفّرة في واجهة المستخدم:
متطلبات أعمدة ملفات CSV في Cloud Storage
- أدرِج صفًا للعنوان. يتم تخطّي السطر الأول، ولا يتم استخدام أسماء الأعمدة فيه.
- يجب أن يحتوي الملف على أعمدة المصدر المرتبطة بالضبط، وليس أكثر أو أقل. تؤدي الأعمدة الإضافية إلى تعذُّر عملية التشغيل.
- استيراد بيانات الطرف الأول: يجب أن تكون الأعمدة بالترتيب نفسه لعمليات ربط الحقول.
- مطابقة البيانات المقدَّمة من المستخدم: يجب أن تكون الأعمدة بهذا الترتيب، مع الاحتفاظ
فقط بالحقول التي تحدّدها:
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 - التجزئة: ما مِن تجزئة
البريد الإلكتروني
- إزالة المسافات البيضاء البادئة واللاحقة
- يجب أن تكون كل الأحرف صغيرة
- أدرِج اسم نطاق لجميع عناوين البريد الإلكتروني، مثل 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، وفي المملكة المتحدة: +442071838750
- أزِل جميع الرموز الخاصة باستثناء علامة "+" قبل رمز البلد
- التجزئة: خوارزمية SHA256 بترميز Base64
صالح: TO_BASE64(SHA256("+18005550101"))
غير صالح: TO_BASE64(SHA256("(800) 555-0101"))
الاسم الأول
- إزالة المسافات البيضاء
- يجب أن تكون كل الأحرف صغيرة
- أزِل جميع البادئات، مثل السيدة Mr., Ms., الدكتور
- لا تُزِل علامات التشكيل، مثل è أو é أو ê أو ë
- التجزئة: خوارزمية SHA256 بترميز Base64
صالح: TO_BASE64(SHA256("daní"))
غير صالح: TO_BASE64(SHA256("Daní"))
اسم العائلة
- إزالة المسافات البيضاء
- يجب أن تكون كل الأحرف صغيرة
- أزِل جميع اللواحق، مثل "الابن" الأب، 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
- التجزئة: ما مِن تجزئة
صالح: US
غير صالح: United States of America أو USA
الرمز البريدي
- يجب عدم تجزئة بيانات الرمز البريدي
- مسموح باستخدام الرموز البريدية الأمريكية والدولية
- في الولايات المتحدة:
- يُسمح باستخدام الرموز المكوَّنة من 5 أرقام، مثل 94043
- يُسمح أيضًا باستخدام 5 أرقام متبوعة بإضافة مكوّنة من 4 أرقام، مثل 94043-1351 أو 940431351
- بالنسبة إلى جميع البلدان الأخرى:
- لا حاجة إلى التنسيق (لا حاجة إلى استخدام أحرف صغيرة أو إزالة المسافات والرموز الخاصة)
- يجب استبعاد إضافات الرموز البريدية
- التجزئة: ما مِن تجزئة
التحقّق من صحة التجزئة وترميز البيانات
يمكنك استخدام نصوص التحقّق من صحة التجزئة التالية للتأكّد من تنسيق بياناتك بشكل صحيح.
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()
Go
/*
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
انقر على "تطبيق" لمنح إذن الوصول إلى Cloud Storage.
MySQL
أدخِل موقع قاعدة بيانات MySQL والمنفذ واسم المستخدم وكلمة المرور.
S3
أدخِل مفتاح الوصول السري الخاص بخدمة Amazon S3.
PostgreSQL
أدخِل موقع قاعدة بيانات PostgreSQL والمنفذ واسم المستخدم وكلمة المرور وقاعدة البيانات.
Redshift
أدخِل موقع قاعدة بيانات Redshift والمنفذ واسم المستخدم وكلمة المرور وقاعدة البيانات.
بروتوكول النقل الآمن للملفات (SFTP)
أدخِل موقع خادم بروتوكول النقل الآمن للملفات (sFTP) واسم المستخدم وكلمة المرور.
Snowflake
أدخِل معرّف حسابك واسم المستخدم وكلمة المرور على Snowflake.
- اضبط إعدادات مصدر البيانات، ثم انقر على التالي:
BigQuery
اختَر جدول BigQuery الذي تريد استيراده.
Cloud Storage
أدخِل مسار gsutil، مثل
gs://my-bucket/folder/واختَر تنسيق الملف.إذا كانت هذه هي المرة الأولى التي ربطت فيها هذا المورد، سيظهر تنبيه. انقر على "تطبيق" لمنح إذن الوصول، ثم انقر على "التالي". ملاحظة: يجب أن يكون لديك دور يملك الإذن بتفويض
storage.buckets.setIamPolicyللحزمة ذات الصلة.MySQL
اختَر الجدول وقاعدة بيانات MySQL اللذَين تريد استخدامهما.
S3
أدخِل معرِّف الموارد المنتظم (URI) الخاص بالملف الذي تريد تحميله، وفقًا لعنوان المضيف.
PostgreSQL
أدخِل اسم مخطّط وجدول (أو طريقة عرض) PostgreSQL.
Redshift
أدخِل اسم مخطّط وجدول (أو طريقة عرض) Redshift. بشكلٍ تلقائي، يستخدم Redshift عناوين URL الخاصة بالمواقع الجغرافية لقاعدة البيانات التي تتبع هذا النموذج:
cluster-identifier.account-number.aws-region.redshift.amazonaws.com.بروتوكول النقل الآمن للملفات (SFTP)
أدخِل مسار الملف واسمه بالتنسيق
/PATH/FILENAME.csvSnowflake
أدخِل قاعدة بيانات Snowflake والمخطّط والجدول (أو طريقة العرض) التي تريد استخدامها.
- اختَر مجموعة بيانات BigQuery لاستخدامها كوجهة وسيطة، ثم انقر على التالي. تضمن هذه الخطوة تنسيق بياناتك بشكل صحيح.
- اختياري: عدِّل تنسيق بياناتك. تشمل عمليات التحويل حساب التجزئة وتنسيق الأحرف الكبيرة/الصغيرة ودمج/تقسيم الحقول.
- انقر على الإجراء > > تحويل.
- في اللوحة المنبثقة، انقر على إضافة عملية تحويل أو إضافة عملية تحويل أخرى.
- اختَر نوع التحويل من القائمة المنسدلة وأدخِل المتطلبات.
- انقر على حفظ.
- اختَر مفتاح دمج واحدًا على الأقل واربط الحقول التي ستستخدمها. ستعمل Ads Data Hub تلقائيًا على ربط الحقول التي تحمل أسماء متطابقة، ويُشار إليها بالرمز . أدخِل أي تعديلات ضرورية، ثم انقر على التالي.
- ضبط جدول زمني:
- أدخِل اسمًا لعملية الربط.
- اضبط معدّل تكرار يحدّد عدد المرات التي سيتم فيها استيراد البيانات إلى مجموعة البيانات التي اخترتها في الخطوة السابقة. ستؤدي كل عملية تشغيل إلى استبدال البيانات في جدول الوجهة.
- حدِّد الطريقة التي تريد بها معالجة تعارضات أرقام تعريف المستخدمين. يمكنك الاختيار بين الاحتفاظ بالمطابقة الحالية أو استبدالها ببيانات جديدة.
- انقر على إنهاء. تكون جداول المطابقة جاهزة بشكل عام للاستعلام عنها بعد 12 ساعة من إنشائها.
عرض تفاصيل الاتصال
تقدّم لك صفحة تفاصيل عملية الربط معلومات عن عمليات التنفيذ والأخطاء الأخيرة لعملية ربط معيّنة. لعرض تفاصيل اتصال معيّن، اتّبِع الخطوات التالية:
- انقر على عمليات الربط.
- انقر على اسم عملية الربط للاطّلاع على تفاصيلها.
- يمكنك الآن الاطّلاع على تفاصيل الاتصال وعمليات الربط الأخيرة. يعرض كلّ منهما نوعَين محتملَين من الأخطاء: أخطاء على مستوى الربط (لم يتم تشغيل الربط) وأخطاء على مستوى الصف (لم يتم استيراد صف).
- تشير الحالة تعذّر إلى تعذُّر تشغيل عملية الربط بالكامل (على سبيل المثال، مشكلة في إذن حساب الخدمة). انقر على حالة الخطأ لمعرفة الأخطاء التي أثّرت في عملية الربط.
- تشير الحالة مكتملة إلى أنّ عملية الربط تمّت بنجاح. ومع ذلك، قد تظل هناك أخطاء على مستوى الصف، وتتم الإشارة إليها بقيمة غير صفرية في عمود "الصفوف التي تتضمّن أخطاء". انقر على القيمة لمعرفة المزيد عن السجلات التي فشلت.
تعديل اتصال
يمكن تعديل التفاصيل التالية:
- اسم عملية الربط
- الجدولة
- جدول الوجهة
- ربط الحقول
لا يمكن تعديل مصدر البيانات. لتغيير مصدر بيانات، أنشئ عملية ربط جديدة واحذف القديمة.
لتعديل تفاصيل الاتصال:
- انقر على عمليات الربط.
- انقر على اسم الاتصال الذي تريد تعديله.
- عدِّل التفاصيل التي تريد تغييرها:
- اسم الاتصال: انقر على تعديل، وأدخِل الاسم الجديد، ثم اضغط على مفتاح 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 أو Cloud Storage أولاً، ثم إنشاء عملية ربط بـ BigQuery أو Cloud Storage.
- عمليات ربط الحقول أو أنواع البيانات غير المتوافقة: عدِّل عملية الربط أو أعِد إنشاءها لتلبية متطلبات الحقول وأنواع البيانات.
- مسارات أحرف البدل في Cloud Storage (
*أو?): استبدِل معرّف الموارد المنتظم (URI) لأحرف البدل بمعرّف موارد منتظم (URI) لملف واحد أو حمِّل الملفات إلى BigQuery أولاً. - أسماء الاتصالات المكرّرة: أعِد تسمية الاتصالات المكرّرة أو احذفها ليكون لكل اتصال في الحساب اسم فريد.
- حذف عمليات الربط غير المستخدَمة: احذف عمليات الربط القديمة التي لم تعُد بحاجة إليها.
البيانات المطابقة لطلب البحث
الاستعلام عن جداول المطابقة
عندما تحتوي جداول المطابقة على بيانات كافية لاستيفاء فحوصات الخصوصية، تكون مستعدًا لتشغيل طلبات البحث على الجداول.
يتم تمثيل الجدول الأصلي لبيانات الطرف الأول (1PD) من خلال my_data.
ويشمل ذلك كلاً من معلومات تكشف الهوية الشخصية (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، والذي يخزّن معرّف المستخدم على شكل وحدات بايت.
من المهم مراعاة نوع الحقل عند كتابة طلبات البحث. تتوقع عوامل المقارنة في 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 أصبح متاحًا اعتبارًا من 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
يوضّح طلب البحث هذا كيفية دمج بيانات الطرف الأول مع بيانات "إعلانات Google":
/* 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
الأسئلة الشائعة حول ميزة "مطابقة البيانات المقدَّمة من المستخدم"
للاطّلاع على قائمة بالأسئلة الشائعة حول ميزة "مطابقة البيانات المقدَّمة من المستخدم"، يُرجى مراجعة الأسئلة الشائعة حول ميزة "مطابقة البيانات المقدَّمة من المستخدم".