उपयोगकर्ता से मिले डेटा को मैच कराने की सुविधा

उपयोगकर्ता से मिले डेटा को मैच कराने की सुविधा (यूपीडीएम), किसी उपयोगकर्ता के पहले पक्ष (ग्राहक) के इकट्ठा किए गए डेटा को Google के विज्ञापन डेटा में दिए गए, उसी उपयोगकर्ता की साइन-इन करने की गतिविधि के डेटा से जोड़ती है. इस डेटा में वेबसाइटों, ऐप्लिकेशन या दुकानों से जुड़ी जानकारी शामिल होती है. इसमें Google के मालिकाना हक और उसके कंट्रोल वाला डेटा भी शामिल होता है. इसमें Google Marketing Platform (GMP) के प्रॉडक्ट से खरीदा गया डेटा शामिल है. उदाहरण के लिए, Display & Video 360 का इस्तेमाल करके खरीदा गया YouTube. GMP के ऐसे अन्य प्रॉडक्ट इस्तेमाल नहीं किए जा सकते जिनका मालिकाना हक और संचालन Google के पास नहीं है.

उपयोगकर्ता से मिले डेटा को मैच कराने की सुविधा का इस्तेमाल करने के लिए यह ज़रूरी है कि विज्ञापन इवेंट, Google के पास मौजूद विज्ञापन डेटा में दिए गए, साइन इन किए हुए उपयोगकर्ता के डेटा से जुड़ा हो.

इस दस्तावेज़ में, उपयोगकर्ता की ओर से दिए गए डेटा के मिलान की सुविधा के बारे में बताया गया है. साथ ही, इसे सेट अप करने और इस्तेमाल करने के बारे में दिशा-निर्देश दिए गए हैं.

कनेक्शन टैब के बारे में खास जानकारी

विज्ञापन से जुड़ी अहम जानकारी पाने के लिए, अक्सर कई सोर्स से मिले डेटा को एक साथ जोड़ना पड़ता है. डेटा पाइपलाइन की इस समस्या को हल करने के लिए, आपको अपने हिसाब से समाधान बनाने में काफ़ी समय और इंजीनियरिंग में निवेश करना होगा. Ads Data Hub में मौजूद कनेक्शन पेज, इस प्रोसेस को आसान बनाता है. यह पेज, BigQuery में विज्ञापन डेटा इंपोर्ट करने, उसे बदलने, और मैच करने के लिए, चरण-दर-चरण निर्देश वाला इंटरफ़ेस उपलब्ध कराता है. इससे, Ads Data Hub की क्वेरी या BigQuery से डेटा पढ़ने वाले किसी अन्य प्रॉडक्ट में इस डेटा का इस्तेमाल किया जा सकता है. पहले पक्ष (ग्राहक) के डेटा का इस्तेमाल करके अपनी क्वेरी को बेहतर बनाया जा सकता है. इससे ग्राहकों को बेहतर अनुभव मिलता है. साथ ही, यह विज्ञापन ट्रैकिंग में इंडस्ट्री-वाइड होने वाले बदलावों के लिए ज़्यादा असरदार होता है.

कनेक्शन पेज को ऐसे टूल की मदद से बनाया गया है जो आपको निजता को ध्यान में रखते हुए, पार्टनर के साथ व्यक्तिगत पहचान से जुड़ी जानकारी (पीआईआई) को एन्क्रिप्ट (सुरक्षित) और शेयर करने की अनुमति देते हैं. यह चुनने के बाद कि किन कॉलम में निजी पहचान से जुड़ी जानकारी (पीआईआई) शामिल है, Ads Data Hub डेटा को एन्क्रिप्ट (सुरक्षित) करता है. इससे यह पक्का होता है कि आपके पहले पक्ष (ग्राहक) के डेटा को सिर्फ़ वे लोग एक्सपोर्ट या पढ़ सकते हैं जिनके पास ऐसा करने की अनुमति है. यह जानना मुश्किल हो सकता है कि मेज़रमेंट या ऐक्टिवेशन के इस्तेमाल के उदाहरण के लिए, पहले पक्ष (ग्राहक) के किस डेटा की ज़रूरत है. इसलिए, Ads Data Hub इस्तेमाल के उदाहरणों की एक पूरी सूची उपलब्ध कराता है. इसके बाद, यह आपको डेटा निकालने, बदलने, और लोड करने की पूरी प्रोसेस के बारे में बताता है. हालांकि, कई तरह के कनेक्शन बनाए जा सकते हैं, लेकिन इस दस्तावेज़ में यह माना गया है कि उपयोगकर्ता से मिले डेटा की मैचिंग के लिए, Connections पेज का इस्तेमाल किया जा रहा है.

पहले पक्ष (ग्राहक) के डेटा के लिए इस्तेमाल किए जा सकने वाले सोर्स

