ব্যবহারকারী-প্রদত্ত ডেটা ম্যাচিং

ব্যবহারকারী-প্রদত্ত ডেটা ম্যাচিং (UPDM) প্রথম-পক্ষের ডেটাতে যোগ দেয় যা আপনি কোনও ব্যবহারকারী সম্পর্কে সংগ্রহ করেছেন—যেমন আপনার ওয়েবসাইট, অ্যাপস বা ফিজিক্যাল স্টোর থেকে তথ্য—Google-এর মালিকানাধীন এবং পরিচালিত ডেটা সহ সমস্ত Google বিজ্ঞাপন ডেটা জুড়ে একই ব্যবহারকারীর সাইন-ইন করা কার্যকলাপের সাথে। এর মধ্যে রয়েছে Google Marketing Platform (GMP) পণ্যের মাধ্যমে কেনা ডেটা, উদাহরণস্বরূপ, YouTube Display & Video 360 ব্যবহার করে কেনা। অন্যান্য GMP পণ্য যা Google-এর মালিকানাধীন এবং পরিচালিত নয় তা সমর্থিত নয়।

ব্যবহারকারী-প্রদত্ত ডেটা ম্যাচিংয়ের জন্য যোগ্য হতে, বিজ্ঞাপন ইভেন্টটিকে অবশ্যই Google বিজ্ঞাপন ডেটাতে সাইন-ইন করা ব্যবহারকারীর সাথে লিঙ্ক করতে হবে।

এই দস্তাবেজটি ব্যবহারকারী-প্রদত্ত ডেটা ম্যাচিং বৈশিষ্ট্য বর্ণনা করে এবং সেটআপ এবং ব্যবহারের নির্দেশিকা প্রদান করে।

সংযোগ ট্যাব ওভারভিউ

মূল্যবান বিজ্ঞাপনের অন্তর্দৃষ্টি অর্জনের জন্য প্রায়ই একাধিক উত্স থেকে ডেটা একত্রিত করার প্রয়োজন হয়৷ এই ডেটা পাইপলাইন সমস্যার আপনার নিজস্ব সমাধান তৈরি করতে উল্লেখযোগ্য সময় বিনিয়োগ এবং প্রকৌশল বিনিয়োগ প্রয়োজন। Ads Data Hub-এর সংযোগ পৃষ্ঠা BigQuery-এ আপনার বিজ্ঞাপনের ডেটা আমদানি, রূপান্তর এবং মেলানোর জন্য ধাপে ধাপে নির্দেশিত ইন্টারফেস প্রদান করে এই প্রক্রিয়াটিকে স্ট্রীমলাইন করে, যাতে আপনি এটিকে আপনার বিজ্ঞাপন ডেটা হাব কোয়েরিতে বা BigQuery থেকে পড়া অন্য কোনো পণ্যে ব্যবহার করতে পারেন। প্রথম-পক্ষের ডেটা দিয়ে আপনার প্রশ্নগুলিকে সমৃদ্ধ করা গ্রাহকদের আরও সমৃদ্ধ অভিজ্ঞতা প্রদান করতে পারে এবং শিল্প-ব্যাপী বিজ্ঞাপন-ট্র্যাকিং পরিবর্তনগুলির জন্য আরও প্রতিরোধী।

সংযোগ পৃষ্ঠাটি এমন সরঞ্জামগুলির সাথে তৈরি করা হয়েছে যা আপনাকে গোপনীয়তা-কেন্দ্রিক পদ্ধতিতে অংশীদারদের সাথে ব্যক্তিগতভাবে শনাক্তযোগ্য তথ্য (PII) এনক্রিপ্ট করতে এবং ভাগ করতে দেয়৷ কোন কলামে PII রয়েছে তা নির্বাচন করার পরে, বিজ্ঞাপন ডেটা হাব ডেটা এনক্রিপ্ট করে, এটি নিশ্চিত করে যে আপনার প্রথম-পক্ষের ডেটা কেবলমাত্র সেই ব্যক্তিদের দ্বারা রপ্তানি বা পড়তে পারে যাদের এটি করার অনুমতি রয়েছে৷ আপনার পরিমাপ বা অ্যাক্টিভেশন ব্যবহারের ক্ষেত্রে কোন ফার্স্ট-পার্টি ডেটা প্রয়োজন তা জানা কঠিন হতে পারে, তাই Ads Data Hub পূর্বনির্ধারিত ব্যবহারের ক্ষেত্রে একটি বিস্তৃত তালিকা প্রদান করে, তারপরে আপনার ডেটা এক্সট্র্যাক্ট, রূপান্তর এবং লোড করার সম্পূর্ণ অভিজ্ঞতার মাধ্যমে আপনাকে গাইড করে। যদিও একাধিক ধরনের সংযোগ তৈরি করতে পারে, এই নথিটি অনুমান করে যে আপনি ব্যবহারকারী-প্রদত্ত ডেটা ম্যাচিংয়ের জন্য সংযোগ পৃষ্ঠাটি ব্যবহার করছেন৷

সমর্থিত প্রথম পক্ষের ডেটা উৎস

আপনি এই ডেটা উত্স থেকে ডেটা আমদানি করতে পারেন:

  • BigQuery
  • ক্লাউড স্টোরেজ
  • নিরাপদ FTP (sFTP)
  • স্নোফ্লেক
  • মাইএসকিউএল
  • পোস্টগ্রেএসকিউএল
  • আমাজন রেডশিফ্ট
  • আমাজন S3

যেহেতু ব্যবহারকারী-প্রদত্ত ডেটা মিল শুধুমাত্র সাইন-ইন করা ব্যবহারকারীদের জন্য Google-এর মালিকানাধীন এবং পরিচালিত ইনভেন্টরিতে উপলব্ধ, এটি তৃতীয় পক্ষের কুকিজের আসন্ন অবচয় দ্বারা প্রভাবিত হয় না৷ যেহেতু এটি তৃতীয় পক্ষের ডেটার তুলনায় শিল্পের পরিবর্তনের জন্য বেশি প্রতিরোধী, তাই এটি আরও সমৃদ্ধ অন্তর্দৃষ্টি প্রদান করতে পারে, যা উচ্চতর গ্রাহকদের অংশগ্রহণের দিকে নিয়ে যেতে পারে।

পরিভাষা শিখুন

  • ব্যবহারকারী-প্রদত্ত ডেটা সংযোগ: আপনার ডেটা আমদানি করতে এবং মেলাতে, ডেটা আমদানির সময়সূচী, ডেটা রূপান্তর করতে এবং একটি ব্যবহারকারী আইডি ব্যবহার করে আপনার বিজ্ঞাপন ডেটার সাথে মিল করতে একটি ব্যবহারকারী-প্রদত্ত ডেটা সংযোগ সেট আপ করুন৷ বিজ্ঞাপন ইভেন্টটি অবশ্যই Google বিজ্ঞাপন ডেটাতে সাইন-ইন করা ব্যবহারকারীর সাথে লিঙ্ক করতে হবে। একাধিক Google ক্লাউড প্রকল্পের প্রয়োজন।
  • প্রথম পক্ষের ডেটা সংযোগ: ডেটা আমদানির সময়সূচী করতে এবং UPDM-এর উন্নত বৈশিষ্ট্যগুলি ছাড়াই ডেটা রূপান্তর করতে, ডেটা প্রস্তুতির সরঞ্জাম হিসাবে একটি প্রথম-পক্ষের ডেটা সংযোগ সেট আপ করুন৷ এই ধরনের সংযোগের জন্য শুধুমাত্র একটি Google ক্লাউড প্রকল্প প্রয়োজন।
  • ডেটা উৎস: একটি সংযুক্ত পণ্য, আমদানি করা ফাইল, বা তৃতীয় পক্ষের ইন্টিগ্রেশন-উদাহরণস্বরূপ, BigQuery।
  • গন্তব্য: একটি ব্যবহারের ক্ষেত্রে; সাধারণত একটি Google পণ্য বা পণ্য বৈশিষ্ট্য, যেখানে আমদানি করা ডেটা সক্রিয় করা হয়-উদাহরণস্বরূপ, বিজ্ঞাপন ডেটা হাব ব্যবহারকারীর দেওয়া ডেটা ম্যাচিং।
  • অ্যাডমিন প্রজেক্ট: Google ক্লাউড প্রজেক্ট যেটিতে আপনার মালিকানা সংক্রান্ত বিজ্ঞাপনের ডেটা রয়েছে
  • আউটপুট ডেটাসেট: BigQuery ডেটাসেট যা Ads Data Hub লিখে। ডিফল্টরূপে, এটি আপনার অ্যাডমিন প্রকল্পের অধীনে একটি ডেটাসেট। এটিকে অন্য Google ক্লাউড প্রকল্পে পরিবর্তন করতে, পরিষেবা অ্যাকাউন্টগুলি কনফিগার করুন দেখুন।

প্রক্রিয়া সারাংশ

  1. ডেটা ইনজেশন এবং ম্যাচিং এর সেটআপ
    • আপনি আপনার প্রশাসক প্রকল্পে পরিষেবার অ্যাকাউন্টগুলিতে প্রয়োজনীয় অনুমতিগুলি প্রদান করেন৷ ডেটা ইনজেশন সেট আপ দেখুন।
  2. প্রথম পক্ষের ডেটা ইনজেশন এবং ম্যাচিং
    • আপনি আপনার BigQuery ডেটাসেটে আপনার প্রথম পক্ষের ডেটা ফর্ম্যাট এবং আপলোড করুন। সহজতম সেটআপের জন্য, আপনার অ্যাডমিন প্রকল্প ব্যবহার করুন। যাইহোক, আপনি আপনার মালিকানাধীন যেকোনো BigQuery ডেটাসেট ব্যবহার করতে পারেন।
    • আপনি একটি সংযোগ তৈরি করে এবং একটি আমদানি সময়সূচী সেট করে একটি ডেটা-মেলিংয়ের অনুরোধ শুরু করেন৷
    • Google আপনার প্রোজেক্ট এবং Google-এর মালিকানাধীন ডেটার মধ্যে ডেটা যোগ করে যাতে Google-এর ইউজার আইডি থাকে এবং ম্যাচ টেবিল তৈরি এবং আপডেট করতে ব্যবহারকারী-প্রদত্ত ডেটা হ্যাশ করে।
    • প্রথম পক্ষের ডেটা ইনজেস্ট দেখুন
  3. বিজ্ঞাপন ডেটা হাবে চলমান প্রশ্ন, মিলে যাওয়া ডেটার উপর ভিত্তি করে
    • আপনি বিজ্ঞাপন ডেটা হাবে যেভাবে নিয়মিত কোয়েরি চালান ঠিক একইভাবে আপনি ম্যাচ টেবিলের বিরুদ্ধে কোয়েরি চালান। ক্যোয়ারী মিলে যাওয়া ডেটা দেখুন।

