ব্যবহারকারীর দ্বারা সরবরাহিত ডেটা ম্যাচিং (UPDM) আপনার দ্বারা সংগৃহীত প্রথম-পক্ষের ডেটা - যেমন আপনার ওয়েবসাইট, অ্যাপ বা ফিজিক্যাল স্টোর থেকে তথ্য - Google-এর মালিকানাধীন এবং পরিচালিত ডেটা সহ সমস্ত Google বিজ্ঞাপন ডেটা জুড়ে একই ব্যবহারকারীর সাইন-ইন করা কার্যকলাপের সাথে যুক্ত করে। এর মধ্যে Google মার্কেটিং প্ল্যাটফর্ম (GMP) পণ্যের মাধ্যমে কেনা ডেটা অন্তর্ভুক্ত রয়েছে, উদাহরণস্বরূপ, Display & Video 360 ব্যবহার করে কেনা YouTube। Google-এর মালিকানাধীন এবং পরিচালিত নয় এমন অন্যান্য GMP পণ্য সমর্থিত নয়।
ব্যবহারকারীর প্রদত্ত ডেটা মেলানোর জন্য যোগ্য হতে, বিজ্ঞাপন ইভেন্টটি অবশ্যই Google বিজ্ঞাপন ডেটাতে সাইন-ইন করা ব্যবহারকারীর সাথে লিঙ্ক করা থাকতে হবে।
এই নথিতে ব্যবহারকারী-প্রদত্ত ডেটা ম্যাচিং বৈশিষ্ট্যটি বর্ণনা করা হয়েছে এবং সেটআপ এবং ব্যবহারের জন্য নির্দেশিকা প্রদান করা হয়েছে।
ব্যক্তিগত ক্লাউড ম্যাচ ওভারভিউ
মূল্যবান বিজ্ঞাপনের অন্তর্দৃষ্টি অর্জনের জন্য প্রায়শই একাধিক উৎস থেকে ডেটা একত্রিত করতে হয়। এই ডেটা পাইপলাইন সমস্যার নিজস্ব সমাধান তৈরি করতে উল্লেখযোগ্য সময় বিনিয়োগ এবং প্রকৌশলগত বিনিয়োগের প্রয়োজন। বিজ্ঞাপন ডেটা হাবের প্রাইভেট ক্লাউড ম্যাচ BigQuery-তে একটি ম্যাচ টেবিল তৈরি করার জন্য একটি বিজ্ঞাপন ডেটা হাব কোয়েরি টেমপ্লেট প্রদান করে এই প্রক্রিয়াটিকে সহজতর করে তোলে যা পরে আপনার বিজ্ঞাপন ডেটা হাব কোয়েরিতে আপনার প্রথম-পক্ষের ডেটার সাথে মেলাতে ব্যবহার করা যেতে পারে। প্রথম-পক্ষের ডেটা দিয়ে আপনার কোয়েরিগুলিকে সমৃদ্ধ করা গ্রাহকদের আরও সমৃদ্ধ অভিজ্ঞতা প্রদান করতে পারে এবং শিল্প-ব্যাপী বিজ্ঞাপন-ট্র্যাকিং পরিবর্তনের জন্য আরও প্রতিরোধী।
যেহেতু ব্যবহারকারীর দ্বারা সরবরাহিত ডেটা ম্যাচিং শুধুমাত্র সাইন-ইন করা ব্যবহারকারীদের জন্য Google-এর মালিকানাধীন এবং পরিচালিত ইনভেন্টরিতে উপলব্ধ, তাই আসন্ন থার্ড-পার্টি কুকিজ বন্ধ হওয়ার ফলে এটি প্রভাবিত হবে না। যেহেতু এটি থার্ড-পার্টি ডেটার তুলনায় শিল্প পরিবর্তনের প্রতি বেশি প্রতিরোধী, তাই এটি আরও সমৃদ্ধ অন্তর্দৃষ্টি প্রদান করতে পারে, যা গ্রাহকদের সাথে আরও বেশি সম্পৃক্ততা তৈরি করতে পারে।
প্রক্রিয়ার সারাংশ
- ডেটা ইনজেশন এবং ম্যাচিং সেটআপ
- নিশ্চিত করুন যে আপনার প্রথম পক্ষের ডেটা BigQuery-তে আছে এবং আপনার পরিষেবা অ্যাকাউন্টে এটি পড়ার অ্যাক্সেস আছে। ডেটা ইনজেশন সেট আপ করুন দেখুন।
- প্রথম পক্ষের ডেটা গ্রহণ এবং ম্যাচিং
- আপনি আপনার প্রথম পক্ষের ডেটা আপনার BigQuery ডেটাসেটে ফর্ম্যাট এবং আপলোড করেন।
- আপনি একটি ব্যক্তিগত ক্লাউড ম্যাচ বিশ্লেষণ কোয়েরি তৈরি করে এবং একটি সময়সূচী সেট করে একটি ডেটা-ম্যাচিং অনুরোধ শুরু করেন।
- Google আপনার প্রোজেক্ট এবং Google-এর মালিকানাধীন ডেটার মধ্যে ডেটা যুক্ত করে, যেখানে Google-এর ব্যবহারকারী আইডি এবং হ্যাশ করা ব্যবহারকারী-প্রদত্ত ডেটা থাকে, যাতে ম্যাচ টেবিল তৈরি এবং আপডেট করা যায়।
- প্রথম পক্ষের ডেটা ইনজেস্ট করুন দেখুন
- মিলে যাওয়া ডেটার উপর ভিত্তি করে, বিজ্ঞাপন ডেটা হাবে চলমান কোয়েরি
- আপনি অ্যাডস ডেটা হাবে নিয়মিত কোয়েরি চালানোর মতোই ম্যাচ টেবিলের বিরুদ্ধে কোয়েরি চালান। কোয়েরি ম্যাচ করা ডেটা দেখুন।
গোপনীয়তার প্রয়োজনীয়তা সম্পর্কে জানুন
গ্রাহকের তথ্য সংগ্রহ করা
ব্যবহারকারীর দ্বারা সরবরাহিত ডেটা ম্যাচিং ব্যবহার করার সময়, আপনাকে অবশ্যই প্রথম পক্ষের ডেটা আপলোড করতে হবে। এটি আপনার ওয়েবসাইট, অ্যাপ, ফিজিক্যাল স্টোর থেকে সংগ্রহ করা তথ্য, অথবা কোনও গ্রাহক সরাসরি আপনার সাথে ভাগ করে নেওয়া যেকোনো তথ্য হতে পারে।
তোমাকে অবশ্যই:
- নিশ্চিত করুন যে আপনার গোপনীয়তা নীতিতে প্রকাশ করা হয়েছে যে আপনি আপনার পক্ষ থেকে পরিষেবা প্রদানের জন্য তৃতীয় পক্ষের সাথে গ্রাহকের তথ্য ভাগ করে নিচ্ছেন এবং আইনত প্রয়োজন হলে এই ধরনের ভাগাভাগির জন্য আপনার সম্মতি রয়েছে।
- গ্রাহকের ডেটা আপলোড করার জন্য শুধুমাত্র Google এর অনুমোদিত API বা ইন্টারফেস ব্যবহার করুন
- প্রযোজ্য সকল আইন ও বিধিমালা মেনে চলুন, যার মধ্যে প্রযোজ্য যেকোনো স্ব-নিয়ন্ত্রক বা শিল্প কোড অন্তর্ভুক্ত রয়েছে।
প্রথম পক্ষের সম্মতির স্বীকৃতি
বিজ্ঞাপন ডেটা হাবে আপনার প্রথম পক্ষের ডেটা ব্যবহার করতে সক্ষম হওয়ার জন্য, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনি EU ব্যবহারকারী সম্মতি নীতি এবং বিজ্ঞাপন ডেটা হাব নীতি অনুসারে EEA শেষ ব্যবহারকারীদের কাছ থেকে Google এর সাথে ডেটা শেয়ার করার জন্য যথাযথ সম্মতি পেয়েছেন। এই প্রয়োজনীয়তা প্রতিটি বিজ্ঞাপন ডেটা হাব অ্যাকাউন্টের ক্ষেত্রে প্রযোজ্য এবং প্রতিবার নতুন প্রথম পক্ষের ডেটা আপলোড করার সময় আপডেট করতে হবে। যে কোনও একজন ব্যবহারকারী পুরো অ্যাকাউন্টের পক্ষ থেকে এই স্বীকৃতি দিতে পারেন।
মনে রাখবেন যে বিশ্লেষণ কোয়েরির ক্ষেত্রে প্রযোজ্য Google পরিষেবা কোয়েরির নিয়মগুলি UPDM কোয়েরির ক্ষেত্রেও প্রযোজ্য। উদাহরণস্বরূপ, আপনি যখন একটি ম্যাচ টেবিল তৈরি করেন তখন EEA-তে ব্যবহারকারীদের উপর ক্রস-সার্ভিস কোয়েরি চালাতে পারবেন না।
বিজ্ঞাপন ডেটা হাবে সম্মতি কীভাবে স্বীকার করতে হয় তা জানতে, ইউরোপীয় অর্থনৈতিক অঞ্চলের জন্য সম্মতির প্রয়োজনীয়তাগুলি দেখুন।
ডেটার আকার
ব্যবহারকারীর গোপনীয়তা রক্ষা করার জন্য, ব্যবহারকারীর দ্বারা সরবরাহিত ডেটা ম্যাচিং আপনার ডেটার আকার সম্পর্কিত এই প্রয়োজনীয়তাগুলি প্রয়োগ করে:
- আপনার ব্যবহারকারীর তালিকায় কমপক্ষে ১,০০০টি রেকর্ড আপলোড করতে হবে।
ডেটা ইনজেশন সেট আপ করুন
শুরু করার আগে, নিশ্চিত করুন:
- আপনার ফার্স্ট-পার্টি ডেটা অবশ্যই BigQuery-তে থাকতে হবে। যদি আপনার VPC-SC পেরিমিটার থাকে, তাহলে এই ফার্স্ট-পার্টি ডেটা অবশ্যই আপনার VPC-SC-এর মধ্যে থাকতে হবে।
- আপনার বিজ্ঞাপন ডেটা হাব পরিষেবা অ্যাকাউন্টের অবশ্যই প্রথম পক্ষের ডেটা পড়ার অ্যাক্সেস থাকতে হবে।
- আপনার প্রথম পক্ষের ডেটা অবশ্যই সঠিকভাবে ফর্ম্যাট এবং হ্যাশ করা উচিত। আরও বিস্তারিত জানার জন্য পরবর্তী বিভাগটি দেখুন।
এর বাইরে, প্রাইভেট ক্লাউড ম্যাচের কোনও অতিরিক্ত অনবোর্ডিং নেই। যদি আপনি একটি বিশ্লেষণ কোয়েরি চালাতে পারেন, তাহলে আপনি একটি প্রাইভেট ক্লাউড ম্যাচ কোয়েরি চালাতে পারেন।
প্রথম পক্ষের ডেটা গ্রহণ করুন এবং মেলান
ইনপুটের জন্য ডেটা ফর্ম্যাট করুন
আপনার ডেটা সঠিকভাবে মেলানোর জন্য এই ফর্ম্যাটিং প্রয়োজনীয়তাগুলি মেনে চলতে হবে:
- নিম্নলিখিত ইনপুট ক্ষেত্রের বর্ণনায় যেখানে নির্দেশিত আছে, আপনাকে SHA256 হ্যাশিং ব্যবহার করে আপলোড করতে হবে।
- ইনপুট ক্ষেত্রগুলিকে স্ট্রিং হিসেবে ফর্ম্যাট করতে হবে। উদাহরণস্বরূপ, যদি আপনি BigQuery এর SHA256 হ্যাশ ফাংশনটি Base64 এনকোডিং ফাংশন ( TO_BASE64 ) এর সাথে ব্যবহার করেন, তাহলে নিম্নলিখিত রূপান্তরটি ব্যবহার করুন:
TO_BASE64(SHA256(user_data))। - UPDM Base64 এনকোডিং সমর্থন করে। আপনার প্রথম-পক্ষের ডেটার এনকোডিং আপনার বিজ্ঞাপন ডেটা হাব কোয়েরিতে ব্যবহৃত ডিকোডিংয়ের সাথে সারিবদ্ধ করতে হবে। আপনি যদি আপনার প্রথম-পক্ষের ডেটা এনকোডিং পরিবর্তন করেন, তাহলে আপনাকে একই বেস থেকে ডিকোড করার জন্য আপনার বিজ্ঞাপন ডেটা হাব কোয়েরি আপডেট করতে হবে। নিম্নলিখিত উদাহরণগুলি 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í"))
পদবি
- হোয়াইটস্পেস স্ট্রিপ করুন
- সব অক্ষর ছোট হাতের অক্ষরে লিখুন
- সমস্ত প্রত্যয় সরান-উদাহরণস্বরূপ 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
জিপ কোড
- জিপ কোড ডেটা হ্যাশ করবেন না
- মার্কিন যুক্তরাষ্ট্র এবং আন্তর্জাতিক উভয় জিপ এবং পোস্টাল কোডই অনুমোদিত
- আমাদের জন্য:
- ৫ সংখ্যার কোড অনুমোদিত—উদাহরণস্বরূপ, ৯৪০৪৩
- ৫ সংখ্যার পরে ৪ সংখ্যার এক্সটেনশনও অনুমোদিত—উদাহরণস্বরূপ, ৯৪০৪৩-১৩৫১ অথবা ৯৪০৪৩১৩৫১
- অন্যান্য সকল দেশের জন্য:
- কোনও ফর্ম্যাটিং প্রয়োজন নেই (ছোট হাতের অক্ষর লেখার প্রয়োজন নেই, অথবা স্পেস এবং বিশেষ অক্ষর অপসারণের প্রয়োজন নেই)
- পোস্টাল কোড এক্সটেনশন বাদ দিন
- হ্যাশিং: কিছুই না
হ্যাশ বৈধতা এবং ডেটা এনকোডিং
আপনার ডেটা সঠিকভাবে ফর্ম্যাট করা হয়েছে তা নিশ্চিত করতে আপনি নিম্নলিখিত হ্যাশ ভ্যালিডেশন স্ক্রিপ্টগুলি ব্যবহার করতে পারেন।
জাভাস্ক্রিপ্ট
/**
* @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");
}
}
এসকিউএল
/*
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`;
জয়েন কী
ব্যবহারকারীর দ্বারা প্রদত্ত ডেটার কিছু সংমিশ্রণ অন্যদের তুলনায় শক্তিশালী। আপেক্ষিক শক্তি অনুসারে র্যাঙ্ক করা বিভিন্ন ব্যবহারকারীর দ্বারা প্রদত্ত ডেটা সংমিশ্রণের একটি তালিকা নিচে দেওয়া হল। আপনি যদি কোনও ঠিকানা ব্যবহার করেন, তাহলে আপনাকে অবশ্যই অন্তর্ভুক্ত করতে হবে: প্রথম নাম, পদবি, দেশ এবং জিপ কোড।
- ইমেল, ফোন, ঠিকানা (সবচেয়ে শক্তিশালী)
- ফোন, ঠিকানা
- ইমেইল, ঠিকানা
- ইমেল, ফোন
- জানুন
- ফোন
- ইমেল (সবচেয়ে দুর্বল)
একটি ম্যাচ টেবিল তৈরি করুন
- যোগ করুন তৈরি করুন > রিপোর্ট করুন এ ক্লিক করুন।
- প্রাইভেট ক্লাউড ম্যাচ টেবিল জেনারেশন টেমপ্লেট নির্বাচন করুন। ঐচ্ছিক: যদি আপনার ডেটা ইতিমধ্যেই হ্যাশ না করা থাকে তবে আপনি প্রাইভেট ক্লাউড ম্যাচ টেবিল জেনারেশন (হ্যাশিং সহ) নির্বাচন করতে পারেন।
- ক্যোয়ারী সম্পাদনা করুন ক্লিক করুন এবং তারপর সঠিক উপনাম প্রদানের জন্য প্যারামিটারের নামগুলি আপনার কলামের নাম দিয়ে প্রতিস্থাপন করুন।
- আপনার ম্যাচ টেবিল কতবার রিফ্রেশ করতে চান তার ফ্রিকোয়েন্সি সেট করতে Set schedule এ ক্লিক করুন। প্রতিটি রান বর্তমান ম্যাচ টেবিলকে ওভাররাইট করবে।
মিলে যাওয়া ডেটা কোয়েরি করুন
মিল টেবিলগুলি জিজ্ঞাসা করুন
যখন আপনার ম্যাচ টেবিলগুলিতে গোপনীয়তা পরীক্ষা পূরণ করার জন্য পর্যাপ্ত ডেটা থাকে, তখন আপনি টেবিলগুলির বিরুদ্ধে কোয়েরি চালানোর জন্য প্রস্তুত।
প্রথম-পক্ষের ডেটা (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_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)
অতিরিক্তভাবে, SQL-এ স্ট্রিং তুলনাগুলি ক্যাপিটালাইজেশনের প্রতি সংবেদনশীল, তাই আপনার তুলনার উভয় পাশে স্ট্রিংগুলিকে এনকোড করার প্রয়োজন হতে পারে যাতে সেগুলি সঠিকভাবে তুলনা করা যায়।
নমুনা প্রশ্নের তালিকা
মিলে যাওয়া ব্যবহারকারীদের সংখ্যা
এই কোয়েরিটি আপনার Google বিজ্ঞাপন ইম্প্রেশন টেবিলে মিলিত ব্যবহারকারীর সংখ্যা গণনা করে।
/* 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 ফিল্ডটি ১ অক্টোবর, ২০২৪ থেকে উপলব্ধ ছিল। আপনি এই তারিখের আগে মিলে যাওয়ার হার গণনা করতে এই ফিল্ডটি ব্যবহার করতে পারবেন না।
/* 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 বিজ্ঞাপন ডেটার সাথে প্রথম পক্ষের ডেটা কীভাবে যুক্ত করবেন তা দেখানো হয়েছে:
/* 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 প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী দেখুন।