इन डेटा सोर्स से डेटा इंपोर्ट किया जा सकता है:

  • BigQuery
  • Cloud Storage
  • सिक्योर एफ़टीपी (एसएफ़टीपी)
  • Snowflake
  • MySQL
  • PostgreSQL
  • Amazon Redshift
  • Amazon S3

उपयोगकर्ता से मिले डेटा को मैच कराने की सुविधा सिर्फ़ Google पर साइन-इन करने वाले उपयोगकर्ताओं को मिलती है. साथ ही, सिर्फ़ उस इन्वेंट्री के लिए मिलती है जिसका मालिक और जिसे चलाने वाला Google है. इसलिए, तीसरे पक्ष की कुकी के काम न करने से इस सुविधा पर कोई असर नहीं पड़ता. इंडस्ट्री में हुए बदलावों का असर, तीसरे पक्ष से मिले डेटा की तुलना में इस सुविधा पर कम पड़ता है. इसलिए, इससे अहम जानकारी मिलती है. इससे ग्राहकों का जुड़ाव बढ़ता है.

शब्दावली सीखें

  • उपयोगकर्ता से मिले डेटा का कनेक्शन: उपयोगकर्ता से मिले डेटा का कनेक्शन सेट अप करें. इससे आपको ये काम करने में मदद मिलेगी: डेटा इंपोर्ट करना और उसे मैच करना, डेटा इंपोर्ट करने के लिए शेड्यूल सेट करना, डेटा में बदलाव करना, और यूज़र आईडी का इस्तेमाल करके अपने विज्ञापनों के डेटा को मैच करना. विज्ञापन इवेंट, Google के पास मौजूद विज्ञापन डेटा में दिए गए, साइन इन किए हुए उपयोगकर्ता के डेटा से जुड़ा होना चाहिए. इसके लिए, एक से ज़्यादा Google Cloud प्रोजेक्ट की ज़रूरत होती है.
  • पहले पक्ष (ग्राहक) के डेटा का कनेक्शन: डेटा तैयार करने वाले टूल के तौर पर, पहले पक्ष (ग्राहक) के डेटा का कनेक्शन सेट अप करें. इससे डेटा इंपोर्ट शेड्यूल किया जा सकता है और UPDM की ऐडवांस सुविधाओं के बिना डेटा को बदला जा सकता है. इस तरह के कनेक्शन के लिए, सिर्फ़ एक Google Cloud प्रोजेक्ट की ज़रूरत होती है.
  • डेटा सोर्स: कनेक्ट किया गया प्रॉडक्ट, इंपोर्ट की गई फ़ाइल या तीसरे पक्ष का इंटिग्रेशन. उदाहरण के लिए, BigQuery.
  • डेस्टिनेशन: इस्तेमाल का उदाहरण: आम तौर पर, Google का कोई ऐसा प्रॉडक्ट या प्रॉडक्ट से जुड़ी ऐसी सुविधा जिसमें इंपोर्ट किए गए डेटा की सुविधा चालू होती है. जैसे, Ads Data Hub में उपयोगकर्ता से मिले डेटा को मैच करने की सुविधा.
  • एडमिन प्रोजेक्ट: यह वह Google Cloud प्रोजेक्ट होता है जिसमें आपका मालिकाना हक वाला विज्ञापन डेटा, रॉ फ़ॉर्मैट में मौजूद होता है.
  • आउटपुट डेटासेट: यह वह BigQuery डेटासेट होता है जिसमें Ads Data Hub डेटा लिखता है. डिफ़ॉल्ट रूप से, यह आपके एडमिन प्रोजेक्ट का डेटासेट होता है. इसे किसी दूसरे Google Cloud प्रोजेक्ट में बदलने के लिए, सेवा खातों को कॉन्फ़िगर करना लेख पढ़ें.

प्रोसेस की खास जानकारी

  1. डेटा इंटेक और मैचिंग की सुविधा सेट अप करना
  2. पहले पक्ष (ग्राहक) के डेटा का इस्तेमाल करना और उसे मैच करना
    • आपको पहले पक्ष (ग्राहक) के डेटा को फ़ॉर्मैट करके, BigQuery डेटासेट में अपलोड करना होगा. सबसे आसान सेटअप के लिए, अपने एडमिन प्रोजेक्ट का इस्तेमाल करें. हालांकि, आपके पास अपने मालिकाना हक वाले किसी भी BigQuery डेटासेट का इस्तेमाल करने का विकल्प होता है.
    • आप कनेक्शन बनाकर और इंपोर्ट करने का शेड्यूल सेट करके, डेटा मैचिंग का अनुरोध शुरू करते हैं.
    • Google, आपके प्रोजेक्ट और Google के मालिकाना हक वाले डेटा को जोड़ता है. इस डेटा में Google का उपयोगकर्ता आईडी और हैश किया गया उपयोगकर्ता का डेटा शामिल होता है. इससे मैच टेबल बनाने और उन्हें अपडेट करने में मदद मिलती है.
    • पहले पक्ष (ग्राहक) के डेटा का इस्तेमाल करना लेख पढ़ें
  3. मैच किए गए डेटा के आधार पर, Ads Data Hub में चल रही क्वेरी

