Pencocokan data yang disediakan pengguna (UPDM) menggabungkan data pihak pertama yang telah Anda kumpulkan tentang pengguna—seperti informasi dari situs, aplikasi, atau toko fisik—dengan aktivitas login pengguna tersebut di semua data iklan Google, termasuk data yang dimiliki & dikelola Google. Hal ini mencakup data yang dibeli melalui produk Google Marketing Platform (GMP), misalnya, YouTube yang dibeli menggunakan Display & Video 360. Produk GMP lain yang tidak dimiliki & dikelola oleh Google tidak didukung.
Agar memenuhi syarat untuk pencocokan data yang disediakan pengguna, peristiwa iklan harus ditautkan ke pengguna yang login di data iklan Google.
Dokumen ini menjelaskan fitur pencocokan data yang disediakan pengguna, serta memberikan panduan tentang penyiapan dan penggunaan.
Ringkasan Pencocokan Cloud Pribadi
Untuk mendapatkan insight iklan yang berharga, Anda sering kali harus menggabungkan data dari berbagai sumber. Membangun solusi Anda sendiri untuk masalah pipeline data ini memerlukan investasi waktu dan investasi engineering yang signifikan. Cloud Pribadi Match di Ads Data Hub menyederhanakan proses ini dengan menyediakan template kueri Ads Data Hub untuk membuat tabel pencocokan di BigQuery yang kemudian dapat digunakan dalam kueri Ads Data Hub untuk mencocokkan data iklan dengan data pihak pertama Anda. Memperkaya kueri Anda dengan data pihak pertama dapat memberikan pengalaman pelanggan yang lebih kaya, dan lebih tahan terhadap perubahan pelacakan iklan di seluruh industri.
Karena pencocokan data yang disediakan pengguna hanya tersedia di inventaris yang dimiliki dan dikelola oleh Google untuk pengguna yang login, fitur ini tidak akan terpengaruh oleh penghentian cookie pihak ketiga yang akan datang. Karena lebih tahan terhadap perubahan industri daripada data pihak ketiga, data pihak pertama dapat memberikan insight yang lebih beragam, yang dapat menghasilkan engagement pelanggan yang lebih tinggi.
Ringkasan proses
- Penyiapan penyerapan dan pencocokan data
- Anda Pastikan data pihak pertama Anda berada di BigQuery dan akun layanan Anda memiliki akses baca ke data tersebut. Lihat Menyiapkan penyerapan data.
- Penyerapan dan pencocokan data pihak pertama
- Anda memformat dan mengupload data pihak pertama ke set data BigQuery.
- Anda memulai permintaan pencocokan data dengan membuat Kueri analisis cloud pribadi Match dan menetapkan jadwal.
- Google menggabungkan data antara project Anda dan data milik Google yang berisi ID pengguna Google dan data yang disediakan pengguna yang di-hash untuk membuat dan memperbarui tabel kecocokan.
- Lihat Menyerap data pihak pertama
- Kueri berkelanjutan di Ads Data Hub, berdasarkan data yang cocok
- Anda menjalankan kueri terhadap tabel pencocokan dengan cara yang sama seperti Anda menjalankan kueri reguler di Ads Data Hub. Lihat Membuat kueri data yang cocok.
Mempelajari persyaratan privasi
Mengumpulkan data pelanggan
Saat menggunakan pencocokan data yang disediakan pengguna, Anda harus mengupload data pihak pertama. Informasi ini dapat berupa informasi yang Anda kumpulkan dari situs, aplikasi, toko fisik, atau informasi apa pun yang dibagikan pelanggan kepada Anda secara langsung.
Anda harus:
- Pastikan kebijakan privasi Anda menyebutkan bahwa Anda membagikan data pelanggan kepada pihak ketiga untuk menyediakan layanan atas nama Anda, dan bahwa Anda memperoleh izin untuk pembagian tersebut jika diwajibkan oleh hukum
- Hanya menggunakan API atau antarmuka yang disetujui Google untuk mengupload data pelanggan
- Mematuhi semua hukum dan peraturan yang berlaku, termasuk peraturan mandiri atau aturan industri yang mungkin berlaku
Konfirmasi izin pihak pertama
Untuk memastikan Anda dapat menggunakan data pihak pertama di Ads Data Hub, Anda harus mengonfirmasi bahwa Anda telah memperoleh izin yang tepat untuk membagikan data dari pengguna akhir EEA kepada Google sesuai dengan Kebijakan izin pengguna Uni Eropa dan kebijakan Ads Data Hub. Persyaratan ini berlaku untuk setiap akun Ads Data Hub, dan harus diperbarui setiap kali Anda mengupload data pihak pertama baru. Setiap pengguna dapat membuat pernyataan ini atas nama seluruh akun.
Perhatikan bahwa aturan kueri layanan Google yang sama yang berlaku untuk kueri analisis juga berlaku untuk kueri UPDM. Misalnya, Anda tidak dapat menjalankan kueri lintas layanan pada pengguna di EEA saat membuat tabel pencocokan.
Untuk mempelajari cara menyatakan izin di Ads Data Hub, lihat Persyaratan izin untuk Wilayah Ekonomi Eropa.
Ukuran data
Untuk melindungi privasi pengguna akhir, pencocokan data yang disediakan pengguna menerapkan persyaratan berikut terkait ukuran data Anda:
- Anda harus mengupload minimal 1.000 data dalam daftar pengguna.
Menyiapkan penyerapan data
Sebelum memulai, pastikan:
- Data pihak pertama Anda harus ada di BigQuery. Jika Anda memiliki perimeter VPC-SC, data pihak pertama ini harus berada dalam VPC-SC Anda.
- Akun layanan Ads Data Hub Anda harus memiliki akses baca ke data pihak pertama.
- Data pihak pertama Anda harus diformat dan di-hash dengan benar. Lihat bagian berikutnya untuk mengetahui detail lebih lanjut.
Selain itu, Private Cloud Match tidak memiliki orientasi tambahan. Jika Anda dapat menjalankan kueri analisis, Anda dapat menjalankan kueri Private Cloud Match.
Menyerap dan mencocokkan data pihak pertama
Persyaratan izin dan koneksi sumber
Ads Data Hub Connections menggunakan akun layanan yang ditampilkan di bagian Settings >
Details > Service account (biasanya
service-<number>@gcp-sa-adsdatahub.iam.gserviceaccount.com). Berikan peran
berikut:
- Sumber BigQuery:
roles/bigquery.dataViewer(BigQuery Data Viewer) di set data atau tabel sumber. - Sumber Cloud Storage:
roles/storage.objectViewer(Storage Object Viewer) di bucket atau objek sumber. - Tujuan impor data pihak pertama:
roles/bigquery.dataEditor(BigQuery Data Editor) di set data tujuan, jika tabel tidak ada dalam set data default Anda.
Persyaratan kolom dan jenis data
- Pencocokan data yang disediakan pengguna (UPDM):
- Petakan
user_idditambah setidaknya satu kolom PII (email,phone, atau alamat lengkap:first_name,last_name,country,zip_code). user_id,country, danzip_code:STRINGteks biasa (tidak di-hash). Untuk sumber BigQuery, kolom ini harus sudah berupaSTRING; jenis lainnya (misalnya,INT64) akan gagal saat koneksi dibuat. Connections mentransmisikanuser_idkeBYTESdi tabel kecocokan.countryharus berupa kode ISO 3166-1 alpha-2 yang terdiri dari 2 huruf.email,phone,first_name, danlast_name:HASH—harus sudah di-hash SHA-256 dan dienkode Base64 (nilai SHA-256 hex 64 karakter juga diterima). Connections tidak melakukan hashing pada data. Nilai teks biasa tidak ditangkap saat koneksi dibuat; setiap operasi kemudian gagal dengan... must be encoded using TO_BASE64(SHA256(...)).- Koneksi pencocokan data yang disediakan pengguna tidak memiliki tabel tujuan. Semua kueri tersebut dalam akun, dan kueri UPDM yang dijalankan secara manual, menulis ke data pencocokan yang sama, sehingga setiap operasi akan menggantikan operasi sebelumnya. Satu koneksi UPDM per akun sudah cukup.
- Lihat Memformat data untuk input untuk mengetahui aturan per kolom.
- Petakan
- Impor data pihak pertama:
- Hanya gunakan jenis data yang ditawarkan di UI:
INTEGER,STRING,HASH,DOUBLE,DATE, danTIMESTAMP. Jenis BigQuery lainnya tidak didukung. - Sumber BigQuery: Jenis yang dipetakan tidak diterapkan; setiap kolom tujuan mempertahankan jenis kolom sumbernya.
- Sumber Cloud Storage: Kolom dibaca sebagai
STRINGdan ditransmisikan ke jenis yang dipetakan. Nilai yang tidak dapat ditransmisikan menjadiNULLtanpa menggagalkan operasi. - Setiap operasi akan menggantikan seluruh tabel tujuan; bukan menambahkan. Jika sumber tidak memiliki baris, tujuan akan menjadi kosong. Jangan gunakan tabel sumber, atau tabel yang datanya perlu Anda simpan, sebagai tujuan.
- Hanya gunakan jenis data yang ditawarkan di UI:
Persyaratan kolom CSV Cloud Storage
- Sertakan baris header. Baris pertama dilewati; nama kolomnya tidak digunakan.
- File harus berisi kolom sumber yang dipetakan, tidak lebih dan tidak kurang. Kolom tambahan akan menggagalkan proses.
- Impor data pihak pertama: Kolom harus dalam urutan yang sama dengan pemetaan kolom.
- Pencocokan data yang disediakan pengguna: Kolom harus dalam urutan ini, dengan hanya mempertahankan kolom yang Anda petakan:
user_id,email,phone,first_name,last_name,country,zip_code. Urutan baris pemetaan tidak menjadi masalah. - Urutan kolom yang berbeda tidak terdeteksi: nilai dimuat ke kolom yang salah (atau rasio kecocokan menurun) tanpa error.
Sumber data yang didukung dan batas koneksi
- Sumber data: Hanya sumber BigQuery dan Cloud Storage yang didukung.
- Nama tabel BigQuery: Tabel BigQuery sumber dan tujuan memerlukan nama
project.dataset.tablelengkap. - Jalur file Cloud Storage: Berikan satu URI file (seperti
gs://bucket/path/file.csv). Jalur karakter pengganti dengan*atau?tidak didukung. - Nama koneksi: Setiap koneksi di akun harus memiliki nama yang unik.
Memformat data untuk input
Data Anda harus mematuhi persyaratan pemformatan berikut agar dapat dicocokkan dengan benar:
- Jika ditunjukkan dalam deskripsi kolom input berikut, Anda harus mengupload menggunakan hashing SHA256.
- UPDM mendukung encoding Base64. Lihat TO_BASE64.
- Kolom input harus diformat sebagai string. Misalnya, jika Anda menggunakan
fungsi hash SHA256 BigQuery,
gunakan transformasi berikut:
TO_BASE64(SHA256(user_data)).
ID Pengguna
- Jenis data:
BYTES - Hashing: Tidak ada
- Menghapus spasi kosong di awal dan akhir
- Semua karakter harus berupa huruf kecil
- Sertakan nama domain untuk semua alamat email, seperti gmail.com atau hotmail.co.jp
- Hapus aksen—misalnya, ubah è, é, ê, atau ë menjadi e
- Hapus semua titik (.) yang mendahului nama domain di alamat email
gmail.comdangooglemail.com - Hashing: SHA256 berenkode Base64
Valid: TO_BASE64(SHA256("jeffersonloveshiking@gmail.com"))
Tidak valid: TO_BASE64(SHA256("JéffersonLôvesHiking@gmail.com"))
Telepon
- Menghapus spasi kosong
- Format dalam format E.164—misalnya, contoh AS: +14155552671, contoh Inggris Raya: +442071838750
- Hapus semua karakter khusus kecuali "+" sebelum kode negara
- Hashing: SHA256 berenkode Base64
Valid: TO_BASE64(SHA256("+18005550101"))
Tidak valid: TO_BASE64(SHA256("(800) 555-0101"))
Nama depan
- Menghapus spasi kosong
- Semua karakter harus berupa huruf kecil
- Hapus semua awalan, misalnya Ibu, Tn., Nn., Dr.
- Jangan menghapus aksen—misalnya, è, é, ê, atau ë
- Hashing: SHA256 berenkode Base64
Valid: TO_BASE64(SHA256("daní"))
Tidak valid: TO_BASE64(SHA256("Daní"))
Nama belakang
- Menghapus spasi kosong
- Semua karakter harus berupa huruf kecil
- Hapus semua akhiran, misalnya Jr., Sr., 2nd, 3rd, II, III, PHD, MD
- Jangan menghapus aksen—misalnya, è, é, ê, atau ë
- Hashing: SHA256 berenkode Base64
Valid: TO_BASE64(SHA256("délacruz"))
Tidak valid: TO_BASE64(SHA256("dé la Cruz, Jr."))
Negara
- Sertakan kode negara meskipun semua data pelanggan Anda berasal dari negara yang sama
- Jangan melakukan hashing terhadap data negara.
- Gunakan kode negara ISO 3166-1 alpha-2
- Hashing: Tidak ada
Valid: US
Tidak valid: United States of America atau USA
Kode pos
- Jangan melakukan hashing pada data kode pos
- Kode zip/pos AS dan internasional diizinkan
- Untuk Amerika Serikat:
- Kode 5 digit diizinkan—misalnya, 94043
- 5 digit yang diikuti dengan ekstensi 4 digit juga diizinkan—misalnya, 94043-1351 atau 940431351
- Untuk semua negara lain:
- Tidak perlu pemformatan (Tidak perlu menggunakan huruf kecil, atau menghapus spasi dan karakter khusus)
- Jangan sertakan ekstensi kode pos
- Hashing: Tidak ada
Validasi hash dan encoding data
Anda dapat menggunakan skrip validasi hash berikut untuk memastikan data Anda diformat dengan benar.
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")
}
Java
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`;
Kunci penghubung
Beberapa kombinasi data yang disediakan pengguna lebih kuat daripada yang lain. Berikut adalah daftar berbagai kombinasi data yang disediakan pengguna, yang diurutkan berdasarkan kekuatan relatif. Jika Anda menggunakan alamat, Anda harus menyertakan: Nama depan, Nama belakang, Negara, dan Kode pos.
- Email, Telepon, Alamat (paling kuat)
- Telepon, Alamat
- Email, Alamat
- Email, Telepon
- Alamat
- Telepon
- Email (paling lemah)
Membuat tabel kecocokan
- Klik add Create > Report.
- Pilih template Private cloud match table generation. Opsional: Anda dapat memilih Private cloud match table generation (with hashing) jika data Anda belum di-hash.
- Klik Edit query, lalu ganti nama parameter dengan nama kolom Anda untuk memberikan alias yang tepat.
- Klik Set schedule untuk menetapkan frekuensi seberapa sering Anda ingin tabel kecocokan diperbarui. Setiap operasi akan menimpa tabel kecocokan saat ini.
Memigrasikan koneksi yang ada
Koneksi yang ada di tab Koneksi akan dipindahkan ke pengalaman Koneksi yang diperbarui dan dibuat langsung di Ads Data Hub. Koneksi yang diperbarui
membaca sumber dan menulis tujuan menggunakan akun layanan yang ditampilkan di bagian
Settings > Details > Service account (biasanya
service-<number>@gcp-sa-adsdatahub.iam.gserviceaccount.com), bukan
akun layanan Data Fusion, Dataproc, dan UPDM lama.
Selesaikan item tindakan ini sebelum koneksi Anda dipindahkan:
- Memberikan izin akun layanan: Berikan akun layanan yang ditampilkan di bagian
Settings > Details > Service account (biasanya
service-<number>@gcp-sa-adsdatahub.iam.gserviceaccount.com) peran sumber dan tujuan yang diperlukan (roles/bigquery.dataViewer,roles/storage.objectViewer, danroles/bigquery.dataEditordi set data tujuan non-default). Koneksi dengan sumber yang tidak dapat dibaca, dihapus, atau diubah mungkin masih dapat dipindahkan (terutama sumber Cloud Storage, yang tidak divalidasi pada saat pemindahan), tetapi prosesnya akan gagal hingga Anda memberikan akses atau memperbaiki sumbernya. - Mengonversi koneksi yang tidak didukung: Koneksi dengan konfigurasi berikut tidak akan dimigrasikan. Konversikan ke koneksi BigQuery atau Cloud Storage yang didukung:
- Sumber data lainnya (Amazon S3, Snowflake, MySQL, PostgreSQL, Amazon Redshift, sFTP, atau Salesforce): Tempatkan data di BigQuery atau Cloud Storage terlebih dahulu, lalu buat koneksi BigQuery atau Cloud Storage.
- Pemetaan kolom atau jenis data yang tidak didukung: Perbarui atau buat ulang koneksi untuk memenuhi persyaratan kolom dan jenis data.
- Jalur karakter pengganti Cloud Storage (
*atau?): Ganti URI karakter pengganti dengan URI file tunggal atau muat file ke BigQuery terlebih dahulu. - Nama koneksi duplikat: Ganti nama atau hapus koneksi duplikat sehingga setiap koneksi di akun memiliki nama yang unik.
- Hapus koneksi yang tidak digunakan: Hapus koneksi usang yang tidak lagi Anda perlukan.
Data yang cocok dengan kueri
Membuat kueri tabel kecocokan
Jika tabel kecocokan Anda berisi cukup data untuk memenuhi pemeriksaan privasi, Anda siap menjalankan kueri terhadap tabel tersebut.
Tabel asli untuk data pihak pertama (1PD) diwakili oleh my_data.
Data ini mencakup Informasi Identitas Pribadi (PII) dan data non-PII.
Menggunakan tabel asli dapat meningkatkan kualitas laporan Anda dengan lebih banyak insight, karena tabel ini
mewakili semua data 1PD dalam cakupan, jika dibandingkan dengan tabel kecocokan.
Setiap tabel dalam skema Ads Data Hub yang berisi kolom user_id disertai dengan tabel pencocokan. Misalnya, untuk tabel adh.google_ads_impressions, Ads Data Hub juga membuat tabel pencocokan bernama adh.google_ads_impressions_updm yang berisi ID pengguna Anda.
Tabel pencocokan terpisah dibuat untuk tabel jaringan yang diisolasi kebijakan. Misalnya, untuk tabel adh.google_ads_impressions_policy_isolated_network, Ads Data Hub juga membuat tabel pencocokan yang disebut adh.google_ads_impressions_policy_isolated_network_updm yang berisi ID pengguna Anda.
Tabel ini berisi subset pengguna yang tersedia di tabel asli,
yang memiliki kecocokan di user_id. Misalnya, jika tabel asli
berisi data untuk Pengguna A dan Pengguna B, tetapi hanya Pengguna A yang cocok, Pengguna B
tidak akan ada dalam tabel kecocokan.
Tabel pencocokan berisi kolom tambahan yang disebut customer_data_user_id, yang menyimpan ID pengguna sebagai BYTES.
Penting untuk mempertimbangkan jenis kolom saat menulis kueri. Operator perbandingan SQL mengharapkan literal yang Anda bandingkan memiliki jenis yang sama. Bergantung pada cara user_id disimpan dalam tabel data pihak pertama, Anda mungkin perlu mengenkode nilai dalam tabel sebelum mencocokkan data.
Anda harus mentransmisikan kunci gabungan ke BYTES agar pencocokan berhasil:
JOIN ON
adh.google_ads_impressions_updm.customer_data_user_id = CAST(my_data.user_id AS BYTES)
Selain itu, perbandingan string di SQL peka terhadap kapitalisasi, jadi Anda mungkin perlu mengenkode string di kedua sisi perbandingan untuk memastikan bahwa string tersebut dapat dibandingkan secara akurat.
Sampel kueri
Menghitung pengguna yang cocok
Kueri ini menghitung jumlah pengguna yang cocok dalam tabel tayangan iklan Google Ads Anda.
/* Count matched users in Google Ads impressions table */
SELECT COUNT(DISTINCT user_id)
FROM adh.google_ads_impressions_updm
Menghitung rasio kecocokan
Tidak semua pengguna memenuhi syarat untuk pencocokan. Misalnya, pengguna yang logout,
anak-anak, dan pengguna tanpa izin cookie tidak dicocokkan melalui UPDM. Anda dapat menggunakan kolom is_updm_eligible untuk menghitung rasio kecocokan UPDM yang lebih akurat. Catatan:
Kolom is_updm_eligible tersedia mulai 1 Oktober 2024. Anda tidak dapat menggunakan kolom ini untuk menghitung rasio kecocokan sebelum tanggal tersebut.
/* 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)
Menggabungkan data pihak pertama dan Google Ads
Kueri ini menunjukkan cara menggabungkan data pihak pertama dengan data 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
FAQ UPDM
Untuk mengetahui daftar FAQ terkait UPDM, lihat FAQ UPDM.