গোপনীয়তা প্রয়োজনীয়তা সম্পর্কে জানুন

গ্রাহকের তথ্য সংগ্রহ করা হচ্ছে

ব্যবহারকারী-প্রদত্ত ডেটা ম্যাচিং ব্যবহার করার সময়, আপনাকে অবশ্যই প্রথম পক্ষের ডেটা আপলোড করতে হবে৷ এটি হতে পারে আপনার ওয়েবসাইট, অ্যাপস, ফিজিক্যাল স্টোর থেকে সংগ্রহ করা তথ্য অথবা একজন গ্রাহক সরাসরি আপনার সাথে শেয়ার করেছেন এমন কোনো তথ্য।

আপনাকে অবশ্যই:

  • নিশ্চিত করুন যে আপনার গোপনীয়তা নীতি প্রকাশ করে যে আপনি আপনার পক্ষ থেকে পরিষেবাগুলি সম্পাদন করার জন্য তৃতীয় পক্ষের সাথে গ্রাহকের ডেটা ভাগ করেন এবং যেখানে আইনিভাবে প্রয়োজন সেখানে আপনি এই ধরনের ভাগ করার জন্য সম্মতি পান
  • গ্রাহক ডেটা আপলোড করতে শুধুমাত্র Google-এর অনুমোদিত API বা ইন্টারফেস ব্যবহার করুন
  • প্রযোজ্য হতে পারে এমন যেকোন স্ব-নিয়ন্ত্রক বা শিল্প কোড সহ সমস্ত প্রযোজ্য আইন ও প্রবিধান মেনে চলুন

প্রথম পক্ষের সম্মতির স্বীকৃতি

আপনি বিজ্ঞাপন ডেটা হাবে আপনার প্রথম-পক্ষের ডেটা ব্যবহার করতে পারবেন তা নিশ্চিত করতে, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনি EU ব্যবহারকারীর সম্মতি নীতি এবং বিজ্ঞাপন ডেটা হাব নীতি অনুসারে EEA শেষ ব্যবহারকারীদের থেকে Google-এর সাথে ডেটা শেয়ার করার জন্য যথাযথ সম্মতি পেয়েছেন। এই প্রয়োজনীয়তা প্রতিটি বিজ্ঞাপন ডেটা হাব অ্যাকাউন্টের জন্য প্রযোজ্য এবং প্রতিবার আপনি নতুন প্রথম পক্ষের ডেটা আপলোড করার সময় অবশ্যই আপডেট করতে হবে। যেকোন একজন ব্যবহারকারী পুরো অ্যাকাউন্টের পক্ষে এই স্বীকৃতি দিতে পারেন।

মনে রাখবেন যে একই Google পরিষেবার ক্যোয়ারী নিয়ম যা বিশ্লেষণের প্রশ্নে প্রযোজ্য তা UPDM কোয়েরির ক্ষেত্রেও প্রযোজ্য। উদাহরণস্বরূপ, যখন আপনি একটি ম্যাচ টেবিল তৈরি করেন তখন আপনি EEA-তে ব্যবহারকারীদের উপর ক্রস-সার্ভিস কোয়েরি চালাতে পারবেন না।

বিজ্ঞাপন ডেটা হাবে কীভাবে সম্মতি স্বীকার করতে হয় তা জানতে, ইউরোপীয় অর্থনৈতিক এলাকার জন্য সম্মতির প্রয়োজনীয়তা দেখুন।

ডেটা সাইজ

শেষ-ব্যবহারকারীর গোপনীয়তা রক্ষা করতে, ব্যবহারকারী-প্রদত্ত ডেটা ম্যাচিং আপনার ডেটার আকার সম্পর্কিত এই প্রয়োজনীয়তাগুলি প্রয়োগ করে:

  • আপনাকে অবশ্যই আপনার ব্যবহারকারী তালিকায় কমপক্ষে 1,000টি রেকর্ড আপলোড করতে হবে৷
  • আপনার ম্যাচ টেবিলের প্রতিটি সফল আপডেটে ন্যূনতম সংখ্যক নতুন মিলে যাওয়া ব্যবহারকারীদের অন্তর্ভুক্ত করতে হবে। এই আচরণ পার্থক্য চেক অনুরূপ.
  • আপনার তালিকা রেকর্ডের সর্বোচ্চ সংখ্যা অতিক্রম করা উচিত নয়. সর্বাধিক ডেটা সীমা সম্পর্কে জানতে, আপনার Google প্রতিনিধির সাথে যোগাযোগ করুন।

ডেটা ইনজেশন সেট আপ করুন

আপনি শুরু করার আগে, ডেটা সংযোগ তৈরি করতে আপনাকে আপনার বিজ্ঞাপন ডেটা হাব অ্যাকাউন্ট কনফিগার করতে হবে, এইভাবে আপনি আপনার ডেটা-ম্যাচিং পাইপলাইন স্থাপন করবেন। আপনাকে শুধুমাত্র একবার এই পদক্ষেপগুলি সম্পাদন করতে হবে।

সংযোগ পৃষ্ঠা থেকে, UPDM সক্রিয়করণ পর্যায়ে অ্যাকাউন্ট সেটআপ উইজার্ড খুলতে সেটআপ শুরু করুন- এ ক্লিক করুন।

সংযোগগুলিতে যান

BigQuery এবং ক্লাউড স্টোরেজের জন্য কোন অনুমতি দেওয়া হয়?

আপনি যদি BigQuery বা ক্লাউড স্টোরেজের সাথে ব্যবহারের জন্য UPDM সেট আপ করেন, তাহলে বিজ্ঞাপন ডেটা হাব পরিষেবা অ্যাকাউন্টগুলিতে যে অনুমতিগুলি দেওয়া হয় তা বুঝতে এই রেফারেন্সটি ব্যবহার করুন৷

BigQuery

ডেটাফিউশন পরিষেবা অ্যাকাউন্ট
উদ্দেশ্য ডেটাফিউশন পরিষেবা অ্যাকাউন্টটি বিজ্ঞাপন ডেটা হাব UI-তে উত্স ক্ষেত্রের একটি তালিকা প্রদর্শন করতে ব্যবহৃত হয়।
বিন্যাস service- some-number @gcp-sa-datafusion.iam.gserviceaccount.com
প্রয়োজনীয় অ্যাক্সেস
BigQuery Data Viewer
roles/bigquery.dataViewer
ডেটা উৎস এবং গন্তব্য প্রকল্পের নির্দিষ্ট ডেটাসেটের জন্য
Storage Admin
roles/storage.admin
ডেটা সোর্স প্রকল্পের জন্য, বা একটি ডেডিকেটেড স্টোরেজ বালতি
ডেটাপ্রোক পরিষেবা অ্যাকাউন্ট
উদ্দেশ্য ডেটাপ্রোক পরিষেবা অ্যাকাউন্টটি পটভূমিতে ডেটা পাইপলাইন চালানোর জন্য দায়ী।
বিন্যাস 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
গন্তব্য প্রকল্পের জন্য

ক্লাউড স্টোরেজ

ডেটাফিউশন পরিষেবা অ্যাকাউন্ট
উদ্দেশ্য ডেটাফিউশন পরিষেবা অ্যাকাউন্টটি বিজ্ঞাপন ডেটা হাব UI-তে উত্স ক্ষেত্রের একটি তালিকা প্রদর্শন করতে ব্যবহৃত হয়।
বিন্যাস 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
ডেটা সোর্স প্রকল্পের জন্য, বা একটি ডেডিকেটেড স্টোরেজ বালতি
ডেটাপ্রোক পরিষেবা অ্যাকাউন্ট
উদ্দেশ্য ডেটাপ্রোক পরিষেবা অ্যাকাউন্টটি পটভূমিতে ডেটা পাইপলাইন চালানোর জন্য দায়ী।
বিন্যাস 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 হ্যাশিং ব্যবহার করে আপলোড করতে হবে।
  • ইনপুট ক্ষেত্রগুলি অবশ্যই স্ট্রিং হিসাবে ফর্ম্যাট করা উচিত৷ উদাহরণস্বরূপ, আপনি যদি Base16 এনকোডিং ফাংশন ( TO_HEX ) এর সাথে BigQuery-এর SHA256 হ্যাশ ফাংশন ব্যবহার করেন তবে নিম্নলিখিত রূপান্তরটি ব্যবহার করুন: TO_HEX(SHA256(user_data))
  • UPDM বেস16 এবং বেস64 উভয় এনকোডিং সমর্থন করে। আপনার বিজ্ঞাপন ডেটা হাব কোয়েরিতে ব্যবহৃত ডিকোডিংয়ের সাথে আপনাকে আপনার প্রথম-পক্ষের ডেটার এনকোডিং সারিবদ্ধ করতে হবে। আপনি যদি আপনার প্রথম-পক্ষের ডেটা এনকোডিং পরিবর্তন করেন, তাহলে একই বেস থেকে ডিকোড করতে আপনাকে অবশ্যই আপনার বিজ্ঞাপন ডেটা হাব কোয়েরি আপডেট করতে হবে। নিম্নলিখিত উদাহরণ বেস16 এনকোডিং ব্যবহার করে।

ইউজার আইডি

  • সরল পাঠ্য
  • হ্যাশিং: কোনোটিই নয়

ইমেইল

  • অগ্রণী এবং পিছনের হোয়াইটস্পেসগুলি সরান৷
  • ছোট হাতের সব অক্ষর
  • সমস্ত ইমেল ঠিকানার জন্য একটি ডোমেন নাম অন্তর্ভুক্ত করুন, যেমন gmail.com বা hotmail.co.jp
  • উচ্চারণগুলি সরান-উদাহরণস্বরূপ, è, é, ê, বা ë থেকে e পরিবর্তন করুন
  • gmail.com এবং googlemail.com ইমেল ঠিকানাগুলিতে ডোমেন নামের আগে থাকা সমস্ত সময়কাল (.) সরান
  • হ্যাশিং: বেস16 এনকোডেড SHA256

বৈধ: TO_HEX(SHA256("jeffersonloveshiking@gmail.com"))

অবৈধ: TO_HEX(SHA256("JéffersonLôvesHiking@gmail.com"))