निजता से जुड़ी ज़रूरी शर्तों के बारे में जानें

ग्राहक से जुड़ा डेटा इकट्ठा करना

उपयोगकर्ता से मिले डेटा को मैच कराने की सुविधा का इस्तेमाल करते समय, आपको पहले पक्ष (ग्राहक) का डेटा अपलोड करना होगा. यह जानकारी आपकी वेबसाइटों, ऐप्लिकेशन, दुकानों या ऐसी जगहों से इकट्ठा की जा सकती है जहां ग्राहक आपके कारोबार से सीधे तौर पर इंटरैक्ट करते हैं. इसमें ऑफ़लाइन ट्रांज़ैक्शन का डेटा भी शामिल है.

इसलिए, आपको ये करने होंगे:

  • पक्का करें कि आपकी निजता नीति में यह बताया गया हो कि ग्राहक का डेटा, तीसरे पक्ष की उन कंपनियों के साथ शेयर किया जाता है जो आपकी ओर से सेवाएं देती हैं. साथ ही, यह भी पक्का करें कि जहां भी कानूनी रूप से ज़रूरी हो वहां आपने डेटा शेयर करने के लिए ग्राहक की सहमति ली हो
  • ग्राहक से जुड़ा डेटा अपलोड करने के लिए, ऐसे एपीआई या इंटरफ़ेस का ही इस्तेमाल करें जिसे Google से मंज़ूरी मिली हो
  • लागू होने वाले सभी नियमों और कानूनों का पालन करें. इनमें, खुद तय किए गए या उद्योग से जुड़े नियम भी शामिल हैं.

पहले पक्ष (ग्राहक) की सहमति की सूचना

यह पक्का करने के लिए कि Ads Data Hub में पहले पक्ष (ग्राहक) का डेटा इस्तेमाल किया जा सके, आपको यह पुष्टि करनी होगी कि आपने ईईए में रहने वाले असली उपयोगकर्ताओं का डेटा Google के साथ शेयर करने के लिए, ईयू उपयोगकर्ता की सहमति से जुड़ी नीति और Ads Data Hub की नीति के मुताबिक सहमति ली है. यह ज़रूरी शर्त, हर Ads Data Hub खाते पर लागू होती है. साथ ही, जब भी पहले पक्ष (ग्राहक) का नया डेटा अपलोड किया जाता है, तब इसे अपडेट करना ज़रूरी होता है. कोई भी उपयोगकर्ता, पूरे खाते की ओर से इस सूचना को स्वीकार कर सकता है.

ध्यान दें कि Google की सेवा से जुड़ी क्वेरी के वे ही नियम, UPDM क्वेरी पर भी लागू होते हैं जो विश्लेषण क्वेरी पर लागू होते हैं. उदाहरण के लिए, मैच टेबल बनाते समय, ईईए में रहने वाले उपयोगकर्ताओं के लिए, अलग-अलग सेवाओं से जुड़ी क्वेरी नहीं चलाई जा सकतीं.

Ads Data Hub में सहमति की पुष्टि करने का तरीका जानने के लिए, यूरोपियन इकनॉमिक एरिया के लिए, सहमति लेने से जुड़ी ज़रूरी शर्तें लेख पढ़ें.

डेटा का साइज़

असली उपयोगकर्ता की निजता को सुरक्षित रखने के लिए, उपयोगकर्ता से मिले डेटा के मिलान की सुविधा, आपके डेटा के साइज़ से जुड़ी इन ज़रूरी शर्तों को लागू करती है:

  • आपको उपयोगकर्ता सूची में कम से कम 1,000 रिकॉर्ड अपलोड करने होंगे.
  • आपकी मैच टेबल के हर अपडेट में, कम से कम कुछ नए उपयोगकर्ताओं का डेटा शामिल होना चाहिए. यह तरीका, अंतर की जांच करने जैसा है.
  • आपकी सूची में रिकॉर्ड की ज़्यादा से ज़्यादा संख्या से ज़्यादा रिकॉर्ड नहीं होने चाहिए. डेटा की ज़्यादा से ज़्यादा सीमा के बारे में जानने के लिए, अपने Google प्रतिनिधि से संपर्क करें.

डेटा इंटेक सेट अप करना

शुरू करने से पहले, आपको डेटा कनेक्शन बनाने के लिए, अपना Ads Data Hub खाता कॉन्फ़िगर करना होगा. इससे आपको डेटा मैचिंग पाइपलाइन सेट अप करने में मदद मिलेगी. आपको ये चरण सिर्फ़ एक बार पूरे करने होंगे.

कनेक्शन पेज पर, सेटअप शुरू करें पर क्लिक करें. इससे, UPDM चालू करने के चरण में खाता सेटअप करने वाला विज़र्ड खुल जाएगा.

