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

ব্যবহারকারী-প্রদত্ত ডেটা ম্যাচিং (UPDM) আপনার ওয়েবসাইট, অ্যাপ বা ফিজিক্যাল স্টোরের তথ্যের মতো কোনো ব্যবহারকারী সম্পর্কে আপনার সংগ্রহ করা ফার্স্ট-পার্টি ডেটাকে, গুগলের মালিকানাধীন ও পরিচালিত ডেটা সহ সমস্ত গুগল বিজ্ঞাপন ডেটা জুড়ে সেই একই ব্যবহারকারীর সাইন-ইন করা কার্যকলাপের সাথে যুক্ত করে। এর মধ্যে গুগল মার্কেটিং প্ল্যাটফর্ম (GMP) প্রোডাক্টের মাধ্যমে কেনা ডেটাও অন্তর্ভুক্ত, যেমন ডিসপ্লে অ্যান্ড ভিডিও ৩৬০ ব্যবহার করে কেনা ইউটিউব। অন্যান্য GMP প্রোডাক্ট, যেগুলো গুগলের মালিকানাধীন ও পরিচালিত নয়, সেগুলো সমর্থিত নয়।

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

এই নথিতে ব্যবহারকারী-প্রদত্ত ডেটা মেলানোর বৈশিষ্ট্যটি বর্ণনা করা হয়েছে এবং এর সেটআপ ও ব্যবহার সম্পর্কে নির্দেশনা প্রদান করা হয়েছে।

সংযোগ ট্যাবের সংক্ষিপ্ত বিবরণ

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

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

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

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

  • বিগকোয়েরি
  • ক্লাউড স্টোরেজ
  • সুরক্ষিত এফটিপি (sFTP)
  • তুষারকণা
  • MySQL
  • পোস্টগ্রেসকিউএল
  • অ্যামাজন রেডশিফট
  • অ্যামাজন এস৩

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

পরিভাষাগুলো শিখুন

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

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

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

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

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

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

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

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

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

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

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

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

ডেটার আকার

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

  • আপনাকে আপনার ব্যবহারকারী তালিকায় কমপক্ষে ১,০০০টি রেকর্ড আপলোড করতে হবে।
  • আপনার ম্যাচ টেবিলের প্রতিটি সফল আপডেটে অবশ্যই ন্যূনতম সংখ্যক নতুনভাবে মেলানো ব্যবহারকারী অন্তর্ভুক্ত থাকতে হবে। এই আচরণটি পার্থক্য যাচাইয়ের (difference checks ) অনুরূপ।
  • আপনার তালিকায় রেকর্ডের সর্বোচ্চ সংখ্যা অতিক্রম করা যাবে না। সর্বোচ্চ ডেটা সীমা সম্পর্কে জানতে আপনার গুগল প্রতিনিধির সাথে যোগাযোগ করুন।

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

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

কানেকশনস পেজ থেকে, UPDM এনাবলমেন্ট পর্যায়ে অ্যাকাউন্ট সেটআপ উইজার্ডটি খোলার জন্য 'বিগিন সেটআপ'- এ ক্লিক করুন।

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

BigQuery এবং Cloud Storage-এর জন্য কী কী অনুমতি দেওয়া হয়?

আপনি যদি BigQuery বা Cloud Storage-এর সাথে ব্যবহারের জন্য UPDM সেট আপ করেন, তাহলে Ads Data Hub পরিষেবা অ্যাকাউন্টগুলিকে যে অনুমতিগুলি দেওয়া হয় তা বোঝার জন্য এই রেফারেন্সটি ব্যবহার করুন।

বিগকোয়েরি

ডেটাফিউশন পরিষেবা অ্যাকাউন্ট
উদ্দেশ্য অ্যাডস ডেটা হাব 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 সার্ভিস অ্যাকাউন্টটি ব্যবহৃত হয়।
ফর্ম্যাট 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 সার্ভিস অ্যাকাউন্টটি ব্যবহৃত হয়।
ফর্ম্যাট 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 ইমেল ঠিকানাগুলিতে ডোমেইন নামের আগে থাকা সমস্ত ডট (.) চিহ্ন মুছে ফেলুন।
  • হ্যাশিং: বেস১৬ এনকোডেড SHA256

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

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