ফোন

  • স্ট্রিপ হোয়াইটস্পেস
  • E.164 ফরম্যাটে বিন্যাস—উদাহরণস্বরূপ, US উদাহরণ: +14155552671, UK উদাহরণ: +442071838750
  • দেশের কোডের আগে "+" ছাড়া সব বিশেষ অক্ষর সরান
  • হ্যাশিং: বেস16 এনকোডেড SHA256

বৈধ: TO_HEX(SHA256("+18005550101"))

অবৈধ: TO_HEX(SHA256("(800) 555-0101"))

প্রথম নাম

  • স্ট্রিপ হোয়াইটস্পেস
  • ছোট হাতের সব অক্ষর
  • সমস্ত উপসর্গ সরান-উদাহরণস্বরূপ Mrs., Mr., Ms., Dr.
  • উচ্চারণ মুছে ফেলবেন না —উদাহরণস্বরূপ, è, é, ê, বা ë
  • হ্যাশিং: বেস16 এনকোডেড SHA256

বৈধ: TO_HEX(SHA256("daní"))

অবৈধ: TO_HEX(SHA256("Daní"))

পদবি

  • স্ট্রিপ হোয়াইটস্পেস
  • ছোট হাতের সব অক্ষর
  • সমস্ত প্রত্যয় সরান-উদাহরণস্বরূপ Jr., Sr., 2nd, 3rd, II, III, PHD, MD
  • উচ্চারণ মুছে ফেলবেন না —উদাহরণস্বরূপ, è, é, ê, বা ë
  • হ্যাশিং: বেস16 এনকোডেড SHA256

বৈধ: TO_HEX(SHA256("delacruz"))

অবৈধ: TO_HEX(SHA256("de la Cruz, Jr."))

দেশ

  • আপনার সমস্ত গ্রাহক ডেটা একই দেশের হলেও দেশের কোড অন্তর্ভুক্ত করুন
  • দেশের ডেটা হ্যাশ করবেন না
  • ISO 3166-1 alpha-2 দেশের কোড ব্যবহার করুন
  • হ্যাশিং: কোনোটিই নয়

বৈধ: US

অবৈধ: United States of America বা USA

জিপ কোড

  • জিপ কোড ডেটা হ্যাশ করবেন না
  • মার্কিন এবং আন্তর্জাতিক উভয় জিপ এবং পোস্টাল কোড অনুমোদিত
  • মার্কিন যুক্তরাষ্ট্রের জন্য:
    • 5 সংখ্যার কোড অনুমোদিত—উদাহরণস্বরূপ, 94043
    • 5টি সংখ্যার পরে 4 সংখ্যার এক্সটেনশনও অনুমোদিত—উদাহরণস্বরূপ, 94043-1351 বা 940431351
  • অন্য সব দেশের জন্য:
    • কোন বিন্যাসের প্রয়োজন নেই (ছোট হাতের অক্ষর বা স্পেস এবং বিশেষ অক্ষর সরানোর দরকার নেই)
    • পোস্টাল কোড এক্সটেনশন ছেড়ে দিন
  • হ্যাশিং: কোনোটিই নয়

হ্যাশ যাচাইকরণ এবং ডেটা এনকোডিং

আপনার ডেটা সঠিকভাবে ফর্ম্যাট করা হয়েছে তা নিশ্চিত করতে আপনি নিম্নলিখিত হ্যাশ যাচাইকরণ স্ক্রিপ্টগুলি ব্যবহার করতে পারেন।

জাভাস্ক্রিপ্ট

ভিত্তি16

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

বেস64

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

পাইথন

ভিত্তি16

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

বেস64

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

যাও

ভিত্তি16