कनेक्शन पर जाएं

BigQuery और Cloud Storage के लिए कौनसी अनुमतियां दी जाती हैं?

अगर आपने BigQuery या Cloud Storage के साथ इस्तेमाल करने के लिए यूपीडीएम सेट अप किया है, तो इस रेफ़रंस का इस्तेमाल करके यह समझें कि Ads Data Hub के सेवा खातों को कौनसी अनुमतियां दी जाती हैं.

BigQuery

Datafusion सेवा खाता
मकसद datafusion सेवा खाते का इस्तेमाल, Ads Data Hub के यूज़र इंटरफ़ेस (यूआई) में सोर्स फ़ील्ड की सूची दिखाने के लिए किया जाता है.
फ़ॉर्मैट service-some-number@gcp-sa-datafusion.iam.gserviceaccount.com
ज़रूरी ऐक्सेस
BigQuery Data Viewer
roles/bigquery.dataViewer
डेटा सोर्स और डेस्टिनेशन प्रोजेक्ट में मौजूद कुछ डेटासेट के लिए
Storage Admin
roles/storage.admin
डेटा सोर्स प्रोजेक्ट के लिए या स्टोरेज बकेट के लिए
Dataproc सेवा खाता
मकसद Dataproc सेवा खाते की मदद से, बैकग्राउंड में डेटा को एक जगह से दूसरी जगह भेजा जा सकता है.
फ़ॉर्मैट some-number-compute@developer.gserviceaccount.com
ज़रूरी ऐक्सेस
BigQuery Data Viewer
roles/bigquery.dataViewer
डेटा सोर्स और डेस्टिनेशन प्रोजेक्ट में मौजूद कुछ डेटासेट के लिए
BigQuery Data Editor
roles/bigquery.dataEditor
डेस्टिनेशन प्रोजेक्ट में मौजूद कुछ डेटासेट के लिए
BigQuery Job User
roles/bigquery.jobUser
डेटा सोर्स और डेस्टिनेशन, दोनों प्रोजेक्ट के लिए
Storage Admin
roles/storage.admin
डेटा सोर्स और डेस्टिनेशन प्रोजेक्ट, दोनों के लिए या कोई स्टोरेज बकेट
UPDM सेवा खाता
मकसद UPDM सेवा खाते का इस्तेमाल, मैचिंग जॉब को चलाने के लिए किया जाता है.
फ़ॉर्मैट service-some-number@gcp-sa-adsdataconnector.iam.gserviceaccount.com
ज़रूरी ऐक्सेस
BigQuery Data Viewer
roles/bigquery.dataViewer
डेस्टिनेशन प्रोजेक्ट के लिए
BigQuery Job User
roles/bigquery.jobUser
डेस्टिनेशन प्रोजेक्ट के लिए

Cloud Storage

Datafusion सेवा खाता
मकसद datafusion सेवा खाते का इस्तेमाल, Ads Data Hub के यूज़र इंटरफ़ेस (यूआई) में सोर्स फ़ील्ड की सूची दिखाने के लिए किया जाता है.
फ़ॉर्मैट service-some-number@gcp-sa-datafusion.iam.gserviceaccount.com
ज़रूरी ऐक्सेस
Storage Object Viewer
roles/storage.objectViewer
डेटा सोर्स प्रोजेक्ट में मौजूद स्टोरेज बकेट के लिए
BigQuery Data Viewer
roles/bigquery.dataViewer
डेटा सोर्स प्रोजेक्ट के लिए या स्टोरेज बकेट के लिए
Storage Admin
roles/storage.admin
डेटा सोर्स प्रोजेक्ट के लिए या स्टोरेज बकेट के लिए
Dataproc सेवा खाता
मकसद Dataproc सेवा खाते की मदद से, बैकग्राउंड में डेटा को एक जगह से दूसरी जगह भेजा जा सकता है.
फ़ॉर्मैट some-number-compute@developer.gserviceaccount.com
ज़रूरी ऐक्सेस
Storage Admin
roles/storage.admin
डेटा सोर्स और डेस्टिनेशन प्रोजेक्ट, दोनों के लिए या कोई स्टोरेज बकेट
BigQuery Job User
roles/bigquery.jobUser
डेस्टिनेशन प्रोजेक्ट के लिए
UPDM सेवा खाता
मकसद UPDM सेवा खाते का इस्तेमाल, मैचिंग जॉब को चलाने के लिए किया जाता है.
फ़ॉर्मैट service-some-number@gcp-sa-adsdataconnector.iam.gserviceaccount.com
ज़रूरी ऐक्सेस
BigQuery Data Viewer
roles/bigquery.dataViewer
डेस्टिनेशन प्रोजेक्ट के लिए
BigQuery Job User
roles/bigquery.jobUser
डेस्टिनेशन प्रोजेक्ट के लिए

