उपयोगकर्ता से मिले डेटा को मैच कराने की सुविधा (यूपीडीएम), किसी उपयोगकर्ता के पहले पक्ष (ग्राहक) के इकट्ठा किए गए डेटा को Google के पास मौजूद विज्ञापन डेटा में दिए गए, उसी उपयोगकर्ता की साइन-इन करने की गतिविधि के डेटा से जोड़ती है. इस डेटा में वेबसाइटों, ऐप्लिकेशन या दुकानों से जुड़ी जानकारी शामिल होती है. इसमें Google के मालिकाना हक वाला और Google के ऑपरेट किया जाने वाला डेटा भी शामिल होता है. इसमें Google Marketing Platform (GMP) के प्रॉडक्ट से खरीदा गया डेटा शामिल है. उदाहरण के लिए, Display & Video 360 का इस्तेमाल करके खरीदा गया YouTube डेटा. GMP के ऐसे अन्य प्रॉडक्ट जिन पर Google का मालिकाना हक और कंट्रोल नहीं है उनका इस्तेमाल नहीं किया जा सकता.
उपयोगकर्ता से मिले डेटा को मैच कराने की सुविधा का इस्तेमाल करने के लिए यह ज़रूरी है कि विज्ञापन इवेंट, Google के पास मौजूद विज्ञापन डेटा में दिए गए, साइन इन किए हुए उपयोगकर्ता के डेटा से जुड़ा हो.
इस दस्तावेज़ में, उपयोगकर्ता से मिले डेटा को मैच करने की सुविधा के बारे में बताया गया है. साथ ही, इसे सेट अप और इस्तेमाल करने के बारे में दिशा-निर्देश भी दिए गए हैं.
प्राइवेट क्लाउड मैच की खास जानकारी
विज्ञापन से जुड़ी अहम जानकारी पाने के लिए, अक्सर कई सोर्स से डेटा इकट्ठा करना पड़ता है. डेटा पाइपलाइन की इस समस्या को हल करने के लिए, आपको ज़्यादा समय और इंजीनियरिंग में ज़्यादा निवेश करना होगा. Ads Data Hub में निजी क्लाउड मैच की सुविधा, इस प्रोसेस को आसान बनाती है. इसके लिए, Ads Data Hub क्वेरी टेंप्लेट उपलब्ध कराया जाता है. इस टेंप्लेट का इस्तेमाल करके, BigQuery में मैच टेबल बनाई जा सकती है. इसके बाद, इस टेबल का इस्तेमाल Ads Data Hub की क्वेरी में किया जा सकता है, ताकि आपके विज्ञापन डेटा को पहले पक्ष (ग्राहक) के डेटा से मैच किया जा सके. अपनी क्वेरी को पहले पक्ष के डेटा से बेहतर बनाने पर, ग्राहकों को बेहतर अनुभव मिल सकता है. साथ ही, यह इंडस्ट्री में विज्ञापन ट्रैकिंग से जुड़े बदलावों के हिसाब से ज़्यादा बेहतर तरीके से काम करता है.
उपयोगकर्ता से मिले डेटा को मैच कराने की सुविधा सिर्फ़ Google पर साइन-इन करने वाले उपयोगकर्ताओं को मिलती है. साथ ही, सिर्फ़ उस इन्वेंट्री के लिए मिलती है जिसका मालिक और जिसे चलाने वाला Google है. इसलिए, तीसरे पक्ष की कुकी के काम न करने से इस सुविधा पर कोई असर नहीं पड़ता. इंडस्ट्री में हुए बदलावों का असर, तीसरे पक्ष से मिले डेटा की तुलना में इस सुविधा पर कम पड़ता है. इसलिए, इससे ज़्यादा अहम जानकारी मिल सकती है. इससे ग्राहकों के जुड़ाव में बढ़ोतरी हो सकती है.
प्रोसेस की खास जानकारी
- डेटा डालने और मैच करने की सुविधा सेट अप करना
- पक्का करें कि आपका पहले पक्ष का डेटा, BigQuery में मौजूद हो और आपके सेवा खाते के पास उसका रीड ऐक्सेस हो. डेटा डालने की सुविधा सेट अप करना लेख पढ़ें.
- पहले पक्ष (ग्राहक) का डेटा डालना और मैच करना
- आप अपने पहले पक्ष के डेटा को फ़ॉर्मैट करके, उसे अपने BigQuery डेटासेट में अपलोड करते हैं.
- आप, डेटा मैच करने का अनुरोध शुरू करते हैं. इसके लिए, आपको निजी क्लाउड मैच विश्लेषण क्वेरी बनानी होगी और शेड्यूल सेट करना होगा.
- Google, आपके प्रोजेक्ट और Google के मालिकाना हक वाले डेटा को आपस में जोड़ता है. इसमें Google का उपयोगकर्ता आईडी और उपयोगकर्ता से मिले हैश किए गए डेटा को शामिल किया जाता है. ऐसा, मैच टेबल बनाने और अपडेट करने के लिए किया जाता है.
- पहले पक्ष (ग्राहक) का डेटा डालना देखें
- मैच किए गए डेटा के आधार पर, Ads Data Hub में चल रही क्वेरी
- आप मैच टेबल के लिए क्वेरी उसी तरह चलाते हैं जिस तरह Ads Data Hub में सामान्य क्वेरी चलाई जाती हैं. मैच होने वाला डेटा क्वेरी करें देखें.
निजता से जुड़ी ज़रूरी शर्तों के बारे में जानें
ग्राहक का डेटा इकट्ठा करना
उपयोगकर्ता से मिले डेटा को मैच कराने की सुविधा का इस्तेमाल करते समय, आपको पहले पक्ष (ग्राहक) का डेटा अपलोड करना होगा. यह जानकारी आपकी वेबसाइटों, ऐप्लिकेशन, दुकानों या ऐसी जगहों से इकट्ठा की गई हो जहां ग्राहक आपके कारोबार से सीधे तौर पर इंटरैक्ट करते हैं. इसके अलावा, यह ऐसी जानकारी भी हो सकती है जिसे ग्राहक ने सीधे आपके साथ शेयर किया हो.
इसलिए, आपको ये करने होंगे:
- पक्का करें कि आपकी निजता नीति में यह बताया गया हो कि ग्राहक का डेटा, तीसरे पक्ष की उन कंपनियों के साथ शेयर किया जाता है जो आपकी ओर से सेवाएं देती हैं. साथ ही, यह भी पक्का करें कि जहां भी कानूनी रूप से ज़रूरी हो वहां आपने डेटा शेयर करने के लिए ग्राहक की सहमति ली हो
- ग्राहक से जुड़ा डेटा अपलोड करने के लिए, सिर्फ़ Google की मंज़ूरी वाले एपीआई या इंटरफ़ेस का इस्तेमाल करें
- लागू होने वाले सभी नियमों और कानूनों का पालन करें. इनमें, खुद तय किए गए या इंडस्ट्री से जुड़े नियम भी शामिल हैं
पहले पक्ष की सहमति की पुष्टि
यह पक्का करने के लिए कि आपके पास Ads Data Hub में पहले पक्ष (ग्राहक) के डेटा का इस्तेमाल करने का विकल्प है, आपको पुष्टि करनी होगी कि आपने ईयू उपयोगकर्ता की सहमति से जुड़ी नीति और Ads Data Hub की नीति के मुताबिक, ईईए के असली उपयोगकर्ताओं का डेटा Google के साथ शेयर करने के लिए सही सहमति ली है. यह ज़रूरी शर्त, हर Ads Data Hub खाते पर लागू होती है. साथ ही, हर बार पहले पक्ष (ग्राहक) का नया डेटा अपलोड करने पर, इसे अपडेट करना ज़रूरी है. पूरे खाते की ओर से, कोई भी उपयोगकर्ता यह स्वीकार कर सकता है.
ध्यान दें कि विश्लेषण क्वेरी पर लागू होने वाले Google की सेवा की क्वेरी के नियम, UPDM क्वेरी पर भी लागू होते हैं. उदाहरण के लिए, मैच टेबल बनाते समय, ईईए में रहने वाले उपयोगकर्ताओं के लिए, अलग-अलग सेवाओं के लिए क्वेरी नहीं चलाई जा सकतीं.
Ads Data Hub में सहमति स्वीकार करने का तरीका जानने के लिए, यूरोपियन इकनॉमिक एरिया के लिए, सहमति से जुड़ी ज़रूरी शर्तें लेख पढ़ें.
डेटा का साइज़
असली उपयोगकर्ता की निजता को सुरक्षित रखने के लिए, उपयोगकर्ता से मिले डेटा की मैचिंग की सुविधा, आपके डेटा के साइज़ के लिए इन ज़रूरी शर्तों को लागू करती है:
- आपको उपयोगकर्ता सूची में कम से कम 1,000 रिकॉर्ड अपलोड करने होंगे.
- आपकी सूची में रिकॉर्ड की ज़्यादा से ज़्यादा संख्या नहीं होनी चाहिए. डेटा की ज़्यादा से ज़्यादा सीमा के बारे में जानने के लिए, अपने Google प्रतिनिधि से संपर्क करें.
डेटा डालने की सुविधा सेट अप करना
शुरू करने से पहले, पक्का करें कि:
- आपका फ़र्स्ट पार्टी डेटा, BigQuery में होना चाहिए. अगर आपके पास VPC-SC परिधि है, तो पहले पक्ष का यह डेटा आपके VPC-SC में होना चाहिए.
- आपके Ads Data Hub सेवा खाते के पास, पहले पक्ष (ग्राहक) के डेटा को पढ़ने का ऐक्सेस होना चाहिए.
- आपके पहले पक्ष का डेटा सही तरीके से फ़ॉर्मैट और हैश किया जाना चाहिए. ज़्यादा जानकारी के लिए, अगला सेक्शन देखें.
इसके अलावा, प्राइवेट क्लाउड मैच के लिए, ऑनबोर्डिंग की कोई अन्य प्रक्रिया नहीं है. अगर आपके पास विश्लेषण क्वेरी चलाने का विकल्प है, तो आपके पास निजी क्लाउड मैच क्वेरी चलाने का विकल्प भी है.
पहले पक्ष (ग्राहक) का डेटा डालना और मैच करना
इनपुट के लिए डेटा को फ़ॉर्मैट करना
डेटा को सही तरीके से मैच करने के लिए, यह ज़रूरी है कि आपका डेटा इन फ़ॉर्मैटिंग की ज़रूरी शर्तों के मुताबिक हो:
- इनपुट फ़ील्ड की जानकारी में जहां बताया गया है वहां आपको SHA256 हैशिंग का इस्तेमाल करके अपलोड करना होगा.
- इनपुट फ़ील्ड को स्ट्रिंग के तौर पर फ़ॉर्मैट किया जाना चाहिए. उदाहरण के लिए, अगर BigQuery के SHA256 हैश फ़ंक्शन का इस्तेमाल, 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"))
नाम
- व्हाइटस्पेस हटाना
- सभी वर्ण छोटे अक्षरों में लिखें
- सभी प्रीफ़िक्स हटाएं. उदाहरण के लिए, श्रीमती, श्री, सुश्री, डॉ.
- उच्चारण चिह्न न हटाएं—उदाहरण के लिए, è, é, ê या ë
- हैशिंग: Base64 में कोड में बदला गया SHA256
मान्य: TO_BASE64(SHA256("daní"))
अमान्य: TO_BASE64(SHA256("Mrs. Daní"))
उपनाम
- व्हाइटस्पेस हटाना
- सभी वर्ण छोटे अक्षरों में लिखें
- सभी सफ़िक्स हटाएं-जैसे, जूनियर, सीनियर दूसरा, तीसरा, II, III, पीएचडी, एमडी
- उच्चारण चिह्न न हटाएं—उदाहरण के लिए, è, é, ê या ë
- हैशिंग: 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
पिन कोड
- पिन कोड का डेटा हैश न करें
- अमेरिका के पिन कोड और अंतरराष्ट्रीय पिन कोड, दोनों की अनुमति है
- अमेरिका के लिए:
- पांच अंकों के कोड की अनुमति है—उदाहरण के लिए, 94043
- पांच अंकों के बाद चार अंकों के एक्सटेंशन की भी अनुमति है—उदाहरण के लिए, 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()
शुरू करें
/*
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`;
जुड़ने की कुंजियां
उपयोगकर्ता से मिले डेटा के कुछ कॉम्बिनेशन, दूसरे कॉम्बिनेशन से ज़्यादा असरदार होते हैं. यहां उपयोगकर्ता से मिले अलग-अलग डेटा कॉम्बिनेशन की सूची दी गई है. इनकी रैंकिंग, उनके काम के होने के हिसाब से की गई है. अगर पते का इस्तेमाल किया जाता है, तो आपको ये जानकारी देनी होगी: नाम, उपनाम, देश, और पिन कोड.
- ईमेल, फ़ोन नंबर, पता (सबसे भरोसेमंद)
- फ़ोन नंबर, पता
- ईमेल, पता
- ईमेल, फ़ोन
- पता
- फ़ोन
- ईमेल (सबसे कम सुरक्षित)
मैच टेबल बनाना
रिपोर्ट > रिपोर्ट बनाएं > निजी क्लाउड मैच टेबल जनरेशन > टेंप्लेट का इस्तेमाल करें पर क्लिक करें ज़रूरी नहीं: अगर आपका डेटा पहले से हैश नहीं किया गया है, तो हैश करने के साथ निजी क्लाउड मैच टेबल जनरेशन को चुना जा सकता है.
// 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
से दिखाया जाता है.
इसमें व्यक्तिगत पहचान से जुड़ी जानकारी (पीआईआई) और नॉन-पीआईआई, दोनों तरह का डेटा शामिल होता है.
ओरिजनल टेबल का इस्तेमाल करने से, ज़्यादा अहम जानकारी के साथ आपकी रिपोर्ट को बेहतर बनाया जा सकता है. ऐसा इसलिए, क्योंकि मैच टेबल की तुलना में यह स्कोप में मौजूद सभी 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
नाम का एक अतिरिक्त कॉलम होता है, जो उपयोगकर्ता आइडेंटिफ़ायर को बाइट के तौर पर सेव करता है.
क्वेरी लिखते समय, फ़ील्ड के टाइप का ध्यान रखना ज़रूरी है. SQL के कंपैरिज़न ऑपरेटर, तुलना किए जा रहे लिटरल के एक जैसे होने की उम्मीद करते हैं. पहले पक्ष के डेटा की टेबल में user_id
को कैसे सेव किया गया है, इसके आधार पर आपको डेटा को मैच करने से पहले, टेबल में वैल्यू को कोड में बदलना पड़ सकता है.
मैच करने के लिए, आपको अपनी जॉइन बटन को बाइट में बदलना होगा:
JOIN ON
adh.google_ads_impressions_updm.customer_data_user_id = CAST(my_data.user_id AS BYTES)
इसके अलावा, एसक्यूएल में स्ट्रिंग की तुलना करने पर, कैपिटल लेटर का ध्यान रखा जाता है. इसलिए, आपको तुलना करने के लिए, दोनों तरफ़ स्ट्रिंग को कोड में बदलना पड़ सकता है, ताकि उनकी सटीक तुलना की जा सके.
सैंपल क्वेरी
मैच होने वाले उपयोगकर्ताओं की संख्या
यह क्वेरी, Google Ads इंप्रेशन टेबल में मैच होने वाले उपयोगकर्ताओं की संख्या की गिनती करती है.
/* 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 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
यूपीडीएम के बारे में अक्सर पूछे जाने वाले सवाल
यूपीडीएम से जुड़े अक्सर पूछे जाने वाले सवालों की सूची के लिए, यूपीडीएम के बारे में अक्सर पूछे जाने वाले सवाल देखें.