/*
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")
}

বেস64

/*
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")
}

জাভা

ভিত্তি16

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");
  }
}

বেস64

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");
}
}

এসকিউএল

ভিত্তি16

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

বেস64

/*
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-এ অ্যাক্সেস দেওয়ার জন্য আবেদন করুন-এ ক্লিক করুন।

    ক্লাউড স্টোরেজ

    ক্লাউড স্টোরেজে অ্যাক্সেস দেওয়ার জন্য আবেদন করুন ক্লিক করুন।

    মাইএসকিউএল

    আপনার MySQL ডাটাবেসের অবস্থান, পোর্ট, ব্যবহারকারীর নাম এবং পাসওয়ার্ড লিখুন।

    S3

    আপনার Amazon S3 গোপন অ্যাক্সেস কী লিখুন।

    পোস্টগ্রেএসকিউএল

    আপনার PostgreSQL ডাটাবেসের অবস্থান, পোর্ট, ব্যবহারকারীর নাম, পাসওয়ার্ড এবং ডাটাবেস লিখুন।

    রেডশিফ্ট

    আপনার Redshift ডাটাবেসের অবস্থান, পোর্ট, ব্যবহারকারীর নাম, পাসওয়ার্ড এবং ডাটাবেস লিখুন।

    sFTP

    আপনার sFTP সার্ভারের অবস্থান, ব্যবহারকারীর নাম এবং পাসওয়ার্ড লিখুন।

    স্নোফ্লেক

    আপনার স্নোফ্লেক অ্যাকাউন্ট শনাক্তকারী, ব্যবহারকারীর নাম এবং পাসওয়ার্ড লিখুন।

  4. আপনার ডেটা উত্স কনফিগার করুন, তারপরে ক্লিক করুন:

    BigQuery

    আমদানি করতে BigQuery টেবিলটি নির্বাচন করুন।

    ক্লাউড স্টোরেজ

    gsutil পাথ লিখুন, যেমন gs://my-bucket/folder/ এবং আপনার ফাইলের বিন্যাস নির্বাচন করুন।

    যদি আপনি এই সংস্থানটি প্রথমবার সংযুক্ত করেন তবে একটি সতর্কতা প্রদর্শিত হবে৷ অ্যাক্সেস মঞ্জুর করতে প্রয়োগ করুন ক্লিক করুন, তারপর পরবর্তী ক্লিক করুন। দ্রষ্টব্য: প্রাসঙ্গিক বাকেটের জন্য storage.buckets.setIamPolicy অর্পণ করার অনুমতি সহ আপনার একটি ভূমিকা থাকতে হবে৷

    মাইএসকিউএল

    আপনি যে MySQL ডাটাবেস এবং টেবিলটি ব্যবহার করতে চান তা নির্বাচন করুন।

    S3

    হোস্ট ঠিকানার সাপেক্ষে আপনি যে ফাইলটি আপলোড করতে চান তাতে URI লিখুন।

    পোস্টগ্রেএসকিউএল

    PostgreSQL স্কিমা এবং টেবিল (বা ভিউ) নাম লিখুন।

    রেডশিফ্ট

    Redshift স্কিমা এবং টেবিল (বা ভিউ) নাম লিখুন। ডিফল্টরূপে, Redshift ডাটাবেস অবস্থান URL ব্যবহার করে যা এই টেমপ্লেট অনুসরণ করে: cluster-identifier.account-number.aws-region.redshift.amazonaws.com

    sFTP

    ফাইল পাথ এবং নাম লিখুন, / PATH / FILENAME .csv হিসাবে ফর্ম্যাট করা হয়েছে৷

    স্নোফ্লেক

    আপনি যে স্নোফ্লেক ডাটাবেস, স্কিমা এবং টেবিল (বা ভিউ) ব্যবহার করতে চান তা লিখুন।

  5. একটি মধ্যস্থতাকারী গন্তব্য হিসাবে ব্যবহার করার জন্য একটি BigQuery ডেটাসেট নির্বাচন করুন, তারপর পরবর্তী ক্লিক করুন৷ এই ধাপটি নিশ্চিত করে যে আপনার ডেটা সঠিকভাবে ফরম্যাট করা হয়েছে
  6. ঐচ্ছিক: আপনার ডেটার বিন্যাস পরিবর্তন করুন। ট্রান্সফরমেশনের মধ্যে রয়েছে কম্পিউট হ্যাশ, লোয়ার/আপার কেস ফরম্যাটিং এবং মার্জিং/স্পিটিং ফিল্ড।
    1. Action > > Transform এ ক্লিক করুন।
    2. পপ আপ হওয়া প্যানেলে, রূপান্তর যোগ করুন বা অন্য রূপান্তর যোগ করুন ক্লিক করুন
    3. ড্রপডাউন মেনু থেকে একটি রূপান্তর প্রকার চয়ন করুন এবং প্রয়োজনীয়তা লিখুন।
    4. সংরক্ষণ করুন ক্লিক করুন.
  7. অন্তত একটি যোগ কী চয়ন করুন এবং আপনি যে ক্ষেত্রগুলি ব্যবহার করবেন তা ম্যাপ করুন৷ বিজ্ঞাপন ডেটা হাব স্বয়ংক্রিয়ভাবে অভিন্ন নাম সহ ক্ষেত্রগুলিকে ম্যাপ করবে, একটি দ্বারা নির্দেশিত। যেকোনো প্রয়োজনীয় সম্পাদনা করুন, তারপর Next এ ক্লিক করুন।
  8. একটি সময়সূচী সেট করুন:
    1. আপনার সংযোগের নাম দিন।
    2. পূর্ববর্তী ধাপে আপনার নির্বাচিত ডেটাসেটে কত ঘন ঘন ডেটা আমদানি করা হবে তা নির্দেশ করে একটি ফ্রিকোয়েন্সি সেট করুন। প্রতিটি রান গন্তব্য টেবিলে ডেটা ওভাররাইট করবে।
    3. আপনি কিভাবে ব্যবহারকারী আইডি সংঘর্ষগুলি পরিচালনা করতে চান তা নির্দিষ্ট করুন৷ আপনি বিদ্যমান মিল রাখা বা নতুন ডেটা দিয়ে ওভাররাইট করার মধ্যে বেছে নিতে পারেন।
  9. শেষ ক্লিক করুন. ম্যাচ টেবিলগুলি সাধারণত তৈরি হওয়ার 12 ঘন্টা পরে জিজ্ঞাসা করার জন্য প্রস্তুত থাকে।

সংযোগ বিবরণ দেখুন

সংযোগ বিশদ পৃষ্ঠা আপনাকে একটি প্রদত্ত সংযোগের সাম্প্রতিক রান এবং ত্রুটি সম্পর্কে তথ্য দেয়। একটি নির্দিষ্ট সংযোগের জন্য বিশদ দেখতে:

  1. সংযোগে ক্লিক করুন।
  2. সংযোগটির বিশদ বিবরণ দেখতে তার নামে ক্লিক করুন।
  3. আপনি এখন সংযোগের বিবরণ এবং সাম্প্রতিক রানগুলি দেখতে পারেন৷ প্রতিটি দুটি সম্ভাব্য ধরণের ত্রুটি দেখায়: সংযোগ-স্তর (সংযোগটি চালানো হয়নি) এবং সারি-স্তরের ত্রুটিগুলি (একটি সারি আমদানি করা হয়নি)৷
    1. একটি ব্যর্থ অবস্থা নির্দেশ করে যে পুরো সংযোগটি চালানো ব্যর্থ হয়েছে (যেমন পরিষেবা অ্যাকাউন্ট অনুমতি সমস্যা)। কোন ত্রুটিগুলি সংযোগটিকে প্রভাবিত করেছে তা দেখতে ত্রুটির স্থিতিতে ক্লিক করুন৷
    2. একটি সম্পূর্ণ স্থিতি নির্দেশ করে যে সংযোগটি সফলভাবে চলছে৷ যাইহোক, এখনও সারি-স্তরের ত্রুটি থাকতে পারে — "ত্রুটির সাথে সারি" কলামে একটি অ-শূন্য মান দ্বারা নির্দেশিত। কোন রেকর্ড ব্যর্থ হয়েছে সে সম্পর্কে আরও জানতে মানটিতে ক্লিক করুন।

একটি সংযোগ সম্পাদনা করুন

নিম্নলিখিত বিবরণ সম্পাদনা করা যেতে পারে:

  • সংযোগের নাম
  • সময়সূচী
  • গন্তব্য টেবিল
  • ফিল্ড ম্যাপিং

ডেটা উৎস সম্পাদনা সমর্থিত নয়। একটি ডেটা উত্স পরিবর্তন করতে, একটি নতুন সংযোগ তৈরি করুন এবং পুরানোটি মুছুন৷

সংযোগের বিবরণ সম্পাদনা করতে:

  1. সংযোগে ক্লিক করুন।
  2. আপনি যে সংযোগটি সম্পাদনা করতে চান তার নামে ক্লিক করুন।
  3. আপনি যে বিবরণগুলি পরিবর্তন করতে চান তা সম্পাদনা করুন:
    • সংযোগের নাম: সম্পাদনা ক্লিক করুন, নতুন নাম লিখুন, তারপর এন্টার টিপুন।
    • সময়সূচী: সম্পাদনা ক্লিক করুন, নতুন সময়সূচী সেট করুন, তারপর সংরক্ষণ করুন ক্লিক করুন।
    • গন্তব্য টেবিল: সম্পাদনা ক্লিক করুন, নতুন গন্তব্যের নাম লিখুন, তারপর সংরক্ষণ করুন ক্লিক করুন।
    • ফিল্ড ম্যাপিং: ক্লিক করুন, ক্ষেত্রগুলিতে পরিবর্তন করুন, তারপর Save-এ ক্লিক করুন।
  4. ক্লিক করুন.

ক্যোয়ারী মিলেছে ডেটা

ম্যাচ টেবিল জিজ্ঞাসা

যখন আপনার মিল টেবিলে গোপনীয়তা পরীক্ষাগুলি সন্তুষ্ট করার জন্য পর্যাপ্ত ডেটা থাকে, আপনি টেবিলের বিরুদ্ধে প্রশ্নগুলি চালানোর জন্য প্রস্তুত।

প্রথম পক্ষের ডেটার (1PD) মূল টেবিলটি my_data দ্বারা প্রতিনিধিত্ব করা হয়। এতে ব্যক্তিগতভাবে সনাক্তযোগ্য তথ্য (PII) এবং নন-PII ডেটা উভয়ই অন্তর্ভুক্ত রয়েছে। মূল সারণী ব্যবহার করে আপনার প্রতিবেদনগুলিকে আরও অন্তর্দৃষ্টি দিয়ে উন্নত করতে পারে, কারণ এটি একটি মিল টেবিলের সাথে তুলনা করলে স্কোপের সমস্ত 1PD ডেটা উপস্থাপন করে৷

একটি user_id ফিল্ড ধারণকারী বিজ্ঞাপন ডেটা হাব স্কিমার প্রতিটি টেবিলের সাথে একটি ম্যাচ টেবিল থাকে। উদাহরণস্বরূপ, adh.google_ads_impressions টেবিলের জন্য, Ads Data Hub এছাড়াও adh.google_ads_impressions_updm নামে একটি ম্যাচ টেবিল তৈরি করে যাতে আপনার ব্যবহারকারী আইডি রয়েছে। নীতি-বিচ্ছিন্ন টেবিলের জন্য আলাদা ম্যাচ টেবিল তৈরি করা হয়। উদাহরণ স্বরূপ, adh.google_ads_impressions_policy_isolated_youtube টেবিলের জন্য, বিজ্ঞাপন ডেটা হাব আপনার ব্যবহারকারী আইডি সমন্বিত adh.google_ads_impressions_policy_isolated_youtube_updm নামে একটি মিল টেবিল তৈরি করে।

এই সারণীগুলিতে মূল টেবিলে উপলব্ধ ব্যবহারকারীদের একটি উপসেট রয়েছে, যেখানে user_id এর সাথে একটি মিল রয়েছে। উদাহরণস্বরূপ, যদি মূল টেবিলে ব্যবহারকারী A এবং ব্যবহারকারী B এর ডেটা থাকে, কিন্তু শুধুমাত্র ব্যবহারকারী A মিলে যায়, তাহলে ব্যবহারকারী B ম্যাচ টেবিলে থাকবে না।

মিল টেবিলে customer_data_user_id নামে একটি অতিরিক্ত কলাম রয়েছে, যা ব্যবহারকারী শনাক্তকারীকে BYTES হিসাবে সংরক্ষণ করে।

আপনার প্রশ্ন লেখার সময় ক্ষেত্রের ধরন বিবেচনা করা গুরুত্বপূর্ণ। SQL তুলনা অপারেটররা আশা করে যে আপনি যে লিটারেলগুলি তুলনা করছেন তা একই ধরণের। আপনার প্রথম পক্ষের ডেটা টেবিলে user_id কীভাবে সংরক্ষিত হয় তার উপর নির্ভর করে, ডেটা মেলানোর আগে আপনাকে টেবিলের মানগুলিকে এনকোড করতে হতে পারে। সফল ম্যাচের জন্য আপনাকে BYTES-এ আপনার জয়েন কী কাস্ট করতে হবে:

JOIN ON
  adh.google_ads_impressions_updm.customer_data_user_id = CAST(my_data.user_id AS BYTES)

অতিরিক্তভাবে, SQL-এ স্ট্রিং তুলনাগুলি ক্যাপিটালাইজেশনের জন্য সংবেদনশীল, তাই আপনাকে আপনার তুলনার উভয় পাশে স্ট্রিংগুলিকে এনকোড করতে হতে পারে যাতে সেগুলি সঠিকভাবে তুলনা করা যায়।

নমুনা প্রশ্ন

মিলে যাওয়া ব্যবহারকারীদের গণনা করুন

এই কোয়েরিটি আপনার Google বিজ্ঞাপন ইম্প্রেশন টেবিলে মিলে যাওয়া ব্যবহারকারীর সংখ্যা গণনা করে।

/* Count matched users in Google Ads impressions table */

SELECT COUNT(DISTINCT user_id)
FROM adh.google_ads_impressions_updm

ম্যাচের হার গণনা করুন

সমস্ত ব্যবহারকারী মিলে যাওয়ার জন্য যোগ্য নয়। উদাহরণস্বরূপ, সাইন-আউট ব্যবহারকারী, শিশু এবং অসম্মত ব্যবহারকারীরা UPDM-এর মাধ্যমে মেলে না। আপনি আরো সঠিক 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 বিজ্ঞাপন ডেটাতে যোগ দিন

এই ক্যোয়ারীটি দেখায় কিভাবে Google Ads ডেটার সাথে প্রথম পক্ষের ডেটাতে যোগ দিতে হয়:

/* Join first-party data with Google Ads data. The customer_data_user_id field
contains your ID as BYTES. You need to cast your join key into BYTES for
successful matches. */

SELECT
  inventory_type,
  COUNT(*) AS impressions
FROM
  adh.yt_reserve_impressions_updm AS google_data_imp
LEFT JOIN
  `my_data`
ON
  google_data_imp.customer_data_user_id = CAST(my_data.user_id AS BYTES)
GROUP BY
  inventory_type

UPDM FAQs

UPDM সম্পর্কিত প্রায়শই জিজ্ঞাসিত প্রশ্নগুলির একটি তালিকার জন্য, UPDM FAQs দেখুন৷

,

ব্যবহারকারী-প্রদত্ত ডেটা ম্যাচিং (UPDM) প্রথম-পক্ষের ডেটাতে যোগ দেয় যা আপনি কোনও ব্যবহারকারী সম্পর্কে সংগ্রহ করেছেন—যেমন আপনার ওয়েবসাইট, অ্যাপস বা ফিজিক্যাল স্টোর থেকে তথ্য—Google-এর মালিকানাধীন এবং পরিচালিত ডেটা সহ সমস্ত Google বিজ্ঞাপন ডেটা জুড়ে একই ব্যবহারকারীর সাইন-ইন করা কার্যকলাপের সাথে। এর মধ্যে রয়েছে Google Marketing Platform (GMP) পণ্যের মাধ্যমে কেনা ডেটা, উদাহরণস্বরূপ, YouTube Display & Video 360 ব্যবহার করে কেনা। অন্যান্য GMP পণ্য যা Google-এর মালিকানাধীন এবং পরিচালিত নয় তা সমর্থিত নয়।

ব্যবহারকারী-প্রদত্ত ডেটা ম্যাচিংয়ের জন্য যোগ্য হতে, বিজ্ঞাপন ইভেন্টটিকে অবশ্যই Google বিজ্ঞাপন ডেটাতে সাইন-ইন করা ব্যবহারকারীর সাথে লিঙ্ক করতে হবে।

এই দস্তাবেজটি ব্যবহারকারী-প্রদত্ত ডেটা ম্যাচিং বৈশিষ্ট্য বর্ণনা করে এবং সেটআপ এবং ব্যবহারের নির্দেশিকা প্রদান করে।

সংযোগ ট্যাব ওভারভিউ