अन्य डेटा सोर्स

अन्य डेटा सोर्स के लिए ज़रूरी नहीं है

पहले पक्ष (ग्राहक) के डेटा को मैच करना और उसे शामिल करना

इनपुट के लिए डेटा को फ़ॉर्मैट करना

डेटा को सही तरीके से मैच करने के लिए, फ़ॉर्मैटिंग से जुड़ी इन ज़रूरी शर्तों का पालन करना होगा:

  • नीचे दिए गए इनपुट फ़ील्ड के ब्यौरे में जहां बताया गया है वहां आपको SHA256 हैशिंग का इस्तेमाल करके अपलोड करना होगा.
  • इनपुट फ़ील्ड को स्ट्रिंग के तौर पर फ़ॉर्मैट किया जाना चाहिए. उदाहरण के लिए, अगर BigQuery के SHA256 हैश फ़ंक्शन का इस्तेमाल Base16 एन्कोडिंग फ़ंक्शन (TO_HEX) के साथ किया जा रहा है, तो इस ट्रांसफ़ॉर्मेशन का इस्तेमाल करें: TO_HEX(SHA256(user_data)).
  • UPDM, Base16 और Base64, दोनों तरह की एन्कोडिंग के साथ काम करता है. आपको अपने पहले पक्ष (ग्राहक) के डेटा की एन्कोडिंग को, Ads Data Hub क्वेरी में इस्तेमाल की गई डिकोडिंग के साथ अलाइन करना होगा. अगर आपने पहले पक्ष (ग्राहक) के डेटा की एन्कोडिंग में बदलाव किया है, तो आपको Ads Data Hub की क्वेरी को अपडेट करना होगा, ताकि वह उसी बेस से डिकोड हो सके. यहां दिए गए उदाहरणों में, Base16 एन्कोडिंग का इस्तेमाल किया गया है.

यूज़र आईडी

  • सादा लेख
  • हैशिंग: कोई नहीं

ईमेल

  • आगे और पीछे की खाली सफ़ेद जगहों को हटाएं
  • सभी वर्ण छोटे अक्षरों में लिखें
  • सभी ईमेल पतों के लिए कोई डोमेन नेम डालें. उदाहरण के लिए, gmail.com या hotmail.co.jp
  • उच्चारण चिह्न हटाएं—उदाहरण के लिए, è, é, ê या ë को e में बदलें
  • gmail.com और googlemail.com ईमेल पतों के डोमेन नेम से पहले के सभी पीरियड (.) हटाएं
  • हैशिंग: Base16 एन्कोड किया गया SHA256

मान्य यूआरएल: TO_HEX(SHA256("jeffersonloveshiking@gmail.com"))

अमान्य: TO_HEX(SHA256("JéffersonLôvesHiking@gmail.com"))

फ़ोन

  • व्हाइटस्पेस हटाना
  • E.164 फ़ॉर्मैट में फ़ोन नंबर डालें. उदाहरण के लिए, अमेरिका का फ़ोन नंबर: +14155552671, यूनाइटेड किंगडम का फ़ोन नंबर: +442071838750
  • देश के कोड से पहले "+" को छोड़कर, सभी खास वर्ण हटाएं
  • हैशिंग: Base16 एन्कोड किया गया SHA256

मान्य यूआरएल: TO_HEX(SHA256("+18005550101"))

अमान्य: TO_HEX(SHA256("(800) 555-0101"))

नाम

  • व्हाइटस्पेस हटाना
  • सभी वर्ण छोटे अक्षरों में लिखें
  • सभी प्रीफ़िक्स हटाएं. उदाहरण के लिए, श्रीमती, श्री, सुश्री, डॉ॰
  • उच्चारण चिह्न न हटाएं. उदाहरण के लिए, è, é, ê या ë
  • हैशिंग: Base16 एन्कोड किया गया SHA256

मान्य यूआरएल: TO_HEX(SHA256("daní"))

अमान्य: TO_HEX(SHA256("Daní"))

उपनाम

  • व्हाइटस्पेस हटाना
  • सभी वर्ण छोटे अक्षरों में लिखें
  • सभी सफ़िक्स हटाएं. उदाहरण के लिए, Jr., सीनियर, 2nd, 3rd, II, III, PHD, MD
  • उच्चारण चिह्न न हटाएं. उदाहरण के लिए, è, é, ê या ë
  • हैशिंग: Base16 एन्कोड किया गया SHA256

मान्य यूआरएल: TO_HEX(SHA256("delacruz"))

अमान्य: TO_HEX(SHA256("de la Cruz, Jr."))

देश

  • देश का कोड शामिल करें, भले ही आपके ग्राहकों से जुड़ा पूरा डेटा उसी देश से हो
  • देश का डेटा हैश न करें
  • ISO 3166-1 alpha-2 फ़ॉर्मैट में देश के कोड इस्तेमाल करना
  • हैशिंग: कोई नहीं

