تطبیق داده‌های کاربرداده

«مطابقت داده‌های کاربرداده» (UPDM) داده‌های طرف اولی را که درباره کاربر جمع‌آوری کرده‌اید (مانند اطلاعات وب‌سایت‌ها، برنامه‌ها، یا فروشگاه‌های فیزیکی‌تان) با فعالیت همان کاربر در حالت واردشده به سیستم در سراسر داده‌های آگهی Google، ازجمله داده‌های تحت مالکیت و مدیریت Google، مرتبط می‌کند. این شامل داده‌های خریداری‌شده ازطریق محصولات Google Marketing Platform (GMP) می‌شود، برای مثال، YouTube خریداری‌شده بااستفاده از Display & Video 360. سایر محصولات GMP که تحت مالکیت و مدیریت Google نیستند پشتیبانی نمی‌شوند.

برای واجدشرایط بودن برای تطبیق داده‌های کاربرداده، رویداد آگهی باید به کاربر واردشده به سیستم در داده‌های آگهی Google پیوند داده شود.

این سند ویژگی تطبیق داده‌های کاربرداده را شرح می‌دهد و راهنمایی‌هایی درباره راه‌اندازی و استفاده ارائه می‌دهد.

نمای کلی Private Cloud Match

کسب اطلاعات آماری ارزشمند تبلیغات اغلب مستلزم به‌هم پیوستن داده‌ها از منابع متعدد است. ساختن راه‌حل خودتان برای این مشکل خط لوله داده به سرمایه‌گذاری زمانی و مهندسی قابل‌توجهی نیاز دارد. «مطابقت Private Cloud» در Ads Data Hub این فرایند را با ارائه الگوی پُرسمان Ads Data Hub برای ایجاد جدول مطابقت در BigQuery ساده می‌کند. سپس می‌توان از این جدول در پُرسمان‌های Ads Data Hub برای مطابقت دادن داده‌های آگهی با داده‌های طرف اول استفاده کرد. غنی‌سازی پُرسمان‌ها با داده‌های طرف اول می‌تواند تجربه مشتری غنی‌تری ارائه دهد و دربرابر تغییرات ردگیری آگهی در سطح صنعت مقاوم‌تر است.

چون تطبیق داده‌های ارائه‌شده توسط کاربر فقط در فضای آگهی تحت مالکیت و مدیریت Google برای کاربران واردشده به سیستم دردسترس است، تحت تأثیر منسوخ شدن کوکی‌های طرف سوم در آینده قرار نمی‌گیرد. ازآنجایی‌که این داده‌ها نسبت‌به داده‌های طرف سوم دربرابر تغییرات صنعت مقاوم‌تر هستند، می‌توانند اطلاعات آماری غنی‌تری ارائه دهند که می‌تواند به تعامل بیشتر مشتری منجر شود.

خلاصه فرایند

  1. راه‌اندازی تطبیق و دریافت داده
    • شما مطمئن شوید داده‌های شخص اول شما در BigQuery قرار دارد و حساب سرویس شما به آن دسترسی خواندن دارد. راه‌اندازی دریافت داده را ببینید.
  2. دریافت و مطابقت داده‌های شخص اول
    • شما داده‌های شخص اول خود را قالب‌بندی و در مجموعه داده BigQuery خود بارگذاری می‌کنید.
    • شما با ایجاد یک پُرسمان تجزیه‌وتحلیل Private Cloud Match و تنظیم یک زمان‌بندی، درخواست مطابقت داده را آغاز می‌کنید.
    • Google داده‌های پروژه شما و داده‌های تحت مالکیت Google را که حاوی شناسه کاربر Google و داده‌های درهم‌سازی‌شده ارائه‌شده توسط کاربر است به هم متصل می‌کند تا جدول‌های مطابقت را بسازد و به‌روز کند.
    • انتقال داده‌های طرف اول را ببینید
  3. پُرسمان‌های جاری در Ads Data Hub، براساس داده‌های مطابقت‌داده‌شده

آشنایی با الزامات حریم خصوصی

جمع‌آوری داده‌های مشتری