মূল্যবান বিজ্ঞাপন অন্তর্দৃষ্টি অর্জনের জন্য প্রায়শই একাধিক উত্স থেকে ডেটা একসাথে সেলাই করা প্রয়োজন। এই ডেটা পাইপলাইন সমস্যার জন্য আপনার নিজস্ব সমাধান তৈরির জন্য উল্লেখযোগ্য সময় বিনিয়োগ এবং প্রকৌশল বিনিয়োগের প্রয়োজন। এডিএস ডেটা হাবের সংযোগ পৃষ্ঠাগুলি বিগকোয়ারিতে আপনার বিজ্ঞাপনের ডেটা আমদানি, রূপান্তর এবং মেলে দেওয়ার জন্য একটি ধাপে ধাপে, গাইডেড ইন্টারফেস সরবরাহ করে এই প্রক্রিয়াটিকে প্রবাহিত করে, যাতে আপনি এটি আপনার বিজ্ঞাপন ডেটা হাব ক্যোয়ারীগুলিতে বা বিগকোয়ারি থেকে পড়া অন্য কোনও পণ্য ব্যবহার করতে পারেন। প্রথম পক্ষের ডেটা দিয়ে আপনার প্রশ্নগুলি সমৃদ্ধ করা আরও সমৃদ্ধ গ্রাহকের অভিজ্ঞতা সরবরাহ করতে পারে এবং শিল্প-বিস্তৃত বিজ্ঞাপন-ট্র্যাকিং পরিবর্তনের জন্য আরও প্রতিরোধী।

সংযোগ পৃষ্ঠাটি এমন সরঞ্জামগুলির সাথে নির্মিত যা আপনাকে গোপনীয়তা কেন্দ্রিক পদ্ধতিতে অংশীদারদের সাথে ব্যক্তিগতভাবে সনাক্তযোগ্য তথ্য (পিআইআই) এনক্রিপ্ট করতে এবং ভাগ করতে দেয়। কোন কলামগুলিতে পিআইআই রয়েছে তা নির্বাচন করার পরে, এডিএস ডেটা হাব ডেটা এনক্রিপ্ট করে, এটি নিশ্চিত করে যে আপনার প্রথম পক্ষের ডেটা কেবল রফতানি বা এটি করার অনুমতি রয়েছে এমন লোকদের দ্বারা পড়তে পারে। আপনার পরিমাপ বা অ্যাক্টিভেশন ব্যবহারের ক্ষেত্রে কোন প্রথম পক্ষের ডেটা প্রয়োজন তা জানা কঠিন হতে পারে, সুতরাং বিজ্ঞাপন ডেটা হাব পূর্বনির্ধারিত ব্যবহারের ক্ষেত্রে একটি বিস্তৃত তালিকা সরবরাহ করে, তারপরে আপনার ডেটা উত্তোলন, রূপান্তর এবং লোড করার পুরো অভিজ্ঞতার মধ্য দিয়ে আপনাকে গাইড করে। একাধিক ধরণের সংযোগ তৈরি করতে পারে, এই দস্তাবেজটি ধরে নিয়েছে যে আপনি ব্যবহারকারী-সরবরাহিত ডেটা ম্যাচের জন্য সংযোগ পৃষ্ঠাটি ব্যবহার করছেন।

সমর্থিত প্রথম পক্ষের ডেটা উত্সগুলি

আপনি এই ডেটা উত্সগুলি থেকে ডেটা আমদানি করতে পারেন:

  • বিগকিউরি
  • ক্লাউড স্টোরেজ
  • সুরক্ষিত এফটিপি (এসএফটিপি)
  • স্নোফ্লেক
  • মাইএসকিউএল
  • পোস্টগ্রেএসকিউএল
  • আমাজন রেডশিফ্ট
  • আমাজন S3

যেহেতু ব্যবহারকারী-সরবরাহিত ডেটা ম্যাচিং কেবল গুগলের মালিকানাধীন এবং সাইন ইন ব্যবহারকারীদের জন্য পরিচালিত ইনভেন্টরিতে উপলব্ধ, তাই এটি তৃতীয় পক্ষের কুকিজের আসন্ন অবমূল্যায়নের দ্বারা প্রভাবিত হয় না। যেহেতু এটি তৃতীয় পক্ষের ডেটার চেয়ে শিল্পের পরিবর্তনের বিরুদ্ধে আরও প্রতিরোধী, এটি আরও সমৃদ্ধ অন্তর্দৃষ্টি সরবরাহ করতে পারে, যা উচ্চতর গ্রাহকের ব্যস্ততার দিকে পরিচালিত করতে পারে।

পরিভাষা শিখুন

  • ব্যবহারকারী-সরবরাহিত ডেটা সংযোগ: আপনার ডেটা আমদানি ও মেলে, ডেটা আমদানি নির্ধারণ, ডেটা রূপান্তর করতে এবং ব্যবহারকারী আইডি ব্যবহার করে আপনার বিজ্ঞাপন ডেটা মেলে একটি ব্যবহারকারী-সরবরাহিত ডেটা সংযোগ সেট আপ করুন। বিজ্ঞাপন ইভেন্টটি অবশ্যই গুগল বিজ্ঞাপন ডেটাতে স্বাক্ষরিত-ইন ব্যবহারকারীর সাথে যুক্ত হতে হবে। একাধিক গুগল ক্লাউড প্রকল্প প্রয়োজন।
  • প্রথম পক্ষের ডেটা সংযোগ: ডেটা আমদানির সময়সূচী নির্ধারণ করতে এবং আপডেটম এর উন্নত বৈশিষ্ট্যগুলি ছাড়াই ডেটা রূপান্তর করতে ডেটা প্রস্তুতি সরঞ্জাম হিসাবে একটি প্রথম পক্ষের ডেটা সংযোগ সেট আপ করুন। এই ধরণের সংযোগের জন্য কেবল একটি গুগল ক্লাউড প্রকল্প প্রয়োজন।
  • ডেটা উত্স: একটি সংযুক্ত পণ্য, আমদানি করা ফাইল বা তৃতীয় পক্ষের সংহতকরণ-উদাহরণস্বরূপ, বিগকুয়ারি।
  • গন্তব্য: একটি ব্যবহারের কেস; সাধারণত একটি গুগল পণ্য বা পণ্য বৈশিষ্ট্য, যেখানে আমদানি করা ডেটা সক্রিয় করা হয়-উদাহরণস্বরূপ, এডিএস ডেটা হাব ব্যবহারকারী-সরবরাহিত ডেটা ম্যাচিং।
  • অ্যাডমিন প্রকল্প: গুগল ক্লাউড প্রকল্প যা এর কাঁচা ফর্ম্যাটে আপনার মালিকানাধীন বিজ্ঞাপনের ডেটা ধারণ করে।
  • আউটপুট ডেটাসেট: বিগকুয়ারি ডেটাসেট যা বিজ্ঞাপন ডেটা হাব লিখেছেন। ডিফল্টরূপে, এটি আপনার অ্যাডমিন প্রকল্পের অধীনে একটি ডেটাসেট। এটিকে অন্য গুগল ক্লাউড প্রকল্পে পরিবর্তন করতে, পরিষেবা অ্যাকাউন্টগুলি কনফিগার করুন

প্রক্রিয়া সংক্ষিপ্তসার

  1. ডেটা ইনজেশন এবং ম্যাচিংয়ের সেটআপ
    • আপনি আপনার অ্যাডমিন প্রকল্পে পরিষেবা অ্যাকাউন্টগুলিতে প্রয়োজনীয় অনুমতিগুলি মঞ্জুর করেন। ডেটা ইনজেশন সেট আপ দেখুন।
  2. প্রথম পক্ষের ডেটা ইনজেশন এবং ম্যাচিং
    • আপনি আপনার বিগকোয়ারি ডেটাসেটে আপনার প্রথম পক্ষের ডেটা ফর্ম্যাট এবং আপলোড করেন। সহজ সেটআপের জন্য, আপনার প্রশাসক প্রকল্পটি ব্যবহার করুন। তবে, আপনি নিজের মালিকানাধীন যে কোনও বিগকুয়ারি ডেটাসেট ব্যবহার করতে পারেন।
    • আপনি একটি সংযোগ তৈরি করে এবং আমদানি শিডিউল সেট করে ডেটা-ম্যাচিং অনুরোধ শুরু করেন।
    • গুগল আপনার প্রকল্প এবং গুগলের মালিকানাধীন ডেটার মধ্যে গুগলের ব্যবহারকারী আইডিযুক্ত ডেটা এবং ম্যাচের টেবিলগুলি তৈরি এবং আপডেট করতে ব্যবহারকারী-সরবরাহিত ডেটা হ্যাশডের মধ্যে যোগ দেয়।
    • প্রথম পক্ষের ডেটা ইনজেস্ট দেখুন
  3. ম্যাচড ডেটার উপর ভিত্তি করে বিজ্ঞাপন ডেটা হাবের চলমান প্রশ্নগুলি
    • আপনি ম্যাচের টেবিলগুলির বিপরীতে ক্যোয়ারীগুলি চালান একইভাবে আপনি বিজ্ঞাপন ডেটা হাবের নিয়মিত ক্যোয়ারী চালান। ক্যোয়ারী ম্যাচড ডেটা দেখুন।

গোপনীয়তার প্রয়োজনীয়তা সম্পর্কে জানুন

গ্রাহকের ডেটা সংগ্রহ করা

ব্যবহারকারী-সরবরাহিত ডেটা ম্যাচিং ব্যবহার করার সময়, আপনাকে অবশ্যই প্রথম পক্ষের ডেটা আপলোড করতে হবে। এটি আপনার ওয়েবসাইট, অ্যাপ্লিকেশন, শারীরিক স্টোর বা কোনও গ্রাহক সরাসরি আপনার সাথে ভাগ করে নেওয়া কোনও তথ্য থেকে আপনি সংগৃহীত তথ্য হতে পারে।

আপনাকে অবশ্যই:

  • আপনার গোপনীয়তা নীতিটি আপনার পক্ষ থেকে পরিষেবাগুলি সম্পাদনের জন্য তৃতীয় পক্ষের সাথে গ্রাহকের ডেটা ভাগ করে নেওয়ার বিষয়টি নিশ্চিত করুন এবং আইনত প্রয়োজনীয় যেখানে আপনি এই জাতীয় ভাগ করে নেওয়ার জন্য সম্মতি পান
  • গ্রাহকের ডেটা আপলোড করতে কেবল গুগলের অনুমোদিত এপিআই বা ইন্টারফেস ব্যবহার করুন
  • প্রয়োগ হতে পারে এমন কোনও স্ব-নিয়ন্ত্রক বা শিল্প কোড সহ সমস্ত প্রযোজ্য আইন এবং বিধি মেনে চলুন