मान्य यूआरएल: US

अमान्य: United States of America या USA

पिन कोड

  • पिन कोड का डेटा हैश न करें
  • अमेरिका के पिन कोड और अंतरराष्ट्रीय पिन कोड, दोनों की अनुमति है
  • अमेरिका के लिए:
    • पांच अंकों के पिन कोड की अनुमति है. उदाहरण के लिए, 94043
    • पांच अंकों के बाद चार अंकों के एक्सटेंशन की भी अनुमति है. उदाहरण के लिए, 94043-1351 या 940431351
  • अन्य सभी देशों के लिए:
    • फ़ॉर्मैटिंग की ज़रूरत नहीं है (छोटे अक्षरों में लिखने या स्पेस और खास वर्णों को हटाने की ज़रूरत नहीं है)
    • पिन कोड एक्सटेंशन न डालें
  • हैशिंग: कोई नहीं

हैश की पुष्टि करना और डेटा को एन्कोड करना

यह पक्का करने के लिए कि आपके डेटा का फ़ॉर्मैट सही है, हैश की पुष्टि करने वाली इन स्क्रिप्ट का इस्तेमाल किया जा सकता है.

JavaScript

Base16

/**
 * @fileoverview Provides the hashing algorithm for User-Provided Data Match, 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 hashArrayBuffer = await crypto.subtle.digest(
      'SHA-256', (new TextEncoder()).encode(formattedToken));
  // Converts the hash buffer to a hexadecimal string.
  return Array.from(new Uint8Array(hashArrayBuffer))
      .map((b) => b.toString(16).padStart(2, '0'))
      .join('');
}

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

  // Expected hash for +18005551212:
  // 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
  hash('+18005551212').then(result => console.log(result));

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

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

main()

Base64

/**
 * @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

Base16

"""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': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
  - Phone '+18005551212':   61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
  - First name 'John':      96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
  - Last name 'Doe':        799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
"""

import base64
import hashlib

def updm_hash(token):
# Generates a SHA-256 hash of the input token after normalization.
  return hashlib.sha256(token.strip().lower().encode('utf-8')).hexdigest()

def print_updm_hash(token):
# Prints the SHA-256 hash and the original token.
  print('Hash: "{}"\t(Token: {})'.format(updm_hash(token), token))

def main():
# Hashes and prints sample tokens.
  print_updm_hash('test@gmail.com')
  print_updm_hash('+18005551212')
  print_updm_hash('John')
  print_updm_hash('Doe')

if __name__ == '__main__':
  main()

Base64

"""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()

ऐप पर जाएं

Base16

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

Sample hashes:

  - Email 'test@gmail.com': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
  - Phone '+18005551212':   61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
  - First name 'John':      96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
  - Last name 'Doe':        799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
*/
package main

import (
  "crypto/sha256"
  "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 := fmt.Sprintf("%x", 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")
}

Base64

/*
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

Base16

package updm.hashing;

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

import com.google.common.base.Ascii;
import com.google.common.hash.Hashing;

/**
 * Example of the UPDM hashing algorithm using hex-encoded SHA-256.
*
* <p>This uses the Guava Hashing to generate the hash: https://github.com/google/guava
*
* <p>Sample valid hashes:
*
* <ul>
*   <li>Email "test@gmail.com": "87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674"
*   <li>Phone "+18005551212": "61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44"
*   <li>First name "John": "96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a"
*   <li>Last name "Doe": "799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f"
* </ul>
*/
public final class HashExample {

  private HashExample() {}

  public static String hash(String token) {
    // Normalizes and hashes the input token.
    String formattedToken = Ascii.toLowerCase(token).strip();
    return Hashing.sha256().hashString(formattedToken, UTF_8).toString();
  }

  public static void printHash(String token) {
    // Calculates and prints the token's hash.
    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");
  }
}

Base64

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

Base16

