تطبیق دادههای ارائهشده توسط کاربر (UPDM) به دادههای شخص اولی که درباره یک کاربر جمعآوری کردهاید - مانند اطلاعات از وبسایتها، برنامهها یا فروشگاههای فیزیکی خود - با فعالیت ورود به سیستم همان کاربر در همه دادههای تبلیغات Google ، از جمله دادههای متعلق به Google و دادههای ادارهشده، میپیوندد. این شامل دادههایی میشود که از طریق محصولات Google Marketing Platform (GMP) خریداری شدهاند، برای مثال، YouTube با استفاده از Display & Video 360 خریداری شده است. سایر محصولات GMP که متعلق به Google و اداره نمیشوند، پشتیبانی نمیشوند.
برای واجد شرایط بودن برای مطابقت دادههای ارائهشده توسط کاربر، رویداد تبلیغاتی باید به کاربر واردشده در دادههای آگهی Google پیوند داده شود.
این سند ویژگی تطبیق دادههای ارائهشده توسط کاربر را توصیف میکند و راهنمایی در مورد راهاندازی و استفاده ارائه میدهد.
بررسی اجمالی مسابقه ابر خصوصی
به دست آوردن بینش تبلیغاتی ارزشمند اغلب مستلزم پیوند داده ها از منابع متعدد است. ایجاد راه حل خود برای این مشکل خط لوله داده ها نیازمند سرمایه گذاری زمانی قابل توجه و سرمایه گذاری مهندسی است. Private Cloud Match در Ads Data Hub این فرآیند را با ارائه یک الگوی جستجوی Ads Data Hub برای ایجاد جدول تطبیقی در BigQuery که سپس میتواند در جستارهای Ads Data Hub برای تطبیق دادههای تبلیغات شما با دادههای شخص اول شما استفاده شود، ساده میکند. غنیسازی پرسشهای شما با دادههای شخص اول میتواند تجربیات غنیتری برای مشتری ارائه دهد و در برابر تغییرات ردیابی تبلیغات در سطح صنعت مقاومتر است.
از آنجایی که تطبیق دادههای ارائهشده توسط کاربر فقط در موجودی متعلق به Google و برای کاربرانی که به سیستم وارد شدهاند در دسترس است، تحت تأثیر از بین رفتن آتی کوکیهای شخص ثالث قرار نمیگیرد. از آنجایی که نسبت به دادههای شخص ثالث در برابر تغییرات صنعت مقاومتر است، میتواند بینش غنیتری ارائه دهد که میتواند منجر به تعامل بیشتر مشتری شود.
خلاصه فرآیند
- تنظیم هضم و تطبیق داده ها
- مطمئن شوید که دادههای شخص اول شما در BigQuery قرار دارند و حساب سرویس شما به آن دسترسی خواندنی دارد. به تنظیم انتقال داده مراجعه کنید.
- دریافت و تطبیق داده های شخص اول
- شما داده های شخص اول خود را در مجموعه داده BigQuery خود قالب بندی و آپلود می کنید.
- شما یک درخواست تطبیق داده را با ایجاد یک جستار تحلیلی Private Cloud Match و تنظیم یک زمانبندی آغاز میکنید.
- 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 خود تماس بگیرید.
انتقال داده را تنظیم کنید
قبل از شروع، مطمئن شوید:
- داده های شخص اول شما باید در BigQuery باشد. اگر محیط VPC-SC دارید، این داده های شخص اول باید در VPC-SC شما قرار بگیرند.
- حساب سرویس Ads Data Hub شما باید به داده های شخص اول دسترسی خواندن داشته باشد.
- داده های شخص اول شما باید به درستی قالب بندی و هش شده باشند. برای جزئیات بیشتر به بخش بعدی مراجعه کنید.
فراتر از آن، Private Cloud Match هیچ ورودی اضافی ندارد. اگر می توانید یک پرس و جو تجزیه و تحلیل را اجرا کنید، می توانید یک پرس و جو Private Cloud Match را اجرا کنید.
داده های شخص اول را بلع و مطابقت دهید
فرمت داده ها برای ورودی
داده های شما باید به این الزامات قالب بندی مطابقت داشته باشند تا به درستی مطابقت داشته باشند:
- در جایی که در توضیحات فیلد ورودی زیر مشخص شده است، باید با استفاده از هش SHA256 آپلود کنید.
- فیلدهای ورودی باید به صورت رشته ای قالب بندی شوند. برای مثال، اگر از تابع هش SHA256 BigQuery با تابع رمزگذاری Base64 ( TO_BASE64 ) استفاده می کنید، از تبدیل زیر استفاده کنید:
TO_BASE64(SHA256(user_data))
. - UPDM از رمزگذاری Base64 پشتیبانی می کند. شما باید رمزگذاری داده های شخص اول خود را با رمزگشایی مورد استفاده در جستجوی Ads Data Hub خود تراز کنید. اگر رمزگذاری داده شخص اول خود را تغییر دهید، باید جستجوی Ads Data Hub خود را برای رمزگشایی از همان پایگاه به روز کنید. نمونه های زیر از رمزگذاری Base64 استفاده می کنند.
شناسه کاربری
- متن ساده
- هش کردن: ندارد
ایمیل
- فضاهای سفید پیشرو و انتهایی را حذف کنید
- حروف کوچک همه کاراکترها
- یک نام دامنه برای همه آدرسهای ایمیل، مانند gmail.com یا hotmail.co.jp درج کنید
- لهجه ها را حذف کنید - برای مثال، è، é، ê، یا ë را به e تغییر دهید
- تمام نقاط (.) که قبل از نام دامنه در آدرس های ایمیل
gmail.com
وgooglemail.com
قرار دارند را حذف کنید. - هش: Base64 با کد SHA256
معتبر: TO_BASE64(SHA256("jeffersonloveshiking@gmail.com"))
نامعتبر: TO_BASE64(SHA256(" Jéfferson.Lôves.Hiking@gmail.com "))
تلفن
- فضای خالی را بردارید
- فرمت در فرمت E.164 - مثال ایالات متحده: +14155552671، نمونه بریتانیا: +442071838750
- همه کاراکترهای خاص به جز "+" قبل از کد کشور را حذف کنید
- هش: Base64 با کد SHA256
معتبر: TO_BASE64(SHA256("+18005550101"))
نامعتبر: TO_BASE64(SHA256("(800) 555-0101"))
نام کوچک
- فضای خالی را بردارید
- حروف کوچک همه کاراکترها
- همه پیشوندها را حذف کنید - به عنوان مثال Mrs., Mr., Ms., Dr.
- لهجهها را حذف نکنید - برای مثال، è، é، ê یا ë
- هش: Base64 با کد SHA256
معتبر: TO_BASE64(SHA256("daní"))
نامعتبر: TO_BASE64(SHA256("Mrs. Daní"))
نام خانوادگی
- فضای خالی را بردارید
- حروف کوچک همه کاراکترها
- تمام پسوندها را حذف کنید - برای مثال Jr., Sr., 2nd, 3rd, II, III, PHD, MD
- لهجهها را حذف نکنید - برای مثال، è، é، ê یا ë
- هش: Base64 با کد SHA256
معتبر: 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
- برای همه کشورهای دیگر:
- بدون نیاز به قالب بندی (بدون نیاز به حروف کوچک یا حذف فاصله و کاراکترهای خاص)
- پسوند کد پستی را کنار بگذارید
- هش کردن: ندارد
اعتبار سنجی هش و رمزگذاری داده ها
میتوانید از اسکریپتهای اعتبارسنجی هش زیر استفاده کنید تا مطمئن شوید که دادههایتان به درستی قالببندی شدهاند.
جاوا اسکریپت
/**
* @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()
پایتون
"""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`;
کلیدهای پیوستن
برخی از ترکیبات داده های ارائه شده توسط کاربر قوی تر از سایرین هستند. در زیر لیستی از ترکیبات مختلف داده های ارائه شده توسط کاربر ارائه شده است که بر اساس قدرت نسبی رتبه بندی شده اند. اگر از آدرسی استفاده می کنید، باید موارد زیر را وارد کنید: نام، نام خانوادگی، کشور و کد پستی.
- ایمیل، تلفن، آدرس (قوی ترین)
- تلفن، آدرس
- ایمیل، آدرس
- ایمیل، تلفن
- آدرس
- تلفن
- ایمیل (ضعیف ترین)
یک جدول مسابقه ایجاد کنید
روی گزارشها > ایجاد گزارش > تولید جدول تطبیق ابری خصوصی > استفاده از الگو اختیاری کلیک کنید: اگر دادههای شما قبلاً هش نشدهاند، میتوانید تولید جدول تطابق ابری خصوصی با هش را انتخاب کنید.
// Create a new match table using your first party data with this template. /* Parameters: Manually remove all the parameters tagged with @ prefix and replace them with column names from your first party table: * @user_id * @email * @phone * @first_name * @last_name * @country_code * @postal_code And your BigQuery table information: * @my_project: Your BigQuery project where the first party table is. * @my_dataset: Your dataset where the first party table is. * @my_first_party_table: Your first party table. */ CREATE OR REPLACE TABLE adh.updm_match_table AS ( SELECT CAST(@user_id AS BYTES) AS user_id, @email AS email, @phone AS phone, @first_name AS first_name, @last_name AS last_name, @country_code AS country, @postal_code AS zip_code FROM `@my_project.@my_dataset.@my_first_party_table` );
برای ارائه نام مستعار مناسب، نام پارامترها را با نام ستون خود جایگزین کنید.
تنظیم نویز حریم خصوصی را روی «استفاده از بررسیهای تفاوت» تغییر دهید.
برای تعیین فرکانس برای هر چند وقت یکبار که میخواهید جدول مطابقت شما بازخوانی شود، روی تنظیم زمانبندی کلیک کنید. هر اجرا جدول تطابق فعلی را بازنویسی می کند.
داده های منطبق را جستجو کنید
جداول مسابقه را استعلام کنید
وقتی جداول تطبیق شما حاوی داده های کافی برای بررسی حریم خصوصی باشد، شما آماده اجرای پرس و جوها در برابر جداول هستید.
جدول اصلی برای داده های شخص اول (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 پیوند داده شود.
این سند ویژگی تطبیق دادههای ارائهشده توسط کاربر را توصیف میکند و راهنمایی در مورد راهاندازی و استفاده ارائه میدهد.
بررسی اجمالی مسابقه ابر خصوصی
به دست آوردن بینش تبلیغاتی ارزشمند اغلب مستلزم پیوند داده ها از منابع متعدد است. ایجاد راه حل خود برای این مشکل خط لوله داده ها نیازمند سرمایه گذاری زمانی قابل توجه و سرمایه گذاری مهندسی است. Private Cloud Match در Ads Data Hub این فرآیند را با ارائه یک الگوی جستجوی Ads Data Hub برای ایجاد جدول تطبیقی در BigQuery که سپس میتواند در جستارهای Ads Data Hub برای تطبیق دادههای تبلیغات شما با دادههای شخص اول شما استفاده شود، ساده میکند. غنیسازی پرسشهای شما با دادههای شخص اول میتواند تجربیات غنیتری برای مشتری ارائه دهد و در برابر تغییرات ردیابی تبلیغات در سطح صنعت مقاومتر است.
از آنجایی که تطبیق دادههای ارائهشده توسط کاربر فقط در موجودی متعلق به Google و برای کاربرانی که به سیستم وارد شدهاند در دسترس است، تحت تأثیر از بین رفتن آتی کوکیهای شخص ثالث قرار نمیگیرد. از آنجایی که نسبت به دادههای شخص ثالث در برابر تغییرات صنعت مقاومتر است، میتواند بینش غنیتری ارائه دهد که میتواند منجر به تعامل بیشتر مشتری شود.
خلاصه فرآیند
- تنظیم هضم و تطبیق داده ها
- مطمئن شوید که دادههای شخص اول شما در BigQuery قرار دارند و حساب سرویس شما به آن دسترسی خواندنی دارد. به تنظیم انتقال داده مراجعه کنید.
- دریافت و تطبیق داده های شخص اول
- شما داده های شخص اول خود را در مجموعه داده BigQuery خود قالب بندی و آپلود می کنید.
- شما یک درخواست تطبیق داده را با ایجاد یک جستار تحلیلی Private Cloud Match و تنظیم یک زمانبندی آغاز میکنید.
- Google دادهها را بین پروژه شما و دادههای متعلق به Google حاوی شناسه کاربری Google و دادههای ارائهشده توسط کاربر هششده برای ساخت و بهروزرسانی جداول مطابقت میپیوندد.
- به دریافت داده های شخص اول مراجعه کنید
- جستارهای در حال انجام در Ads Data Hub، بر اساس داده های منطبق
- شما پرس و جوها را در مقابل جداول مطابقت اجرا می کنید به همان روشی که پرس و جوهای معمولی را در Ads Data Hub اجرا می کنید. به داده های مطابقت پرس و جو مراجعه کنید.
در مورد الزامات حفظ حریم خصوصی اطلاعات کسب کنید
جمع آوری داده های مشتری
هنگام استفاده از تطابق داده های ارائه شده توسط کاربر، باید داده های شخص اول را آپلود کنید. این میتواند اطلاعاتی باشد که از وبسایتها، برنامهها، فروشگاههای فیزیکی یا هر اطلاعاتی که مشتری مستقیماً با شما به اشتراک گذاشته است جمعآوری کردهاید.
شما باید:
- اطمینان حاصل کنید که خطمشی رازداری شما فاش میکند که دادههای مشتری را با اشخاص ثالث به اشتراک میگذارید تا خدمات را از طرف شما انجام دهند، و در صورت لزوم رضایت شما برای چنین اشتراکگذاریهایی را در صورت لزوم دریافت میکند.
- فقط از API یا رابط تایید شده Google برای آپلود داده های مشتری استفاده کنید
- از تمام قوانین و مقررات قابل اجرا ، از جمله هر کد خود تنظیمی یا صنعتی که ممکن است اعمال شود، پیروی کنید
تایید رضایت شخص اول
برای اطمینان از اینکه میتوانید از دادههای شخص اول خود در Ads Data Hub استفاده کنید، باید تأیید کنید که طبق خطمشی رضایت کاربر اتحادیه اروپا و خطمشی Ads Data Hub رضایت مناسبی برای اشتراکگذاری دادهها از کاربران نهایی EEA با Google دریافت کردهاید. این نیاز برای هر حساب HUB Data ADS اعمال می شود ، و باید هر بار که داده های جدید شخص اول را بارگذاری می کنید به روز شود. هر کاربر می تواند این تأیید را از طرف کل حساب انجام دهد.
توجه داشته باشید که همان قوانین پرس و جو سرویس Google که در مورد نمایش داده های تجزیه و تحلیل اعمال می شود نیز در مورد نمایش داده های UPDM اعمال می شود. به عنوان مثال ، هنگام ایجاد یک جدول مسابقه ، نمی توانید نمایش داده های متقابل را برای کاربران در EEA اجرا کنید.
برای یادگیری نحوه تصدیق رضایت در مرکز داده های تبلیغاتی ، به الزامات رضایت منطقه اقتصادی اروپا مراجعه کنید.
اندازه داده ها
برای محافظت از حریم خصوصی کاربر نهایی ، تطبیق داده های ارائه شده توسط کاربر این شرایط را در مورد اندازه داده های شما اعمال می کند:
- شما باید حداقل 1000 رکورد را در لیست کاربر خود بارگذاری کنید.
- لیست شما نباید از حداکثر تعداد سوابق تجاوز کند. برای کسب اطلاعات در مورد حداکثر حد داده ، به نماینده Google خود دسترسی پیدا کنید.
تنظیم مصرف داده ها
قبل از شروع، مطمئن شوید:
- داده های شخص اول شما باید در BigQuery باشد. اگر یک محیط VPC-SC دارید ، این داده های شخص اول باید در VPC-SC شما قرار داشته باشند.
- حساب سرویس Hub Ads Data شما باید دسترسی به داده های شخص اول را بخواند.
- داده های شخص اول شما باید به طور صحیح فرمت و هشدار داده شود. برای اطلاعات بیشتر به بخش بعدی مراجعه کنید.
فراتر از آن ، Cloud Match Private هیچ سوار شدن دیگری ندارد. اگر می توانید یک پرس و جو تجزیه و تحلیل را اجرا کنید ، می توانید یک پرس و جو مسابقه خصوصی را اجرا کنید.
داده های شخص اول را درگیر کرده و مطابقت دهید
داده های قالب برای ورودی
داده های شما باید به این الزامات قالب بندی رعایت شوند تا به درستی مطابقت داشته باشند:
- در جایی که در توضیحات قسمت ورودی زیر مشخص شده است ، باید با استفاده از هشدار Sha256 بارگذاری کنید.
- زمینه های ورودی باید به عنوان رشته ها فرمت شوند. به عنوان مثال ، اگر از تابع Hash Sha256 BigQuery با عملکرد رمزگذاری Base64 ( to_base64 ) استفاده می کنید ، از تحول زیر استفاده کنید:
TO_BASE64(SHA256(user_data))
. - UPDM از رمزگذاری Base64 پشتیبانی می کند. شما باید رمزگذاری داده های شخص اول خود را با رمزگشایی مورد استفاده در پرس و جو توپی داده های تبلیغاتی خود تراز کنید. اگر رمزگذاری داده های شخص اول خود را تغییر دهید ، باید پرس و جو هاب داده های تبلیغاتی خود را به روز کنید تا از همان پایگاه رمزگشایی شود. مثالهای زیر از رمزگذاری Base64 استفاده می کنند.
شناسه کاربری
- متن ساده
- هش: هیچکدام
ایمیل
- آب های پیشرو و پیشرو را حذف کنید
- حروف کوچک همه نویسه ها
- نام دامنه را برای همه آدرس های ایمیل مانند gmail.com یا hotmail.co.jp درج کنید
- لهجه ها را حذف کنید - به عنوان مثال ، è ، é ، ê یا ë را به E تغییر دهید
- تمام دوره ها را حذف کنید (.) که قبل از نام دامنه در
gmail.com
و آدرس های ایمیلgooglemail.com
است - HASHING: BASE64 رمزگذاری شده SHA256
معتبر: TO_BASE64(SHA256("jeffersonloveshiking@gmail.com"))
نامعتبر: TO_BASE64(SHA256(" Jéfferson.Lôves.Hiking@gmail.com "))
تلفن
- فضای خالی را بردارید
- قالب در قالب E.164 - مثال ایالات متحده: +14155552671 ، مثال انگلیس: +442071838750
- تمام شخصیت های خاص را به جز "+" قبل از کد کشور حذف کنید
- HASHING: BASE64 رمزگذاری شده SHA256
معتبر: TO_BASE64(SHA256("+18005550101"))
نامعتبر: TO_BASE64(SHA256("(800) 555-0101"))
نام کوچک
- فضای خالی را بردارید
- حروف کوچک همه نویسه ها
- همه پیشوند ها را حذف کنید-به عنوان مثال خانم ، آقای ، خانم ، دکتر
- لهجه ها را حذف نکنید - به عنوان مثال ، è ، é ، ê یا ë
- HASHING: BASE64 رمزگذاری شده SHA256
معتبر: TO_BASE64(SHA256("daní"))
نامعتبر: TO_BASE64(SHA256("Mrs. Daní"))
نام خانوادگی
- فضای خالی را بردارید
- حروف کوچک همه نویسه ها
- همه پسوندها را حذف کنید-به عنوان مثال جونیور ، Sr. ، 2 ، 3 ، II ، III ، PhD ، MD
- لهجه ها را حذف نکنید - به عنوان مثال ، è ، é ، ê یا ë
- HASHING: BASE64 رمزگذاری شده SHA256
معتبر: 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
- برای همه کشورهای دیگر:
- هیچ قالب بندی لازم نیست (نیازی به کوچک کردن یا حذف فضاها و کاراکترهای خاص نیست)
- پسوند کد پستی را کنار بگذارید
- هش: هیچکدام
اعتبار سنجی هش و رمزگذاری داده ها
می توانید از اسکریپت های اعتبار سنجی هش زیر استفاده کنید تا اطمینان حاصل شود که داده های شما به درستی فرمت شده است.
جاوا اسکریپت
/**
* @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()
پایتون
"""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`;
به کلیدها بپیوندید
برخی از ترکیبات داده های ارائه شده توسط کاربر از سایر موارد قوی تر است. در زیر لیستی از ترکیبات مختلف داده های ارائه شده توسط کاربر ، که با قدرت نسبی رتبه بندی شده اند ، ارائه شده است. اگر از یک آدرس استفاده می کنید ، باید شامل موارد زیر باشد: نام ، نام خانوادگی ، کشور و کد پستی.
- ایمیل ، تلفن ، آدرس (قوی ترین)
- تلفن ، آدرس
- ایمیل ، آدرس
- ایمیل، تلفن
- آدرس
- تلفن
- ایمیل (ضعیف ترین)
یک جدول مسابقه ایجاد کنید
بر روی گزارش ها> ایجاد گزارش> تولید جدول برنامه Cloud Cloud> استفاده کنید> استفاده از الگوی اختیاری: اگر داده های شما از قبل هشدار داده نشده است ، می توانید تولید جدول Cloud Match Private را با هشدار انتخاب کنید.
// Create a new match table using your first party data with this template. /* Parameters: Manually remove all the parameters tagged with @ prefix and replace them with column names from your first party table: * @user_id * @email * @phone * @first_name * @last_name * @country_code * @postal_code And your BigQuery table information: * @my_project: Your BigQuery project where the first party table is. * @my_dataset: Your dataset where the first party table is. * @my_first_party_table: Your first party table. */ CREATE OR REPLACE TABLE adh.updm_match_table AS ( SELECT CAST(@user_id AS BYTES) AS user_id, @email AS email, @phone AS phone, @first_name AS first_name, @last_name AS last_name, @country_code AS country, @postal_code AS zip_code FROM `@my_project.@my_dataset.@my_first_party_table` );
نام پارامترها را با نام ستون خود جایگزین کنید تا از این طریق مناسب باشد.
تنظیمات سر و صدای حریم خصوصی را به "استفاده از چک های مختلف" تغییر دهید.
برای تنظیم فرکانس برای چند بار که می خواهید جدول مسابقه خود را تازه کنید ، روی تنظیم برنامه کلیک کنید. هر اجرا جدول مسابقه فعلی را رونویسی می کند.
داده های مطابق با پرس و جو
جداول مسابقه را پرس و جو کنید
هنگامی که جداول مسابقه شما حاوی داده های کافی برای برآورده کردن چک های حریم خصوصی است ، شما آماده اجرای نمایش داده شدگان در برابر جداول هستید.
جدول اصلی برای داده های شخص اول (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 مراجعه کنید.