প্রথম পক্ষের সম্মতি স্বীকৃতি

আপনি এডিএস ডেটা হাবটিতে আপনার প্রথম পক্ষের ডেটা ব্যবহার করতে সক্ষম হবেন তা নিশ্চিত করার জন্য, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনি ইইএ শেষ ব্যবহারকারীদের কাছ থেকে ইইউ ব্যবহারকারী সম্মতি নীতি এবং এডিএস ডেটা হাব নীতি অনুসারে গুগলের সাথে ডেটা ভাগ করে নেওয়ার জন্য যথাযথ সম্মতি পেয়েছেন। এই প্রয়োজনীয়তা প্রতিটি এডিএস ডেটা হাব অ্যাকাউন্টে প্রযোজ্য এবং প্রতিবার নতুন প্রথম পক্ষের ডেটা আপলোড করার সময় অবশ্যই আপডেট করা উচিত। যে কোনও ব্যবহারকারী পুরো অ্যাকাউন্টের পক্ষে এই স্বীকৃতি জানাতে পারেন।

নোট করুন যে একই গুগল পরিষেবা ক্যোয়ারী বিধিগুলি যা বিশ্লেষণ প্রশ্নের ক্ষেত্রে প্রযোজ্য তাও আপডেটম প্রশ্নের ক্ষেত্রেও প্রযোজ্য। উদাহরণস্বরূপ, আপনি যখন কোনও ম্যাচের টেবিল তৈরি করেন তখন আপনি EEA এর ব্যবহারকারীদের উপর ক্রস-পরিষেবা অনুসন্ধান চালাতে পারবেন না।

কীভাবে বিজ্ঞাপন ডেটা হাবের সম্মতি স্বীকার করতে হয় তা শিখতে, ইউরোপীয় অর্থনৈতিক অঞ্চলের সম্মতির প্রয়োজনীয়তাগুলি দেখুন।

ডেটা সাইজ

শেষ ব্যবহারকারীর গোপনীয়তা রক্ষা করতে, ব্যবহারকারী-সরবরাহিত ডেটা ম্যাচিং আপনার ডেটার আকার সম্পর্কিত এই প্রয়োজনীয়তাগুলি কার্যকর করে:

  • আপনাকে অবশ্যই আপনার ব্যবহারকারীর তালিকায় কমপক্ষে 1000 রেকর্ড আপলোড করতে হবে।
  • আপনার ম্যাচ টেবিলের প্রতিটি সফল আপডেটে অবশ্যই ন্যূনতম ম্যাচ করা ব্যবহারকারীদের একটি ন্যূনতম সংখ্যক অন্তর্ভুক্ত থাকতে হবে। এই আচরণটি পার্থক্য চেকগুলির অনুরূপ।
  • আপনার তালিকা অবশ্যই সর্বাধিক সংখ্যক রেকর্ডের বেশি হবে না। সর্বাধিক ডেটা সীমা সম্পর্কে জানতে, আপনার গুগল প্রতিনিধির কাছে পৌঁছান।

ডেটা ইনজেশন সেট আপ করুন

আপনি শুরু করার আগে, ডেটা সংযোগগুলি তৈরি করতে আপনাকে আপনার বিজ্ঞাপন ডেটা হাব অ্যাকাউন্টটি কনফিগার করতে হবে, যা আপনি কীভাবে আপনার ডেটা ম্যাচিং পাইপলাইনটি স্থাপন করবেন। আপনার কেবল একবার এই পদক্ষেপগুলি সম্পাদন করতে হবে।

সংযোগ পৃষ্ঠা থেকে, আপডেটম সক্ষমকরণ পর্যায়ে অ্যাকাউন্ট সেটআপ উইজার্ডটি খুলতে শুরু শুরু সেটআপ ক্লিক করুন।

সংযোগগুলিতে যান

বিগকিউরি এবং ক্লাউড স্টোরেজের জন্য কী অনুমতি দেওয়া হয়?

আপনি যদি বিগকিউরি বা ক্লাউড স্টোরেজ সহ ব্যবহারের জন্য আপডেটম সেট আপ করেন তবে এডিএস ডেটা হাব পরিষেবা অ্যাকাউন্টগুলিতে মঞ্জুর করা অনুমতিগুলি বুঝতে এই রেফারেন্সটি ব্যবহার করুন।

বিগকিউরি

ডেটাফিউশন পরিষেবা অ্যাকাউন্ট
উদ্দেশ্য ডেটাফিউশন পরিষেবা অ্যাকাউন্টটি বিজ্ঞাপন ডেটা হাব ইউআইতে উত্স ক্ষেত্রগুলির একটি তালিকা প্রদর্শন করতে ব্যবহৃত হয়।
বিন্যাস service- some-number @gcp-sa-datafusion.iam.gserviceaccount.com
প্রয়োজনীয় অ্যাক্সেস
BigQuery Data Viewer
roles/bigquery.dataViewer
ডেটা উত্স এবং গন্তব্য প্রকল্পগুলিতে নির্দিষ্ট ডেটাসেটের জন্য
Storage Admin
roles/storage.admin
ডেটা উত্স প্রকল্প, বা একটি উত্সর্গীকৃত স্টোরেজ বালতি জন্য
ডেটাপ্রোক পরিষেবা অ্যাকাউন্ট
উদ্দেশ্য ডেটাপ্রোক পরিষেবা অ্যাকাউন্ট পটভূমিতে ডেটা পাইপলাইনগুলি চালানোর জন্য দায়বদ্ধ।
বিন্যাস 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
উভয় ডেটা উত্স এবং গন্তব্য প্রকল্প, বা একটি উত্সর্গীকৃত স্টোরেজ বালতি জন্য
আপডেটম পরিষেবা অ্যাকাউন্ট
উদ্দেশ্য UDDM পরিষেবা অ্যাকাউন্টটি ম্যাচিং কাজটি চালাতে ব্যবহৃত হয়।
বিন্যাস service- some-number @gcp-sa-adsdataconnector.iam.gserviceaccount.com
প্রয়োজনীয় অ্যাক্সেস
BigQuery Data Viewer
roles/bigquery.dataViewer
গন্তব্য প্রকল্পের জন্য
BigQuery Job User
roles/bigquery.jobUser
গন্তব্য প্রকল্পের জন্য

ক্লাউড স্টোরেজ

ডেটাফিউশন পরিষেবা অ্যাকাউন্ট
উদ্দেশ্য ডেটাফিউশন পরিষেবা অ্যাকাউন্টটি বিজ্ঞাপন ডেটা হাব ইউআইতে উত্স ক্ষেত্রগুলির একটি তালিকা প্রদর্শন করতে ব্যবহৃত হয়।
বিন্যাস 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
ডেটা উত্স প্রকল্প, বা একটি উত্সর্গীকৃত স্টোরেজ বালতি জন্য
ডেটাপ্রোক পরিষেবা অ্যাকাউন্ট
উদ্দেশ্য ডেটাপ্রোক পরিষেবা অ্যাকাউন্ট পটভূমিতে ডেটা পাইপলাইনগুলি চালানোর জন্য দায়বদ্ধ।
বিন্যাস some-number -compute@developer.gserviceaccount.com
প্রয়োজনীয় অ্যাক্সেস
Storage Admin
roles/storage.admin
উভয় ডেটা উত্স এবং গন্তব্য প্রকল্প, বা একটি উত্সর্গীকৃত স্টোরেজ বালতি জন্য
BigQuery Job User
roles/bigquery.jobUser
গন্তব্য প্রকল্পের জন্য
আপডেটম পরিষেবা অ্যাকাউন্ট
উদ্দেশ্য UDDM পরিষেবা অ্যাকাউন্টটি ম্যাচিং কাজটি চালাতে ব্যবহৃত হয়।
বিন্যাস service- some-number @gcp-sa-adsdataconnector.iam.gserviceaccount.com
প্রয়োজনীয় অ্যাক্সেস
BigQuery Data Viewer
roles/bigquery.dataViewer
গন্তব্য প্রকল্পের জন্য
BigQuery Job User
roles/bigquery.jobUser
গন্তব্য প্রকল্পের জন্য

অন্যান্য তথ্য উত্স

অন্যান্য ডেটা উত্সগুলির জন্য প্রয়োজনীয় নয়

প্রথম পক্ষের ডেটা ইনজেস্ট এবং মেলে

ইনপুট জন্য ফর্ম্যাট ডেটা

আপনার ডেটা অবশ্যই সঠিকভাবে মেলে এই ফর্ম্যাটিং প্রয়োজনীয়তা মেনে চলতে হবে:

  • নিম্নলিখিত ইনপুট ক্ষেত্রের বিবরণগুলিতে যেখানে নির্দেশিত হয়েছে, আপনাকে অবশ্যই SHA256 হ্যাশিং ব্যবহার করে আপলোড করতে হবে।
  • ইনপুট ক্ষেত্রগুলি অবশ্যই স্ট্রিং হিসাবে ফর্ম্যাট করা উচিত। উদাহরণস্বরূপ, আপনি যদি বেস 16 এনকোডিং ফাংশন ( TO_HEX ) এর সাথে বিগকুইয়ের SHA256 হ্যাশ ফাংশন ব্যবহার করছেন তবে নিম্নলিখিত রূপান্তরটি ব্যবহার করুন: TO_HEX(SHA256(user_data))
  • ইউপিডিএম বেস 16 এবং বেস 64 এনকোডিং উভয়কেই সমর্থন করে। আপনার বিজ্ঞাপন ডেটা হাব ক্যোয়ারিতে ব্যবহৃত ডিকোডিংয়ের সাথে আপনাকে অবশ্যই আপনার প্রথম পক্ষের ডেটার এনকোডিং সারিবদ্ধ করতে হবে। আপনি যদি আপনার প্রথম পক্ষের ডেটা এনকোডিং পরিবর্তন করেন তবে আপনাকে অবশ্যই একই বেস থেকে ডিকোড করতে আপনার বিজ্ঞাপন ডেটা হাব ক্যোয়ারী আপডেট করতে হবে। নিম্নলিখিত উদাহরণগুলি বেস 16 এনকোডিং ব্যবহার করে।

ইউজার আইডি

  • সরল পাঠ্য
  • হ্যাশিং: কিছুই নেই