/*
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': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
  - Phone '+18005551212':   61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
  - First name 'John':      96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
  - Last name 'Doe':        799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f

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 hashed versions of specified columns from the input table.
CREATE TABLE `your_project_name.your_dataset_name.output_hashed_table_name`
AS
SELECT
  UserID,
  TO_HEX(SHA256(LOWER(Email))) AS Email,
  TO_HEX(SHA256(Phone)) AS Phone,
  TO_HEX(SHA256(LOWER(FirstName))) AS FirstName,
  TO_HEX(SHA256(LOWER(LastName))) AS LastName,
  PostalCode,
  CountryCode,
FROM
  `your_project_name.your_dataset_name.input_unhashed_table_name`;

Base64

/*
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. अगर कहा जाए, तो पुष्टि करें. इसके बाद, आगे बढ़ें पर क्लिक करें:

    BigQuery

    BigQuery का ऐक्सेस देने के लिए, 'लागू करें' पर क्लिक करें.

    Cloud Storage

    Cloud Storage का ऐक्सेस देने के लिए, 'लागू करें' पर क्लिक करें.

    MySQL

    अपने MySQL डेटाबेस की लोकेशन, पोर्ट, उपयोगकर्ता नाम, और पासवर्ड डालें.

    S3

    Amazon S3 की सीक्रेट ऐक्सेस कुंजी डालें.

    PostgreSQL

    अपने PostgreSQL डेटाबेस की लोकेशन, पोर्ट, उपयोगकर्ता नाम, पासवर्ड, और डेटाबेस डालें.

    Redshift

    अपने Redshift डेटाबेस की लोकेशन, पोर्ट, उपयोगकर्ता नाम, पासवर्ड, और डेटाबेस डालें.

    sFTP

    एसएफ़टीपी सर्वर की जगह, उपयोगकर्ता नाम, और पासवर्ड डालें.

    Snowflake

    अपने Snowflake खाते का आइडेंटिफ़ायर, उपयोगकर्ता नाम, और पासवर्ड डालें.

  4. अपने डेटा सोर्स को कॉन्फ़िगर करें. इसके बाद, आगे बढ़ें पर क्लिक करें:

    BigQuery

    इंपोर्ट करने के लिए BigQuery टेबल चुनें.

    Cloud Storage

    gsutil पाथ डालें, जैसे कि gs://my-bucket/folder/ और अपनी फ़ाइल का फ़ॉर्मैट चुनें.

    अगर आपने इस संसाधन को पहली बार कनेक्ट किया है, तो आपको एक सूचना दिखेगी. ऐक्सेस देने के लिए, 'लागू करें' पर क्लिक करें. इसके बाद, 'आगे बढ़ें' पर क्लिक करें. ध्यान दें: आपके पास कोई ऐसी भूमिका होनी चाहिए जो संबंधित बकेट के लिए, storage.buckets.setIamPolicy सेट करने की अनुमति दे सके.

    MySQL

    आपको जिस MySQL डेटाबेस और टेबल का इस्तेमाल करना है उसे चुनें.

    S3

    उस फ़ाइल का यूआरआई डालें जिसे आपको अपलोड करना है. यह होस्ट के पते से मेल खाना चाहिए.

    PostgreSQL

    PostgreSQL स्कीमा और टेबल (या व्यू) का नाम डालें.

    Redshift

    Redshift स्कीमा और टेबल (या व्यू) का नाम डालें. Redshift, डिफ़ॉल्ट रूप से डेटाबेस की लोकेशन के ऐसे यूआरएल इस्तेमाल करता है जिनमें यह टेंप्लेट फ़ॉलो किया गया हो: cluster-identifier.account-number.aws-region.redshift.amazonaws.com .

    sFTP

    फ़ाइल का पाथ और नाम डालें. इसे इस फ़ॉर्मैट में होना चाहिए: /PATH/FILENAME.csv

    Snowflake

    आपको Snowflake के जिस डेटाबेस, स्कीमा, और टेबल (या व्यू) का इस्तेमाल करना है उसे डालें.

  5. इंटरमीडियरी डेस्टिनेशन के तौर पर इस्तेमाल करने के लिए, कोई BigQuery डेटासेट चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें. इससे यह पक्का होता है कि आपके डेटा का फ़ॉर्मैट सही है.
  6. ज़रूरी नहीं: अपने डेटा का फ़ॉर्मैट बदलें. बदलावों में, हैश कंप्यूट करना, छोटे/बड़े अक्षरों में फ़ॉर्मैट करना, और फ़ील्ड को मर्ज/स्प्लिट करना शामिल है.
    1. कार्रवाई > > बदलें पर क्लिक करें.
    2. पॉप-अप होने वाले पैनल में, ट्रांसफ़ॉर्मेशन जोड़ें या एक और ट्रांसफ़ॉर्मेशन जोड़ें पर क्लिक करें
    3. ड्रॉपडाउन मेन्यू से बदलाव का टाइप चुनें और ज़रूरी शर्तें डालें.
    4. सेव करें पर क्लिक करें.
  7. कम से कम एक जॉइन की चुनें और उन फ़ील्ड को मैप करें जिनका आपको इस्तेमाल करना है. Ads Data Hub, एक जैसे नाम वाले फ़ील्ड को अपने-आप मैप कर देगा. इन्हें से दिखाया जाता है. ज़रूरी बदलाव करें. इसके बाद, आगे बढ़ें पर क्लिक करें.
  8. शेड्यूल सेट करें:
    1. अपने कनेक्शन को नाम दें.
    2. फ़्रीक्वेंसी सेट करें. इससे यह तय होगा कि पिछले चरण में चुने गए डेटासेट में डेटा कितनी बार इंपोर्ट किया जाएगा. हर बार कनेक्ट करने पर, डेस्टिनेशन टेबल में मौजूद डेटा अपडेट हो जाएगा.
    3. बताएं कि यूज़र आईडी के टकराव को कैसे हैंडल करना है. आपके पास मौजूदा मैच को बनाए रखने या नए डेटा से बदलने का विकल्प होता है.
  9. पूरा करें पर क्लिक करें. आम तौर पर, मैच टेबल बनने के 12 घंटे बाद क्वेरी के लिए तैयार हो जाती हैं.

कनेक्शन की जानकारी देखना

कनेक्शन की जानकारी वाले पेज पर, किसी कनेक्शन के हाल ही के रन और गड़बड़ियों के बारे में जानकारी मिलती है. किसी कनेक्शन की जानकारी देखने के लिए:

  1. कनेक्शन पर क्लिक करें.
  2. कनेक्शन की जानकारी देखने के लिए, उसके नाम पर क्लिक करें.
  3. अब आपको कनेक्शन की जानकारी और हाल ही में किए गए रन दिखेंगे. इनमें से हर एक में दो तरह की गड़बड़ियां दिखती हैं: कनेक्शन-लेवल की गड़बड़ियां (कनेक्शन नहीं चला) और लाइन-लेवल की गड़बड़ियां (कोई लाइन इंपोर्ट नहीं की गई).
    1. फ़ेल हुआ स्टेटस से पता चलता है कि पूरा कनेक्शन नहीं चल सका. उदाहरण के लिए, सेवा खाते की अनुमति से जुड़ी समस्या. कनेक्शन पर असर डालने वाली गड़बड़ियों को देखने के लिए, गड़बड़ी की स्थिति पर क्लिक करें.
    2. पूरा हुआ स्टेटस से पता चलता है कि कनेक्शन सही तरीके से काम कर रहा है. हालांकि, अब भी लाइन-लेवल की गड़बड़ियां हो सकती हैं. इनकी जानकारी, "गड़बड़ी वाली लाइनें" कॉलम में शून्य से अलग वैल्यू से मिलती है. किन रिकॉर्ड में गड़बड़ी हुई है, इस बारे में ज़्यादा जानने के लिए वैल्यू पर क्लिक करें.

किसी कनेक्शन में बदलाव करना

इन चीज़ों में बदलाव किया जा सकता है:

  • कनेक्शन का नाम
  • शेड्यूल करें
  • टेबल जिसमें डेटा भेजना है (डेस्टिनेशन टेबल)
  • फ़ील्ड मैपिंग

डेटा सोर्स में बदलाव करने की सुविधा काम नहीं करती. डेटा सोर्स बदलने के लिए, नया कनेक्शन बनाएं और पुराने कनेक्शन को मिटाएं.

कनेक्शन की जानकारी में बदलाव करने के लिए:

  1. कनेक्शन पर क्लिक करें.
  2. उस कनेक्शन के नाम पर क्लिक करें जिसमें आपको बदलाव करना है.
  3. जिस जानकारी में बदलाव करना है उसमें बदलाव करें:
    • कनेक्शन का नाम: बदलाव करें पर क्लिक करें. इसके बाद, नया नाम डालें और Enter दबाएं.
    • शेड्यूल: बदलाव करें पर क्लिक करें. इसके बाद, नया शेड्यूल सेट करें और सेव करें पर क्लिक करें.
    • डेस्टिनेशन टेबल: बदलाव करें पर क्लिक करें. इसके बाद, डेस्टिनेशन का नया नाम डालें और सेव करें पर क्लिक करें.
    • फ़ील्ड मैपिंग: पर क्लिक करें. इसके बाद, फ़ील्ड में बदलाव करें और सेव करें पर क्लिक करें.
  4. पर क्लिक करें.

क्वेरी से मैच किया गया डेटा

मिलती-जुलती टेबल से क्वेरी करना

जब आपकी मैच टेबल में निजता की जांच को पूरा करने के लिए ज़रूरी डेटा मौजूद हो, तब टेबल के ख़िलाफ़ क्वेरी चलाने के लिए तैयार रहें.

पहले पक्ष (ग्राहक) के डेटा (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_network टेबल के लिए Ads Data Hub, मैच टेबल भी जनरेट करता है. इसे adh.google_ads_impressions_policy_isolated_network_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)

इसके अलावा, एसक्यूएल में स्ट्रिंग की तुलना करते समय, कैपिटल लेटर का ध्यान रखा जाता है. इसलिए, आपको तुलना के दोनों ओर स्ट्रिंग को एन्कोड करने की ज़रूरत पड़ सकती है, ताकि यह पक्का किया जा सके कि उनकी सटीक तुलना की जा सके.

सैंपल क्वेरी

मैच किए गए उपयोगकर्ताओं की संख्या

इस क्वेरी से, 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 फ़ील्ड 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

यूपीडीएम के बारे में अक्सर पूछे जाने वाले सवाल

यूपीडीएम से जुड़े अक्सर पूछे जाने वाले सवालों की सूची देखने के लिए, यूपीडीएम के बारे में अक्सर पूछे जाने वाले सवाल देखें.