هنگام استفاده از تطبیق داده‌های کاربرداده، باید داده‌های طرف اول را بارگذاری کنید. این اطلاعات می‌تواند اطلاعاتی باشد که از وب‌سایت‌ها، برنامه‌ها، فروشگاه‌های واقعی‌تان، یا هر اطلاعاتی که مشتری مستقیماً با شما هم‌رسانی کرده است جمع‌آوری کرده‌اید.

باید:

  • مطمئن شوید که خط‌مشی رازداری شما شفاف‌سازی می‌کند که داده‌های مشتری را با اشخاص ثالث هم‌رسانی می‌کنید تا خدماتی را ازجانب شما انجام دهند، و درصورت لزوم قانونی، برای این هم‌رسانی رضایت دریافت می‌کنید.
  • فقط از میانای برنامه‌سازی کاربردی یا میانای تأییدشده Google برای بارگذاری داده‌های مشتری استفاده کنید
  • از همه قوانین و مقررات قابل‌اجرا، ازجمله هرگونه کد خودتنظیمی یا صنعتی که ممکن است اعمال شود، پیروی کنید

تأیید رضایت شخص اول

برای اطمینان از اینکه می‌توانید از داده‌های طرف اول خود در Ads Data Hub استفاده کنید، باید تأیید کنید که طبق خط‌مشی رضایت کاربر اتحادیه اروپا و خط‌مشی Ads Data Hub، رضایت مناسب را برای هم‌رسانی داده‌های کاربران نهایی منطقه اقتصادی اروپا با Google دریافت کرده‌اید. این الزام برای هر حساب Ads Data Hub اعمال می‌شود و باید هربار که داده‌های طرف اول جدیدی بارگذاری می‌کنید به‌روز شود. هر کاربری می‌تواند این تأیید را ازطرف کل حساب انجام دهد.

توجه داشته باشید که همان قوانین پُرسمان سرویس Google که برای پُرسمان‌های تجزیه‌وتحلیل اعمال می‌شود برای پُرسمان‌های UPDM نیز اعمال می‌شود. برای مثال، هنگام ایجاد جدول مطابقت، نمی‌توانید پرسمان‌های بین‌سرویسی را برای کاربران ساکن منطقه اقتصادی اروپا اجرا کنید.

برای آشنایی با نحوه تأیید رضایت در Ads Data Hub، به الزامات کسب رضایت برای منطقه اقتصادی اروپا مراجعه کنید.

اندازه داده

برای محافظت از حریم خصوصی کاربر نهایی، تطبیق داده‌های کاربرداده این الزامات را درخصوص اندازه داده‌های شما اعمال می‌کند:

  • باید حداقل ۱۰۰۰ رکورد در فهرست کاربرتان بارگذاری کنید.

راه‌اندازی کردن دریافت داده‌ها

قبل‌از شروع، مطمئن شوید:

  • داده‌های شخص اول شما باید در BigQuery باشد. اگر حاشیه VPC-SC دارید، این داده‌های طرف اول باید در VPC-SC شما قرار داشته باشد.
  • حساب سرویس Ads Data Hub شما باید دسترسی خواندن به داده‌های طرف اول داشته باشد.
  • داده‌های شخص اول شما باید به‌درستی قالب‌بندی و درهم‌سازی شده باشد. برای جزئیات بیشتر، بخش بعدی را ببینید.

علاوه‌براین، Private Cloud Match هیچ آماده‌سازی دیگری ندارد. اگر می‌توانید پُرسمان تحلیلی اجرا کنید، می‌توانید پُرسمان «مطابقت ابری خصوصی» را هم اجرا کنید.

دریافت و مطابقت دادن داده‌های شخص اول

اجازه‌های منبع و الزامات اتصال

«اتصال‌های 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) در مجموعه داده مقصد، اگر جدول در مجموعه داده پیش‌فرض شما نباشد.