ইমেইল

  • শীর্ষস্থানীয় এবং ট্রেলিং হোয়াইটস্পেসগুলি সরান
  • সমস্ত অক্ষর ছোট
  • সমস্ত ইমেল ঠিকানার জন্য একটি ডোমেন নাম অন্তর্ভুক্ত করুন, যেমন Gmail.com বা hotmail.co.jp
  • অ্যাকসেন্টগুলি সরান - উদাহরণস্বরূপ, è, é, ê, বা ë থেকে ই পরিবর্তন করুন
  • gmail.com এবং googlemail.com ইমেল ঠিকানাগুলিতে ডোমেন নামের পূর্বে থাকা সমস্ত পিরিয়ড (।) সরান
  • হ্যাশিং: বেস 16 এনকোডেড SHA256

বৈধ: TO_HEX(SHA256("jeffersonloveshiking@gmail.com"))

অবৈধ: TO_HEX(SHA256("JéffersonLôvesHiking@gmail.com"))

ফোন

  • স্ট্রিপ হোয়াইটস্পেস
  • E.164 ফর্ম্যাটে ফর্ম্যাট - উদাহরণস্বরূপ, আমাদের উদাহরণ: +14155552671, যুক্তরাজ্যের উদাহরণ: +442071838750
  • দেশের কোডের আগে "+" ব্যতীত সমস্ত বিশেষ অক্ষর সরান
  • হ্যাশিং: বেস 16 এনকোডেড SHA256

বৈধ: TO_HEX(SHA256("+18005550101"))

অবৈধ: TO_HEX(SHA256("(800) 555-0101"))

প্রথম নাম

  • স্ট্রিপ হোয়াইটস্পেস
  • সমস্ত অক্ষর ছোট
  • সমস্ত উপসর্গগুলি সরান উদাহরণ-উদাহরণ মিসেস, মিঃ, মিসেস, ড।
  • অ্যাকসেন্টগুলি সরিয়ে ফেলবেন না - উদাহরণস্বরূপ, è, é, ê, বা ë
  • হ্যাশিং: বেস 16 এনকোডেড SHA256

বৈধ: TO_HEX(SHA256("daní"))

অবৈধ: TO_HEX(SHA256("Daní"))

পদবি

  • স্ট্রিপ হোয়াইটস্পেস
  • সমস্ত অক্ষর ছোট
  • সমস্ত প্রত্যয় সরান, উদাহরণ জুনিয়র, সিনিয়র, ২ য়, তৃতীয়, II, III, পিএইচডি, এমডি
  • অ্যাকসেন্টগুলি সরিয়ে ফেলবেন না - উদাহরণস্বরূপ, è, é, ê, বা ë
  • হ্যাশিং: বেস 16 এনকোডেড SHA256

বৈধ: TO_HEX(SHA256("delacruz"))

অবৈধ: TO_HEX(SHA256("de la Cruz, Jr."))

দেশ

  • আপনার গ্রাহকের সমস্ত ডেটা একই দেশ থেকে থাকলেও দেশ কোড অন্তর্ভুক্ত করুন
  • দেশের ডেটা হ্যাশ করবেন না
  • আইএসও 3166-1 আলফা -2 দেশ কোড ব্যবহার করুন
  • হ্যাশিং: কিছুই নেই

বৈধ: US

অবৈধ: United States of America বা USA

জিপ কোড

  • জিপ কোড ডেটা হ্যাশ করবেন না
  • মার্কিন যুক্তরাষ্ট্র এবং আন্তর্জাতিক জিপ এবং ডাক কোড উভয়ই অনুমোদিত
  • আমাদের জন্য:
    • 5 ডিজিট কোড অনুমোদিত - উদাহরণস্বরূপ, 94043
    • 4 অঙ্কের এক্সটেনশন অনুসরণ করে 5 টি অঙ্কেরও অনুমোদিত-উদাহরণস্বরূপ, 94043-1351 বা 940431351
  • অন্যান্য সমস্ত দেশের জন্য:
    • কোনও ফর্ম্যাটিংয়ের প্রয়োজন নেই (ছোট হাতের প্রয়োজন, বা স্পেস এবং বিশেষ অক্ষরগুলি অপসারণের প্রয়োজন নেই)
    • ডাক কোড এক্সটেনশনগুলি ছেড়ে দিন
  • হ্যাশিং: কিছুই নেই

হ্যাশ বৈধতা এবং ডেটা এনকোডিং

আপনার ডেটা সঠিকভাবে ফর্ম্যাট করা হয়েছে তা নিশ্চিত করতে আপনি নিম্নলিখিত হ্যাশ বৈধতা স্ক্রিপ্টগুলি ব্যবহার করতে পারেন।

জাভাস্ক্রিপ্ট

বেস 16

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

বেস64

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

পাইথন

বেস 16

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

বেস64

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

যাও

বেস 16