ফোন

  • ফাঁকা স্থান বাদ দিন
  • E.164 ফরম্যাটে ফর্ম্যাট করুন—উদাহরণস্বরূপ, মার্কিন উদাহরণ: +14155552671, ব্রিটিশ উদাহরণ: +442071838750
  • দেশের কোডের আগে থাকা "+" চিহ্নটি ছাড়া বাকি সব বিশেষ অক্ষর মুছে ফেলুন।
  • হ্যাশিং: বেস১৬ এনকোডেড SHA256

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

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

প্রথম নাম

  • ফাঁকা স্থান বাদ দিন
  • সমস্ত অক্ষর ছোট হাতের অক্ষরে লিখুন
  • সমস্ত উপসর্গ বাদ দিন—যেমন মিসেস, মিস্টার, এমএস, ডক্টর।
  • স্বরচিহ্নগুলো মুছবেন না —যেমন, è, é, ê, বা ë
  • হ্যাশিং: বেস১৬ এনকোডেড SHA256

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

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

শেষ নাম

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

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

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

দেশ

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

বৈধ: US

ভুল: United States of America বা USA

জিপ কোড

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

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

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

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

বেস১৬

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

বেস৬৪

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

বেস৬৪

"""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': 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")
}

বেস৬৪

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

বেস৬৪

package updm.hashing;

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

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

/**
* Example of the hashing algorithm.
*
* <p>Sample hashes:
*
* <ul>
*   <li>Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
*   <li>Phone '+18005551212': YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
*   <li>First name 'John': ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
*   <li>Last name 'Doe': eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
* </ul>
*/
public final class HashExample {

private HashExample() {}

public static String hash(String token) {
  // Normalizes and hashes the input token using SHA-256 and Base64 encoding.
  String formattedToken = token.toLowerCase().strip();

  byte[] hash;
  try {
    hash = MessageDigest.getInstance("SHA-256").digest(formattedToken.getBytes(UTF_8));
  } catch (NoSuchAlgorithmException e) {
    throw new IllegalStateException("SHA-256 not supported", e);
  }

  return Base64.getEncoder().encodeToString(hash);
}

public static void printHash(String token) {
  // Calculates and prints the hash for the given token.
  System.out.printf("Hash: \"%s\"\t(Token: %s)\n", hash(token), token);
}

public static void main(String[] args) {
  // Executes hash calculations and prints results for sample tokens.
  printHash("test@gmail.com");
  printHash("+18005551212");
  printHash("John");
  printHash("Doe");
}
}

SQL

বেস১৬

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

The following code uses Google Standard SQL and can be run on BigQuery to generate match tables from unhashed data.

Sample hashes:

  - Email 'test@gmail.com': 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`;

বেস৬৪

/*
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. অনুরোধ করা হলে প্রমাণীকরণ করুন, তারপর 'পরবর্তী' (Next) বোতামে ক্লিক করুন।

    বিগকোয়েরি

    BigQuery-তে অ্যাক্সেস দেওয়ার জন্য 'Apply'-তে ক্লিক করুন।

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

    ক্লাউড স্টোরেজে অ্যাক্সেস দেওয়ার জন্য 'Apply'-তে ক্লিক করুন।

    MySQL

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

    এস৩

    আপনার অ্যামাজন এস৩ গোপন অ্যাক্সেস কী প্রবেশ করান।

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

    আপনার PostgreSQL ডাটাবেসের অবস্থান, পোর্ট, ইউজারনেম, পাসওয়ার্ড এবং ডাটাবেস প্রবেশ করান।

    রেডশিফট

    আপনার রেডশিফট ডেটাবেসের অবস্থান, পোর্ট, ইউজারনেম, পাসওয়ার্ড এবং ডেটাবেস প্রবেশ করান।

    sFTP

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

    তুষারকণা

    আপনার Snowflake অ্যাকাউন্ট আইডেন্টিফায়ার, ইউজারনেম এবং পাসওয়ার্ড লিখুন।

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

    বিগকোয়েরি

    ইম্পোর্ট করার জন্য BigQuery টেবিলটি নির্বাচন করুন।

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

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

    আপনি যদি প্রথমবারের মতো এই রিসোর্সটি সংযুক্ত করে থাকেন, তাহলে একটি সতর্কবার্তা প্রদর্শিত হবে। অ্যাক্সেস মঞ্জুর করতে 'Apply'-তে ক্লিক করুন, তারপর 'Next'-এ ক্লিক করুন। দ্রষ্টব্য: প্রাসঙ্গিক বাকেটের জন্য storage.buckets.setIamPolicy ডেলিগেট করার অনুমতিসহ আপনার একটি রোল থাকতে হবে।

    MySQL

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

    এস৩

    যে ফাইলটি আপলোড করতে চান, তার URI-টি হোস্ট অ্যাড্রেসের সাপেক্ষে প্রবেশ করান।

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

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

    রেডশিফট

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

    sFTP

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

    তুষারকণা

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

  5. মধ্যবর্তী গন্তব্য হিসেবে ব্যবহার করার জন্য একটি BigQuery ডেটাসেট নির্বাচন করুন, তারপর Next-এ ক্লিক করুন। এই ধাপটি নিশ্চিত করে যে আপনার ডেটা সঠিকভাবে ফরম্যাট করা হয়েছে
  6. ঐচ্ছিক: আপনার ডেটার ফরম্যাট পরিবর্তন করুন। রূপান্তরগুলোর মধ্যে রয়েছে হ্যাশ গণনা, ছোট/বড় হাতের অক্ষরে ফরম্যাটিং এবং ফিল্ড একত্রীকরণ/বিভাজন।
    1. অ্যাকশন > > রূপান্তর-এ ক্লিক করুন।
    2. যে প্যানেলটি পপ আপ হবে, সেখানে Add transformation অথবা Add another transformation-এ ক্লিক করুন।
    3. ড্রপডাউন মেনু থেকে রূপান্তরের ধরণ বেছে নিন এবং প্রয়োজনীয়তাগুলো লিখুন।
    4. সংরক্ষণ করুন- এ ক্লিক করুন।
  7. অন্তত একটি জয়েন কী (join key) বেছে নিন এবং যে ফিল্ডগুলো ব্যবহার করবেন তা ম্যাপ করুন। অ্যাডস ডেটা হাব (Ads Data Hub) স্বয়ংক্রিয়ভাবে একই নামের ফিল্ডগুলো ম্যাপ করবে, যা দ্বারা নির্দেশিত। প্রয়োজনীয় সম্পাদনা করুন, তারপর নেক্সট (Next) ক্লিক করুন।
  8. একটি সময়সূচী নির্ধারণ করুন:
    1. আপনার সংযোগের নাম দিন।
    2. একটি ফ্রিকোয়েন্সি সেট করুন, যা নির্ধারণ করবে পূর্ববর্তী ধাপে আপনার নির্বাচিত ডেটাসেটে কত ঘন ঘন ডেটা ইম্পোর্ট করা হবে। প্রতিটি রান গন্তব্য টেবিলের ডেটা ওভাররাইট করবে।
    3. ইউজার আইডি সংঘর্ষ কীভাবে পরিচালনা করা হবে তা নির্দিষ্ট করুন। আপনি বিদ্যমান মিলটি রাখা বা নতুন ডেটা দিয়ে ওভাররাইট করার মধ্যে যেকোনো একটি বেছে নিতে পারেন।
  9. ফিনিশ-এ ক্লিক করুন। ম্যাচ টেবিলগুলো সাধারণত তৈরি হওয়ার ১২ ঘণ্টা পর কোয়েরি করার জন্য প্রস্তুত হয়ে যায়।

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

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

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

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

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

  • সংযোগের নাম
  • সময়সূচী
  • গন্তব্য সারণী
  • ক্ষেত্র ম্যাপিং

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

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

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

কোয়েরি মিলে যাওয়া ডেটা

ম্যাচ টেবিলগুলো কোয়েরি করুন

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

ফার্স্ট-পার্টি ডেটার (1PD) মূল টেবিলটি my_data দ্বারা চিহ্নিত করা হয়। এতে ব্যক্তিগতভাবে শনাক্তযোগ্য তথ্য (PII) এবং ব্যক্তিগত শনাক্তকরণ-অযোগ্য তথ্য (non-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 নামে একটি অতিরিক্ত কলাম থাকে, যা ব্যবহারকারীর শনাক্তকারীকে বাইট হিসেবে সংরক্ষণ করে।

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

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

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

নমুনা কোয়েরি

মিলে যাওয়া ব্যবহারকারীদের সংখ্যা

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

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

ফার্স্ট-পার্টি এবং গুগল অ্যাডস ডেটা একত্রিত করুন

এই কোয়েরিটি দেখায় কিভাবে ফার্স্ট-পার্টি ডেটার সাথে গুগল অ্যাডস ডেটা যুক্ত করতে হয়:

/* 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 প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী দেখুন।