شرایط لازم فیلد و نوع داده

  1. تطبیق داده‌های کاربرداده (UPDM):
    • user_id به‌علاوه حداقل یک فیلد اطلاعات شناساننده شخصی (email، phone، یا نشانی کامل: first_name، last_name، country، zip_code) را نگاشت کنید.
    • ‫user_id،‏ country، و zip_code: نوشتار ساده STRING (درهم‌سازی‌نشده). برای منبع BigQuery، این ستون‌ها باید ازقبل STRING باشند؛ انواع دیگر (برای مثال، INT64) هنگام ایجاد اتصال ناموفق می‌شوند. Connections user_id را به BYTES در جدول مسابقه ارسال می‌کند. country باید کد ISO 3166-1 alpha-2 دوحرفی باشد.
    • email، phone، first_name، و last_name: HASH—باید ازقبل درهم‌سازی SHA-256 و کدبندی Base64 شده باشد (مقدار شانزده‌شانزدهی ۶۴ نویسه‌ای SHA-256 نیز پذیرفته می‌شود). Connections داده‌ها را درهم‌سازی نمی‌کند. مقادیر نوشتار ساده هنگام ایجاد اتصال گرفته نمی‌شوند؛ سپس هر اجرا با ... must be encoded using TO_BASE64(SHA256(...)) ناموفق می‌شود.
    • اتصال‌های تطبیق داده‌های کاربرداده جدول مقصد ندارند. همه آن‌ها در یک حساب، و پُرسمان‌های UPDM که به‌صورت دستی اجرا می‌شوند، در همان داده‌های مطابقت می‌نویسند، بنابراین هر اجرا جایگزین اجرای قبلی می‌شود. یک اتصال «مطابقت داده‌های کاربرداده» برای هر حساب کافی است.
    • برای قوانین هر فیلد، به قالب‌بندی داده‌ها برای ورودی مراجعه کنید.
  2. وارد کردن داده‌های شخص اول:
    • فقط از انواع داده‌های ارائه‌شده در میانای کاربر استفاده کنید: INTEGER، STRING، HASH، DOUBLE، DATE، و TIMESTAMP. انواع دیگر BigQuery پشتیبانی نمی‌شوند.
    • منبع BigQuery: نوع نگاشت‌شده اعمال نمی‌شود؛ هر ستون مقصد نوع ستون منبع خود را حفظ می‌کند.
    • منبع Cloud Storage: ستون‌ها به‌صورت STRING خوانده می‌شوند و به نوع نگاشت‌شده تبدیل می‌شوند. مقادیری که نمی‌توانند تبدیل شوند، بدون اینکه اجرای دستور ناموفق شود، به NULL تبدیل می‌شوند.
    • هر اجرا کل جدول مقصد را جایگزین می‌کند؛ چیزی به آن اضافه نمی‌کند. اگر منبع ردیفی نداشته باشد، مقصد خالی می‌شود. از جدول منبع یا جدولی که باید داده‌های آن را حفظ کنید به‌عنوان مقصد استفاده نکنید.

الزامات ستون CSV فضای ذخیره‌سازی ابری

  • ردیف سرصفحه اضافه کنید. خط اول نادیده گرفته می‌شود؛ از نام ستون‌های آن استفاده نمی‌شود.
  • فایل باید دقیقاً حاوی ستون‌های منبع نگاشت‌شده باشد، نه بیشتر و نه کمتر. ستون‌های اضافی باعث ناموفق شدن اجرا می‌شود.
  • وارد کردن داده‌های شخص اول: ستون‌ها باید به همان ترتیبی باشند که در نگاشت‌های فیلد قرار دارند.
  • تطبیق داده‌های کاربرداده: ستون‌ها باید به این ترتیب باشند و فقط فیلدهایی را که نگاشت می‌کنید نگه دارید: user_id، email، phone، first_name، last_name، country، zip_code. ترتیب ردیف‌های نگاشت اهمیتی ندارد.
  • ترتیب متفاوت ستون‌ها شناسایی نمی‌شود: مقادیر بدون خطا در فیلدهای اشتباه بار می‌شود (یا نرخ‌های مطابقت کاهش می‌یابد).