/*
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")
}

বেস64

/*
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")
}

জাভা

বেস 16

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");
  }
}

বেস64

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");
}
}

এসকিউএল

বেস 16

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

বেস64

/*
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. প্রমাণীকরণ, যদি অনুরোধ করা হয়, তবে পরবর্তী ক্লিক করুন:

    বিগকিউরি

    বিগকোয়ারিতে অ্যাক্সেস গ্রান্ট করতে আবেদন ক্লিক করুন।

    ক্লাউড স্টোরেজ

    ক্লাউড স্টোরেজ অ্যাক্সেস গ্রান্ট করতে প্রয়োগ ক্লিক করুন।

    মাইএসকিউএল

    আপনার মাইএসকিউএল ডাটাবেস অবস্থান, পোর্ট, ব্যবহারকারীর নাম এবং পাসওয়ার্ড লিখুন।

    S3

    আপনার অ্যামাজন এস 3 সিক্রেট অ্যাক্সেস কী লিখুন।

    পোস্টগ্রেএসকিউএল

    আপনার পোস্টগ্রেসকিউএল ডাটাবেস অবস্থান, পোর্ট, ব্যবহারকারীর নাম, পাসওয়ার্ড এবং ডাটাবেস প্রবেশ করান।

    রেডশিফ্ট

    আপনার রেডশিফ্ট ডাটাবেসের অবস্থান, পোর্ট, ব্যবহারকারীর নাম, পাসওয়ার্ড এবং ডাটাবেস লিখুন।

    এসএফটিপি

    আপনার এসএফটিপি সার্ভারের অবস্থান, ব্যবহারকারীর নাম এবং পাসওয়ার্ড লিখুন।

    স্নোফ্লেক

    আপনার স্নোফ্লেক অ্যাকাউন্ট সনাক্তকারী, ব্যবহারকারীর নাম এবং পাসওয়ার্ড লিখুন।

  4. আপনার ডেটা উত্স কনফিগার করুন, তারপরে পরবর্তী ক্লিক করুন:

    বিগকিউরি

    আমদানি করতে বিগকুয়ারি টেবিলটি নির্বাচন করুন।

    ক্লাউড স্টোরেজ

    জিএসটিএল পাথ লিখুন, যেমন gs://my-bucket/folder/ এবং আপনার ফাইলের ফর্ম্যাটিং নির্বাচন করুন।

    আপনি যদি এই প্রথমবারের মতো এই সংস্থানটি সংযুক্ত করেছেন তবে একটি সতর্কতা উপস্থিত হয়। গ্রান্ট অ্যাক্সেস করতে প্রয়োগ ক্লিক করুন, তারপরে পরবর্তী ক্লিক করুন। দ্রষ্টব্য: প্রাসঙ্গিক বালতিটির জন্য storage.buckets.setIamPolicy ডেলিগেট করার অনুমতি নিয়ে আপনার অবশ্যই একটি ভূমিকা থাকতে হবে।

    মাইএসকিউএল

    আপনি যে মাইএসকিউএল ডাটাবেস এবং টেবিলটি ব্যবহার করতে চান তা নির্বাচন করুন।

    S3

    আপনি যে ফাইলটি আপলোড করতে চান তা হোস্টের ঠিকানার সাথে তুলনামূলকভাবে ইউআরআই প্রবেশ করুন।

    পোস্টগ্রেএসকিউএল

    পোস্টগ্রেসকিউএল স্কিমা এবং টেবিল (বা দেখুন) নাম লিখুন।

    রেডশিফ্ট

    রেডশিফ্ট স্কিমা এবং টেবিল (বা দেখুন) নাম লিখুন। ডিফল্টরূপে, রেডশিফ্ট ডাটাবেসের অবস্থানের ইউআরএলগুলি ব্যবহার করে যা এই টেম্পলেটটি অনুসরণ করে: cluster-identifier.account-number.aws-region.redshift.amazonaws.com শনাক্তকারী.অ্যাক্ট-নাম্বার.এডব্লিউএস-অঞ্চল.আরডশিফ্ট.আমাজোনউস.কম।

    এসএফটিপি

    ফাইল পাথ এবং নাম লিখুন, ফর্ম্যাট করা / PATH / FILENAME .csv

    স্নোফ্লেক

    আপনি যে স্নোফ্লেক ডাটাবেস, স্কিমা এবং টেবিল (বা দেখুন) ব্যবহার করতে চান তা প্রবেশ করান।

  5. মধ্যস্থতাকারী গন্তব্য হিসাবে ব্যবহার করতে একটি বিগকোয়ারি ডেটাসেট নির্বাচন করুন, তারপরে পরবর্তী ক্লিক করুন। এই পদক্ষেপটি নিশ্চিত করে যে আপনার ডেটা সঠিকভাবে ফর্ম্যাট করা হয়েছে
  6. Ption চ্ছিক: আপনার ডেটার ফর্ম্যাটটি সংশোধন করুন। রূপান্তরগুলির মধ্যে গণনা হ্যাশ, নিম্ন/উচ্চতর কেস ফর্ম্যাটিং এবং মার্জিং/বিভাজন ক্ষেত্র অন্তর্ভুক্ত রয়েছে।
    1. অ্যাকশন > > রূপান্তর ক্লিক করুন।
    2. পপ আপ হওয়া প্যানেলে, রূপান্তর যুক্ত করুন ক্লিক করুন বা অন্য রূপান্তর যুক্ত করুন
    3. ড্রপডাউন মেনু থেকে একটি রূপান্তর প্রকার চয়ন করুন এবং প্রয়োজনীয়তা লিখুন।
    4. সংরক্ষণ করুন ক্লিক করুন.
  7. কমপক্ষে একটি যোগদান কী চয়ন করুন এবং আপনি যে ক্ষেত্রগুলি ব্যবহার করবেন তা মানচিত্র করুন। এডিএস ডেটা হাব স্বয়ংক্রিয়ভাবে একটি দ্বারা নির্দেশিত অভিন্ন নাম সহ ক্ষেত্রগুলি মানচিত্র করবে। কোনও প্রয়োজনীয় সম্পাদনা করুন, তারপরে পরবর্তী ক্লিক করুন।
  8. একটি সময়সূচী সেট করুন:
    1. আপনার সংযোগের নাম দিন।
    2. আপনি পূর্ববর্তী পদক্ষেপে নির্বাচিত ডেটাসেটে কতবার ডেটা আমদানি করা হবে তা নির্ধারণ করে একটি ফ্রিকোয়েন্সি সেট করুন। প্রতিটি রান গন্তব্য সারণীতে ডেটা ওভাররাইট করবে।
    3. আপনি কীভাবে ব্যবহারকারীর আইডি সংঘর্ষগুলি পরিচালনা করতে চান তা নির্দিষ্ট করুন। আপনি বিদ্যমান ম্যাচ রাখার বা নতুন ডেটা সহ ওভাররাইটিংয়ের মধ্যে চয়ন করতে পারেন।
  9. শেষ ক্লিক করুন. ম্যাচ টেবিলগুলি সাধারণত সেগুলি তৈরি হওয়ার 12 ঘন্টা পরে অনুসন্ধান করতে প্রস্তুত।

সংযোগ বিবরণ দেখুন

সংযোগের বিশদ পৃষ্ঠাটি আপনাকে প্রদত্ত সংযোগের সাম্প্রতিক রান এবং ত্রুটিগুলির তথ্য দেয়। একটি নির্দিষ্ট সংযোগের জন্য বিশদ দেখতে:

  1. সংযোগে ক্লিক করুন।
  2. এর বিশদটি দেখতে সংযোগের নামটি ক্লিক করুন।
  3. আপনি এখন সংযোগের বিশদ এবং সাম্প্রতিক রান দেখতে পারেন। প্রতিটি দুটি সম্ভাব্য ত্রুটি দেখায়: সংযোগ-স্তর (সংযোগটি চালিত হয়নি) এবং সারি-স্তরের ত্রুটিগুলি (একটি সারি আমদানি করা হয়নি)।
    1. একটি ব্যর্থ স্থিতি ইঙ্গিত দেয় যে পুরো সংযোগটি চালাতে ব্যর্থ হয়েছে (যেমন পরিষেবা অ্যাকাউন্টের অনুমতি ইস্যু)। কোন ত্রুটিগুলি সংযোগকে প্রভাবিত করেছে তা দেখতে ত্রুটির স্থিতিতে ক্লিক করুন।
    2. একটি সম্পূর্ণ স্থিতি ইঙ্গিত দেয় যে সংযোগটি সফলভাবে চলেছিল। তবে, এখনও সারি-স্তরের ত্রুটি থাকতে পারে-"ত্রুটিযুক্ত সারি" কলামে একটি শূন্য মান দ্বারা নির্দেশিত। কোন রেকর্ডগুলি ব্যর্থ হয়েছে সে সম্পর্কে আরও জানতে মানটি ক্লিক করুন।

একটি সংযোগ সম্পাদনা করুন

নিম্নলিখিত বিবরণ সম্পাদনা করা যেতে পারে:

  • সংযোগের নাম
  • সময়সূচী
  • গন্তব্য টেবিল
  • ফিল্ড ম্যাপিং

ডেটা উত্স সম্পাদনা করা সমর্থিত নয়। কোনও ডেটা উত্স পরিবর্তন করতে, একটি নতুন সংযোগ তৈরি করুন এবং পুরানোটিকে মুছুন।

সংযোগের বিশদ সম্পাদনা করতে:

  1. সংযোগে ক্লিক করুন।
  2. আপনি যে সংযোগটি সম্পাদনা করতে চান তার নাম ক্লিক করুন।
  3. আপনি যে বিশদটি পরিবর্তন করতে চান তা সম্পাদনা করুন:
    • সংযোগের নাম: সম্পাদনা ক্লিক করুন, নতুন নাম লিখুন, তারপরে এন্টার টিপুন।
    • সময়সূচী: সম্পাদনা ক্লিক করুন, নতুন সময়সূচী সেট করুন, তারপরে সংরক্ষণ ক্লিক করুন।
    • গন্তব্য সারণী: সম্পাদনা ক্লিক করুন, নতুন গন্তব্য নাম লিখুন, তারপরে সংরক্ষণ ক্লিক করুন।
    • ফিল্ড ম্যাপিং: ক্লিক করুন, ক্ষেত্রগুলিতে পরিবর্তন করুন, তারপরে সংরক্ষণ ক্লিক করুন।
  4. ক্লিক করুন।

ক্যোয়ারী ম্যাচড ডেটা

ম্যাচের টেবিলগুলি জিজ্ঞাসা করুন

যখন আপনার ম্যাচের টেবিলগুলিতে গোপনীয়তা চেকগুলি পূরণ করার জন্য পর্যাপ্ত ডেটা থাকে, আপনি টেবিলগুলির বিরুদ্ধে প্রশ্ন চালাতে প্রস্তুত।

প্রথম পক্ষের ডেটা (1 পিডি) এর মূল টেবিলটি my_data দ্বারা প্রতিনিধিত্ব করা হয়। এর মধ্যে ব্যক্তিগতভাবে সনাক্তযোগ্য তথ্য (পিআইআই) এবং নন-পিআইআই উভয় ডেটা অন্তর্ভুক্ত রয়েছে। মূল টেবিলটি ব্যবহার করা আরও অন্তর্দৃষ্টি দিয়ে আপনার প্রতিবেদনগুলিকে উন্নত করতে পারে, কারণ এটি কোনও ম্যাচের টেবিলের সাথে তুলনা করার সময় স্কোপের সমস্ত 1 পিডি ডেটা উপস্থাপন করে।

ADS ডেটা হাব স্কিমার প্রতিটি টেবিল একটি user_id ক্ষেত্রযুক্ত একটি ম্যাচ টেবিল সহ রয়েছে। উদাহরণস্বরূপ, adh.google_ads_impressions টেবিলের জন্য, এডিএস ডেটা হাব আপনার ব্যবহারকারীর আইডি সমন্বিত adh.google_ads_impressions_updm নামে একটি ম্যাচ টেবিলও তৈরি করে। নীতি-বিচ্ছিন্ন টেবিলগুলির জন্য পৃথক ম্যাচের টেবিলগুলি তৈরি করা হয়। উদাহরণস্বরূপ, adh.google_ads_impressions_policy_isolated_youtube টেবিলের জন্য, এডিএস ডেটা হাব এছাড়াও adh.google_ads_impressions_policy_isolated_youtube_updm আপনার ব্যবহারকারী আইডি সমন্বিত একটি ম্যাচ টেবিল তৈরি করে।

এই টেবিলগুলিতে মূল টেবিলগুলিতে উপলব্ধ ব্যবহারকারীদের একটি উপসেট রয়েছে, যেখানে user_id -তে একটি মিল রয়েছে। উদাহরণস্বরূপ, যদি মূল টেবিলটিতে ব্যবহারকারী এ এবং ব্যবহারকারী বি এর জন্য ডেটা থাকে তবে কেবল ব্যবহারকারী এ এর ​​সাথে মিলে যায়, তবে ব্যবহারকারী বি ম্যাচের টেবিলে থাকবে না।

ম্যাচের টেবিলগুলিতে customer_data_user_id নামে একটি অতিরিক্ত কলাম রয়েছে, যা ব্যবহারকারী সনাক্তকারীকে বাইট হিসাবে সঞ্চয় করে।

আপনার প্রশ্নগুলি লেখার সময় ক্ষেত্রের ধরণটি বিবেচনা করা গুরুত্বপূর্ণ। এসকিউএল তুলনা অপারেটররা আশা করে যে আপনি যে আক্ষরিক তুলনা করছেন সেগুলি একই ধরণের। আপনার প্রথম পক্ষের ডেটার সারণীতে কীভাবে user_id সংরক্ষণ করা হয় তার উপর নির্ভর করে আপনাকে ডেটা মেলে দেওয়ার আগে আপনাকে টেবিলের মানগুলি এনকোড করতে হতে পারে। সফল ম্যাচগুলির জন্য আপনাকে বাইটে আপনার যোগদানের কীটি কাস্ট করতে হবে:

JOIN ON
  adh.google_ads_impressions_updm.customer_data_user_id = CAST(my_data.user_id AS BYTES)

অতিরিক্তভাবে, এসকিউএল -এ স্ট্রিং তুলনাগুলি মূলধনের প্রতি সংবেদনশীল, সুতরাং আপনার তুলনার উভয় পক্ষের স্ট্রিংগুলি এনকোড করতে হবে যাতে তারা সঠিকভাবে তুলনা করা যায় তা নিশ্চিত করতে পারে।

নমুনা প্রশ্ন

গণনা ম্যাচ ব্যবহারকারীদের

এই ক্যোয়ারীটি আপনার গুগল বিজ্ঞাপনগুলি ইমপ্রেশন টেবিলের সাথে ম্যাচ করা ব্যবহারকারীদের সংখ্যা গণনা করে।

/* Count matched users in Google Ads impressions table */

SELECT COUNT(DISTINCT user_id)
FROM adh.google_ads_impressions_updm

ম্যাচের হার গণনা করুন

সমস্ত ব্যবহারকারী মিলের জন্য যোগ্য নয়। উদাহরণস্বরূপ, স্বাক্ষরিত ব্যবহারকারী, শিশু এবং অচেনা ব্যবহারকারীরা UDDM এর মাধ্যমে মেলে না। আপনি আরও সঠিক আপডেটম ম্যাচের হারগুলি গণনা করতে is_updm_eligible ফিল্ডটি ব্যবহার করতে পারেন। নোট করুন যে is_updm_eligible ক্ষেত্রটি 1 অক্টোবর, 2024 থেকে শুরু হয়েছিল you আপনি এই ক্ষেত্রটি সেই তারিখের আগে ম্যাচের হারগুলি গণনা করতে ব্যবহার করতে পারবেন না।

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

প্রথম পক্ষ এবং গুগল বিজ্ঞাপন ডেটা যোগদান করুন

এই ক্যোয়ারীটি দেখায় যে কীভাবে গুগল বিজ্ঞাপনের ডেটা সহ প্রথম পক্ষের ডেটাতে যোগদান করবেন:

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

ইউপিডিএম সম্পর্কিত FAQগুলির তালিকার জন্য, UDDM FAQs দেখুন।