منابع داده پشتیبانی‌شده و محدودیت‌های اتصال

  • منابع داده: فقط منابع BigQuery و Cloud Storage پشتیبانی می‌شوند.
  • نام‌های جدول BigQuery: جدول‌های BigQuery مبدأ و مقصد به نام کامل project.dataset.table نیاز دارند.
  • مسیرهای فایل Cloud Storage: یک URI فایل (مانند gs://bucket/path/file.csv) ارائه دهید. مسیرهای عام با * یا ? پشتیبانی نمی‌شوند.
  • نام‌های اتصال: هر اتصال در حساب باید نام یکتایی داشته باشد.

قالب‌بندی داده‌ها برای ورودی

داده‌های شما باید از این الزامات قالب‌بندی پیروی کند تا به‌درستی مطابقت داده شود:

  • در جاهایی که در شرح فیلد ورودی زیر نشان داده شده است، باید بااستفاده از درهم‌سازی SHA256 بارگذاری کنید.
  • مطابقت داده‌های کاربرداده از کدبندی Base64 پشتیبانی می‌کند. ‫TO_BASE64 را ببینید.
  • فیلدهای ورودی باید به‌صورت رشته قالب‌بندی شوند. برای مثال، اگر از تابع چکیده‌ساز SHA256 BigQuery استفاده می‌کنید، از تبدیل زیر استفاده کنید: TO_BASE64(SHA256(user_data)).

شناسه کاربر

  • نوع داده: BYTES
  • درهم‌سازی: None

ایمیل

  • برداشتن فاصله‌های سفید اضافی در ابتدا و انتهای متن
  • همه نویسه‌ها را به حروف کوچک تبدیل می‌کند
  • برای همه نشانی‌های ایمیل، نام دامنه اضافه کنید، مثلاً gmail.com یا hotmail.co.jp
  • اعراب‌ها را بردارید—برای مثال، è، é، ê، یا ë را به e تغییر دهید
  • همه نقطه‌های (.) قبل‌از نام دامنه را در نشانی‌های ایمیل gmail.com و googlemail.com بردارید
  • درهم‌سازی: SHA256 کدبندی‌شده با Base64

معتبر: TO_BASE64(SHA256("jeffersonloveshiking@gmail.com"))

نامعتبر: TO_BASE64(SHA256("JéffersonLôvesHiking@gmail.com"))

تلفن

  • حذف فاصله سفید
  • قالب در قالب E.164—برای مثال، نمونه ایالات متحده: ‎+14155552671، نمونه پادشاهی متحد (UK): ‎+442071838750
  • همه نویسه‌های خاص به‌جز «+» را قبل‌از کد کشور بردارید
  • درهم‌سازی: SHA256 کدبندی‌شده با Base64

معتبر: TO_BASE64(SHA256("+18005550101"))

نامعتبر: TO_BASE64(SHA256("(800) 555-0101"))

نام

  • حذف فاصله سفید
  • همه نویسه‌ها را به حروف کوچک تبدیل می‌کند
  • همه پیشوندها را بردارید، مثلاً خانم، آقای، خانم، دکتر
  • تلفظ‌ها را حذف نکنید—برای مثال، è، é، ê، یا ë
  • درهم‌سازی: SHA256 کدبندی‌شده با Base64

معتبر: TO_BASE64(SHA256("daní"))

نامعتبر: TO_BASE64(SHA256("Daní"))

نام خانوادگی

  • حذف فاصله سفید
  • همه نویسه‌ها را به حروف کوچک تبدیل می‌کند
  • همه پسوندها را بردارید - برای مثال Jr.، Sr., ‫2nd،‏ 3rd،‏ II،‏ III،‏ PHD،‏ MD
  • تلفظ‌ها را حذف نکنید—برای مثال، è، é، ê، یا ë
  • درهم‌سازی: SHA256 کدبندی‌شده با Base64

معتبر: TO_BASE64(SHA256("délacruz"))

نامعتبر: TO_BASE64(SHA256("dé la Cruz, Jr."))

کشور

  • کد کشور را وارد کنید، حتی اگر همه داده‌های مشتری شما از یک کشور باشد
  • داده‌های کشور را درهم نکنید
  • از کدهای کشور ISO 3166-1 alpha-2 استفاده کنید
  • درهم‌سازی: None

معتبر: US

نامعتبر: United States of America یا USA

کد پستی

  • داده‌های کد پستی را درهم نکنید
  • کد پستی ایالات متحده و بین‌المللی مجاز است
  • برای ایالات متحده:
    • کدهای ۵ رقمی مجاز است—برای مثال، ۹۴۰۴۳
    • ۵ رقم به‌دنبال ۴ رقم داخلی نیز مجاز است—برای مثال، ‎۹۴۰۴۳-۱۳۵۱ یا ۹۴۰۴۳۱۳۵۱
  • برای همه کشورهای دیگر:
    • نیازی به قالب‌بندی نیست (نیازی به استفاده از حروف کوچک یا برداشتن فاصله‌ها و نویسه‌های خاص نیست)
    • افزونه‌های کد پستی را حذف کنید
  • درهم‌سازی: None

اعتبارسنجی درهم‌سازی و کدبندی داده‌ها

می‌توانید از اسکریپت‌های اعتبارسنجی درهم‌سازی زیر استفاده کنید تا مطمئن شوید داده‌هایتان به‌درستی قالب‌بندی شده‌اند.

JavaScript

  /**
   * @fileoverview Provides the hashing algorithm, as well as some valid hashes of
   * sample data for testing.
  */

  async function hash(token) {
    // Removes leading or trailing spaces and converts all characters to lowercase.
    const formattedToken = token.trim().toLowerCase();
    // Hashes the formatted string using the SHA-256 hashing algorithm.
    const hashBuffer = await crypto.subtle.digest(
        'SHA-256', (new TextEncoder()).encode(formattedToken));
    // Converts the hash buffer to a base64-encoded string and returns it.
    const base64Str = btoa(String.fromCharCode(...new Uint8Array(hashBuffer)));
    return base64Str;
  }

  function main() {
    // Expected hash for test@gmail.com:
    // h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
    hash('test@gmail.com').then(result => console.log(result));

    // Expected hash for +18005551212:
    // YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
    hash('+18005551212').then(result => console.log(result));

    // Expected hash for John: ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
    hash('John').then(result => console.log(result));

    // Expected hash for Doe: eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
    hash('Doe').then(result => console.log(result));
  }

  main()

Python

  """Provides the hashing algorithm, as well as some valid hashes of sample data for testing.

  Supports: Python 2, Python 3

  Sample hashes:

    - Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
    - Phone '+18005551212':   YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
    - First name 'John':      ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
    - Last name 'Doe':        eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
  """

  import base64
  import hashlib

  def hash(token):
  # Generates a base64-encoded SHA-256 hash of a normalized input string.
    return base64.b64encode(
        hashlib.sha256(
            token.strip().lower().encode('utf-8')).digest()).decode('utf-8')

  def print_hash(token, expected=None):
  # Computes and displays the hash of a token, with optional validation.
    hashed = hash(token)

    if expected is not None and hashed != expected:
      print(
          'ERROR: Incorrect hash for token "{}". Expected "{}", got "{}"'.format(
              token, expected, hashed))
      return

    print('Hash: "{}"\t(Token: {})'.format(hashed, token))

  def main():
  # Tests the hash function with sample tokens and expected results.
    print_hash(
        'test@gmail.com', expected='h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=')
    print_hash(
        '+18005551212', expected='YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=')
    print_hash('John', expected='ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=')
    print_hash('Doe', expected='eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=')

  if __name__ == '__main__':
    main()

رفتن

  /*
  Provides the hashing algorithm, as well as some valid hashes of sample data for testing.

  Sample hashes:

    - Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
    - Phone '+18005551212':   YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
    - First name 'John':      ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
    - Last name 'Doe':        eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
  */
  package main

  import (
    "crypto/sha256"
    "encoding/base64"
    "fmt"
    "strings"
  )

  // Hash hashes an email, phone, first name, or last name into the correct format.
  func Hash(token string) string {
    formatted := strings.TrimSpace(strings.ToLower(token))
    hashed := sha256.Sum256([]byte(formatted))
    encoded := base64.StdEncoding.EncodeToString(hashed[:])
    return encoded
  }

  // PrintHash prints the hash for a token.
  func PrintHash(token string) {
    fmt.Printf("Hash: \"%s\"\t(Token: %s)\n", Hash(token), token)

  }

  func main() {
    PrintHash("test@gmail.com")
    PrintHash("+18005551212")
    PrintHash("John")
    PrintHash("Doe")
  }

جاوا

  package updm.hashing;

  import static java.nio.charset.StandardCharsets.UTF_8;

  import java.security.MessageDigest;
  import java.security.NoSuchAlgorithmException;
  import java.util.Base64;

  /**
  * Example of the hashing algorithm.
  *
  * <p>Sample hashes:
  *
  * <ul>
  *   <li>Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
  *   <li>Phone '+18005551212': YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
  *   <li>First name 'John': ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
  *   <li>Last name 'Doe': eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
  * </ul>
  */
  public final class HashExample {

  private HashExample() {}

  public static String hash(String token) {
    // Normalizes and hashes the input token using SHA-256 and Base64 encoding.
    String formattedToken = token.toLowerCase().strip();

    byte[] hash;
    try {
      hash = MessageDigest.getInstance("SHA-256").digest(formattedToken.getBytes(UTF_8));
    } catch (NoSuchAlgorithmException e) {
      throw new IllegalStateException("SHA-256 not supported", e);
    }

    return Base64.getEncoder().encodeToString(hash);
  }

  public static void printHash(String token) {
    // Calculates and prints the hash for the given token.
    System.out.printf("Hash: \"%s\"\t(Token: %s)\n", hash(token), token);
  }

  public static void main(String[] args) {
    // Executes hash calculations and prints results for sample tokens.
    printHash("test@gmail.com");
    printHash("+18005551212");
    printHash("John");
    printHash("Doe");
  }
  }

SQL

  /*
  Provides the hashing algorithm, as well as some valid hashes of sample data for testing.

  The following code uses Google Standard SQL and can be run on BigQuery to generate match tables from unhashed data.

  Sample hashes:

    - Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
    - Phone '+18005551212':   YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
    - First name 'John':      ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
    - Last name 'Doe':        eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=

  The unhashed input table schema is assumed to be:

  - Column name: UserID, Type: String
  - Column name: Email, Type: String
  - Column name: Phone, Type: String
  - Column name: FirstName, Type: String
  - Column name: LastName, Type: String
  - Column name: PostalCode, Type: String
  - Column name: CountryCode, Type: String
  */

  -- Creates a new table with Base64-encoded SHA-256 hashes of specified columns.
  CREATE TABLE `your_project_name.your_dataset_name.output_hashed_table_name`
  AS
  SELECT
    UserID,
    TO_BASE64(SHA256(LOWER(Email))) AS Email,
    TO_BASE64(SHA256(Phone)) AS Phone,
    TO_BASE64(SHA256(LOWER(FirstName))) AS FirstName,
    TO_BASE64(SHA256(LOWER(LastName))) AS LastName,
    PostalCode,
    CountryCode,
  FROM
    `your_project_name.your_dataset_name.input_unhashed_table_name`;

کلیدهای پیوستن

برخی‌از ترکیب‌های داده‌های ارائه‌شده توسط کاربر قوی‌تر از بقیه هستند. در زیر فهرستی از ترکیب‌های مختلف داده‌های ارائه‌شده توسط کاربر آمده است که براساس قدرت نسبی رتبه‌بندی شده‌اند. اگر از نشانی استفاده می‌کنید، باید این موارد را اضافه کنید: نام، نام خانوادگی، کشور، و کد پستی.

  1. ایمیل، تلفن، نشانی (قوی‌ترین)
  2. تلفن، نشانی
  3. ایمیل، نشانی
  4. ایمیل، تلفن
  5. نشانی
  6. تلفن
  7. ایمیل (ضعیف‌ترین)

ایجاد جدول مطابقت

  1. روی افزودن ایجاد > گزارش کلیک کنید.
  2. الگوی تولید جدول تطابق ابر خصوصی را انتخاب کنید. اختیاری: اگر داده‌هایتان ازقبل درهم نشده است، می‌توانید تولید جدول تطابق ابری خصوصی (با درهم‌سازی) را انتخاب کنید.
  3. روی ویرایش پُرسمان کلیک کنید و سپس نام‌های پارامتر را با نام‌های ستون خود جایگزین کنید تا نام مستعار مناسب ارائه شود.
  4. روی تنظیم زمان‌بندی کلیک کنید تا تعداد دفعات بازآوری جدول مطابقت را تنظیم کنید. هر اجرا جدول مطابقت فعلی را رونویسی خواهد کرد.

انتقال دادن اتصالات موجود

اتصال‌های موجود در برگه اتصال‌ها به تجربه به‌روزشده «اتصال‌ها» که مستقیماً در Ads Data Hub ساخته شده است منتقل می‌شوند. اتصال‌های به‌روزشده منابع را می‌خوانند و مقصدهای نوشتن را بااستفاده از حساب سرویس نشان‌داده‌شده در تنظیمات > جزئیات > حساب سرویس (معمولاً service-<number>@gcp-sa-adsdatahub.iam.gserviceaccount.com) به‌جای حساب‌های سرویس قدیمی Data Fusion،‏ Dataproc، و UPDM انجام می‌دهند.

این دستورهای اقدام را قبل‌از انتقال اتصال‌هایتان تکمیل کنید:

  1. اعطای اجازه‌های حساب سرویس: به حساب سرویس نشان‌داده‌شده در تنظیمات > جزئیات > حساب سرویس (معمولاً service-<number>@gcp-sa-adsdatahub.iam.gserviceaccount.com) نقش‌های منبع و مقصد لازم را اعطا کنید (roles/bigquery.dataViewer، roles/storage.objectViewer، و roles/bigquery.dataEditor در مجموعه‌های داده مقصد غیرپیش‌فرض). اتصال‌های دارای منابع ناخوانا، حذف‌شده، یا تغییریافته ممکن است همچنان منتقل شوند (به‌ویژه منابع Cloud Storage که در زمان انتقال اعتبارسنجی نمی‌شوند)، اما اجراها تا زمانی که دسترسی اعطا نکنید یا منبع را اصلاح نکنید ناموفق خواهند بود.
  2. تبدیل اتصال‌های پشتیبانی‌نشده: اتصال‌های دارای پیکربندی‌های زیر منتقل نخواهند شد. آن‌ها را به اتصالات BigQuery یا Cloud Storage پشتیبانی‌شده تبدیل کنید:
    • سایر منابع داده (Amazon S3،‏ Snowflake،‏ MySQL،‏ PostgreSQL،‏ Amazon Redshift،‏ sFTP، یا Salesforce): ابتدا داده‌ها را در BigQuery یا «فضای ذخیره‌سازی ابری» آماده کنید، سپس اتصال BigQuery یا «فضای ذخیره‌سازی ابری» ایجاد کنید.
    • نگاشت‌های فیلد یا انواع داده‌های پشتیبانی‌نشده: اتصال را به‌روزرسانی یا بازآفرینی کنید تا الزامات فیلد و نوع داده را برآورده کند.
    • مسیرهای جانشین Cloud Storage (* یا ?): شناسه منبع یکسان جانشین را با شناسه منبع یکسان تک‌فایل جایگزین کنید یا ابتدا فایل‌ها را در BigQuery بار کنید.
    • نام‌های اتصال تکراری: نام اتصال‌های تکراری را تغییر دهید یا آن‌ها را حذف کنید تا هر اتصال در حساب نامی یکتا داشته باشد.
  3. حذف اتصال‌های استفاده‌نشده: اتصال‌های قدیمی را که دیگر به آن‌ها نیاز ندارید حذف کنید.

داده‌های منطبق با پُرسمان

پُرسمان از جدول‌های مطابقت

وقتی جدول‌های مطابقت شما حاوی داده‌های کافی برای برآورده کردن بررسی‌های حریم خصوصی باشد، آماده اجرای پُرسمان‌ها در جدول‌ها هستید.

جدول اصلی برای داده‌های شخص اول (1PD) با my_data نشان داده می‌شود. این شامل اطلاعات شناساننده شخصی (PII) و داده‌های غیر PII می‌شود. استفاده از جدول اصلی می‌تواند گزارش‌های شما را با اطلاعات آماری بیشتری بهبود بخشد، زیرا در مقایسه با جدول مطابقت، تمام داده‌های شخص اول موجود در محدوده را نشان می‌دهد.

هر جدول در طرح‌واره Ads Data Hub که حاوی فیلد user_id است، با جدول مطابقت همراه است. برای مثال، برای جدول adh.google_ads_impressions، ‏Ads Data Hub جدول مطابقت دیگری نیز به‌نام adh.google_ads_impressions_updm تولید می‌کند که حاوی شناسه‌های کاربر شما است. جدول‌های مطابقت جداگانه‌ای برای جدول‌های شبکه جداشده از خط‌مشی ایجاد می‌شود. برای مثال، برای جدول adh.google_ads_impressions_policy_isolated_network، Ads Data Hub جدول مطابقت دیگری نیز به‌نام adh.google_ads_impressions_policy_isolated_network_updm تولید می‌کند که حاوی شناسه‌های کاربر شما است.

این جدول‌ها حاوی زیرمجموعه‌ای از کاربران موجود در جدول‌های اصلی هستند، که در آن user_id مطابقت دارد. برای مثال، اگر جدول اصلی حاوی داده‌های «کاربر الف» و «کاربر ب» باشد، اما فقط «کاربر الف» مطابقت داشته باشد، «کاربر ب» در جدول مطابقت نخواهد بود.

جدول‌های مطابقت حاوی ستون دیگری به‌نام customer_data_user_id هستند که شناسه کاربر را به‌صورت BYTES ذخیره می‌کند.

هنگام نوشتن پُرسمان‌ها، مهم است که نوع فیلد را درنظر بگیرید. عملگرهای مقایسه SQL انتظار دارند که مقادیر ثابتی که مقایسه می‌کنید از یک نوع باشند. بسته به اینکه user_id چگونه در جدول داده‌های طرف اول شما ذخیره شده است، ممکن است لازم باشد مقادیر موجود در جدول را قبل‌از مطابقت دادن داده‌ها کدبندی کنید. برای مطابقت‌های موفق، باید کلید پیوستن خود را به BYTES تبدیل کنید:

JOIN ON
  adh.google_ads_impressions_updm.customer_data_user_id = CAST(my_data.user_id AS BYTES)

به‌علاوه، مقایسه رشته‌ها در SQL به حروف بزرگ و کوچک حساس است، بنابراین ممکن است لازم باشد رشته‌ها را در هر دو طرف مقایسه خود کدگذاری کنید تا مطمئن شوید که می‌توان آن‌ها را به‌درستی مقایسه کرد.

پُرسمان‌های نمونه

شمارش کاربران منطبق

این پُرسمان تعداد کاربران مطابقت‌داده‌شده را در جدول ظهورهای «آگهی‌های Google» شما می‌شمارد.

/* Count matched users in Google Ads impressions table */

SELECT COUNT(DISTINCT user_id)
FROM adh.google_ads_impressions_updm

محاسبه نرخ مطابقت

همه کاربران واجدشرایط مطابقت نیستند. برای مثال، کاربران خارج‌شده از سیستم، کودکان، و کاربران بدون رضایت اعلام‌شده ازطریق «مطابقت داده‌های کاربرداده» مطابقت داده نمی‌شوند. می‌توانید از فیلد is_updm_eligible برای محاسبه دقیق‌تر نرخ‌های مطابقت «مطابقت داده‌های کاربرداده» استفاده کنید. توجه داشته باشید که فیلد is_updm_eligible از ۱ اکتبر ۲۰۲۴ دردسترس بود. نمی‌توانید از این فیلد برای محاسبه نرخ‌های مطابقت قبل‌از آن تاریخ استفاده کنید.

/* Calculate the UPDM match rate */

CREATE TEMP TABLE total_events OPTIONS(privacy_checked_export=TRUE) AS
SELECT
  customer_id,
  COUNT(*) AS n
FROM adh.google_ads_impressions
WHERE is_updm_eligible
GROUP BY 1;

CREATE TEMP TABLE matched_events OPTIONS(privacy_checked_export=TRUE) AS
SELECT
  customer_id,
  COUNT(*) AS n
FROM adh.google_ads_impressions_updm
GROUP BY 1;

SELECT
  customer_id,
  SAFE_DIVIDE(matched_events.n, total_events.n) AS match_rate
FROM total_events
LEFT JOIN matched_events
  USING (customer_id)

پیوستن به داده‌های شخص اول و Google Ads

این پُرسمان نحوه پیوستن داده‌های شخص اول به داده‌های Google Ads را نشان می‌دهد:

/* Join first-party data with Google Ads data. The customer_data_user_id field
contains your ID as BYTES. You need to cast your join key into BYTES for
successful matches. */

SELECT
  inventory_type,
  COUNT(*) AS impressions
FROM
  adh.yt_reserve_impressions_updm AS google_data_imp
LEFT JOIN
  `my_data`
ON
  google_data_imp.customer_data_user_id = CAST(my_data.user_id AS BYTES)
GROUP BY
  inventory_type

پرسشگان مطابقت داده‌های کاربرداده

برای مشاهده فهرست پرسشگان مربوط به «مطابقت داده‌های کاربرداده»، به پرسشگان مطابقت داده‌های کاربرداده مراجعه کنید.