গ্রহণ করুন & সমষ্টিগত প্রতিবেদন সংরক্ষণ করুন

যখন বিজ্ঞাপন প্রযুক্তিগুলি পরিমাপ APIগুলিকে ট্রিগার করে ( অ্যাট্রিবিউশন রিপোর্টিং API বা ব্যক্তিগত একত্রীকরণ API ), তখন এনক্রিপ্ট করা রিপোর্টগুলি Chrome ব্রাউজার / ক্লায়েন্টের দিক থেকে বিজ্ঞাপন প্রযুক্তির রিপোর্টিং এন্ডপয়েন্টে পাঠানো হয় যা বিজ্ঞাপন প্রযুক্তির প্রতিবেদনের মূলের সাথে একটি .well-known URL। রিপোর্টিং এন্ডপয়েন্ট এনক্রিপ্ট করা রিপোর্ট সংগ্রহ করতে বিজ্ঞাপন প্রযুক্তি দ্বারা হোস্ট করা হয়।

AgS রিপোর্ট চিত্র

নিম্নলিখিত এপিআই প্রতি শেষ পয়েন্ট আছে:

  • ব্যক্তিগত সমষ্টি

    • ডিবাগ [reporting-origin]/.well-known/private-aggregation/debug/report-shared-storage
    • লাইভ [reporting-origin]/.well-known/private-aggregation/report-shared-storage or /.well-known/private-aggregation/report-protected-audience
  • অ্যাট্রিবিউশন রিপোর্টিং

    • ডিবাগ [reporting-origin]/.well-known/attribution-reporting/debug/report-aggregate-attribution
    • লাইভ [reporting-origin]/.well-known/attribution-reporting/report-aggregate-attribution

বিজ্ঞাপন প্রযুক্তিগুলি একটি পোস্ট কলের মাধ্যমে JSON ফর্ম্যাটে রিপোর্টগুলি পাবে৷ বিজ্ঞাপন প্রযুক্তিগুলি এই JSON রিপোর্টগুলি সংগ্রহ করবে এবং পরে সেগুলিকে AVRO ফর্ম্যাটে রূপান্তর করবে যা অ্যাগ্রিগেশন পরিষেবাতে ব্যবহৃত হয়৷ একবার রূপান্তরিত হলে, AVRO রিপোর্টগুলি পরবর্তী ব্যাচিংয়ের জন্য বিজ্ঞাপন প্রযুক্তির ক্লাউড স্টোরেজে সংরক্ষণ করা হয়।

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

প্রাপ্ত প্রতিবেদনগুলি নিম্নলিখিতগুলির মতো দেখায়:

প্রাইভেট অ্যাগ্রিগেশন API

  {
    "aggregation_coordinator_origin": "https://publickeyservice.msmt.aws.privacysandboxservices.com",
    "aggregation_service_payloads": [ {
        "key_id": "1a2baa3f-5d48-46cf-91f0-772633c12640",
        "payload": "8Cjr1s3FVkCYkjzBvyzJn14yardVjd5N4vLCA69LQAPbIkJ0B58hAqUGBCNXpvTjW9ZpIoZbCSiUOsUDuoA/S+tqVolLMkame6sWC07cfUmZcVsbU+La3pzTMtCgdtNc8MIWgD3C63CMw7rWroRlechewVUajvAYVK/0HJq0YyGrTiFZZm36zi0jjyHLAXKV8p1Lvy1d0o/wnBxC5oVo5BV6LPkxqQEcoYS2GyixUuht6wD0RzuH+BxxuH6vY/ynp2xDrnwftjvqwDUAxUWLFTunthM6BXZVxlrvOBim1h2dvPqWSyKZ5gafo+MgW9EM4SraavNM3XzZSCjdtAfSMJMrynSu2j0opyAq+9e1jq1xeYN00yZrJ0Y/GTI45IGjgCnVmvmuoI9ucW2SnXP31CQBwHqk4gtUgMsYGFSUYfhtnAQ/8TSbaXyS2LX+cQW87LqkvIraWw6o37O24VFBreFoFFXpu3IUeCZfji+Sr4/ykfZuHeMzQbBavyNnHKzPZlbLSXMiucx4/vWzYyOzHeIlbtupXVvbi40V2PieDShaSbjI266kGgFkeCk6z51AaAGebDPtRT1lhBpcoQ6JdF0Yp5VWSnyFARKFtCZ1aEBrlUlrEHLUQY/pFtmDxJQiicRz1YPjR8jRr3C7hlRhWwov0dMocqnMz5209hHGVZWSsaGc9kWjtxREW2ULXfoIwOGbX+WZsyFW2RhXksQPJ5fhyNc4ROkAzUthLb68gC5e0yZHvmLIAU4hcWe0UanJv+jRljn8PAPaJHKFUxQNJyBA7mTbn5mkpycxGrX6T3ZYdPHqvckqt9llJZWjr8NneizzZFRuJk423BDs38fXkvcTAsAckd2Zu0u2KC45WR93sN2/CWrqB7/QU9BsgNdonl/ehAWhU1LbcRRvBTcR9+0wL7vRL7cv5LG3+gRYRKsWI6U2nDSWp0cNpo9+HU0JNiifa5X0cguihqU2bSk6ABozgRtCZ7m+7eqWXMLSzBdmc1CPUoQppo6Wmf6ujdNqI6v2S6pDH781lph8Z2v7ZpxGdhVVPEL51cVn"
    } ],
    "debug_key": "1234",
    "shared_info": "{\"api\":\"shared-storage\",\"report_id\":\"05e3b948-cb8d-4404-be29-bfeac7ad9710\",\"reporting_origin\":\"https://privacy-sandbox-demos-dsp.dev\",\"scheduled_report_time\":\"1707784729\",\"version\":\"0.1\"}"
  }

অ্যাট্রিবিউশন রিপোর্টিং API

  {
    "aggregation_coordinator_origin": "https://publickeyservice.msmt.aws.privacysandboxservices.com",
    "aggregation_service_payloads": [ {
        "key_id": "2dee0f3f-2aee-4a4a-8238-9154ed3d6f72",
        "payload": "pHvTHhcxvNKaCmnLpvYQsXlJpiNRuFO5Zj1QqUlqgWPOfuoHLfiXiFjmpvY8a53/OYnS4bKwHwJReFcofldsu8E9BzTTJ3CEk+B7vbEjnDPaljhpIBMTuQXy3QHGK4slWR/yNZVm2uXRWR/DVVzXziBoTDjN7qaPstRoLKUUMdfY2u8oq4tnLY00Y+NDZttZ4wJvC7hPmvY3lqHjdl14JPD2ytZZ4NViYzno3WKdH/oZc0jhGK4zI38lAM0qpahF/B9yb4zOu7IRIjQpNx73P8naDyddxLldoVlW/qHpO04FguWymscvI/8i6NwUR6Kj8seRlWS0iIUhETt/ai3lilKUHUb+uz0YG2kxjoXq7Ldk+MP56nNl67ZRNi2YZ7bOGI/okYWoT/wt2uWPe/5xAEMmadxl0hQQrG7YXHRSD8rDnaVPXo+AKIxdg727yJeB1ZENZvovl/kIevdRAmdBe2h1U3J6Uz6psly/46fvjgkj5QD+kO2uaYirzvmwS19luJsN/Qvh/R3ZO4qlJIQI0nDJPWwUJ4ODpyVmj4a0xQp3t2ESEnf4EmY7+khn3xpF5+MwEWKES2ZeDf7SHalR99pvZA8G3Fr8M0PWFmT00cmKCBwpQgZyd3Eay70UlqdkbFEedxiCVWKNNOUz41m5KG/7K3aR+dYx57l57Wct4gOFQg3jiUEBJWrFIVCXf12BT5iz5rBQh1N1CUt2oCOhYL/sPuBl6OV5GWHSIj8FUdpoDolqKXWINXfE88MUijE2ghNRpJN25BXIErUQtO9wFQv7zotC6d2BIaF0x8AkKg/7yzBQRySX/FZP3H3lMkpOz9rQMV8DjZ2lz7nV4k6CFo8qhT6cpYJD7GpYl81xJbglNqcJt5Pe5YUHrdBMyAFsTh3yoJvYnhQib/0xVN/a93lbYccxsd0yi375n4Xz0i1HUoe2ps+WlU8XysAUA1agG936eshaY1anTtbJbrcoaH+BNSacKiq4saprgUGl4eDjaR/uBhvUnO52WkmAGon8De3EFMZ/kwpPBNSXi7/MIAMjotsSKBc19bfg"
    } ],
    "shared_info": "{\"api\":\"attribution-reporting\",\"attribution_destination\":\"https://privacy-sandbox-demos-shop.dev\",\"report_id\":\"5b052748-f5fb-4f14-b291-de03484ed59e\",\"reporting_origin\":\"https://privacy-sandbox-demos-dsp.dev\",\"scheduled_report_time\":\"1707786751\",\"source_registration_time\":\"0\",\"version\":\"0.1\"}",
    "source_debug_key": "123456789",
    "trigger_debug_key": "123456789"
  }

JSON কে AVRO রিপোর্টে রূপান্তর করুন

ব্যাচ করার সময়, সমষ্টিগত প্রতিবেদনগুলি AVRO বিন্যাসে হওয়া দরকার। একটি AVRO রিপোর্ট তৈরি করতে, আপনার AVRO স্কিমা (AVSC) রিপোর্টের প্রয়োজন হবে।

একটি নমুনা জাভাস্ক্রিপ্ট কোড অ্যাগ্রিগেশন সার্ভিস গিটহাব রিপোজিটরিতে পাওয়া যায়।

আপনার সমস্ত প্রতিবেদনের জন্য আপনার কাছে 1টি AVRO ফাইল থাকতে পারে বা একাধিক AVRO ফাইলে প্রতিবেদন বিভক্ত করতে পারেন৷ AVRO আকারের কোন সীমা নেই। পারফরম্যান্সের কারণে, আপনার ক্লাউড ইন্সট্যান্সের জন্য উপলব্ধ CPU এবং 1000 এর মধ্যে একটি সংখ্যায় AVRO ফাইলের সংখ্যা রাখার সুপারিশ করা হয়।

সমষ্টিগত প্রতিবেদনের জন্য নিম্নলিখিত AVRO স্কিমা। রিপোর্টের বিভিন্ন ক্ষেত্র হল payload , key_id এবং shared_info

  {
    "type": "record",
    "name": "AggregatableReport",
    "fields": [
      {
        "name": "payload",
        "type": "bytes"
      },
      {
        "name": "key_id",
        "type": "string"
      },
      {
        "name": "shared_info",
        "type": "string"
      }
    ]
  }
প্যারামিটার টাইপ বর্ণনা
payload বাইট পেলোডকে বেস64 ডিকোড করতে হবে এবং লাইভ/প্রোডাকশন রিপোর্টের জন্য payload থেকে একটি বাইট অ্যারেতে রূপান্তর করতে হবে।
debug_cleartext_payload বাইট পেলোডকে বেস64 ডিকোড করতে হবে এবং ডিবাগ রিপোর্টের জন্য debug_cleartext_payload থেকে একটি বাইট অ্যারেতে রূপান্তর করতে হবে।
key_id স্ট্রিং এটি রিপোর্টে পাওয়া key_id স্ট্রিং হবে। key_id একটি 128-বিট সার্বজনীন অনন্য শনাক্তকারীর অনুরূপ হবে।
shared_info স্ট্রিং এটি হবে রিপোর্ট শেয়ারড_ইনফো ফিল্ডে পাওয়া নন-টেম্পারড স্ট্রিং।

এটি একটি উদাহরণ রিপোর্ট json:

{ 
   "aggregation_coordinator_identifier": "aws-cloud",      
   "aggregation_service_payloads": [{ 
      "debug_cleartext_payload": "omRkYXhgaJldmFsdWVEAAAAgGZidWNrZXRQAAAAAAAAAAAAAAAAAAAFWW1vcGVyYX", 
      "key_id": "3c6e2850-edf6-4886-eb70-eb3f2a7a7596",
      "payload": "oapYz92Mb1yam9YQ2AnK8dduTt2RwFUSApGcKqXnG1q+aGXfJ5DGpSxMj0NxdZgp7Cq" 
   }],
   "debug_key": "1234", 
   "shared_info":
"{\"api\":\"shared-storage\",\"debug_mode\":\"enabled\",\"report_id\":\"b029b922-93e9-4d66-a8c6-8cdeec762aed\",\"reporting_origin\":\"https://privacy-sandbox-demos-dsp.dev\",\"scheduled_report_time\":\"1719251997\",\"version\":\"0.1\"}"
}

আউটপুট ডোমেন AVRO

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

নিম্নলিখিত স্কিমা ব্যবহার করে ডোমেন ফাইলটি AVRO ফর্ম্যাটেও হতে হবে:

  {
    "type": "record",
    "name": "AggregationBucket",
    "fields": [
      {
        "name": "bucket",
        "type": "bytes",
        "doc": "A single bucket that appears in the aggregation service output. 128-bit integer encoded as a 16-byte big-endian bytestring."
      }
    ]
  }

বালতি চাবি

বালতি কী বালতি কী-এর একটি হেক্স বাইটস্ট্রিং হওয়া উচিত। এর জন্য একটি উদাহরণ দশমিকে 1369 এর একটি কী থাকবে। হেক্সে রূপান্তরিত হলে, এটি হবে 559। তারপর আপনাকে আউটপুট ডোমেনে AVRO যোগ করার জন্য 559 কে একটি বাইটস্ট্রিং-এ রূপান্তর করতে হবে।

AgS বাকেট কী ডায়াগ্রাম

ব্যাচ রিপোর্ট

গোপনীয়তা বাজেট এবং ব্যাচিং সম্পর্কে আরও বুঝতে, ব্যাচিং কৌশল ডক এ যান। এছাড়াও, মনে রাখবেন যে একটি সমষ্টিগত প্রতিবেদন শুধুমাত্র একটি নির্দিষ্ট সময়ের মধ্যে ব্যাচ করা যেতে পারে। একটি প্রতিবেদন scheduled_report_time এবং ব্যাচ চালানোর তারিখের মধ্যে MAX_REPORT_AGE অতিক্রম করা উচিত নয় (বর্তমানে 90 দিন)।

সারসংক্ষেপ রিপোর্ট

ব্যাচ করার পরে, অ্যাগ্রিগেশন সার্ভিস AVRO ফরম্যাটে সারাংশ রিপোর্ট তৈরি করে। সারাংশ রিপোর্ট results.avsc স্কিমা ব্যবহার করে।

createJob অনুরোধে বলা output_data_bucket_name বাকেটের output_data_blob_prefix এ সারাংশ রিপোর্টটি অবস্থিত হবে।

অ্যাগ্রিগেশন সার্ভিস ব্যাচের জন্য যেখানে debug_run সক্ষম করা হয়েছে, এটি দুটি প্রতিবেদন তৈরি করে। সারাংশ রিপোর্ট এবং ডিবাগ সারাংশ রিপোর্ট. ডিবাগ সারাংশ রিপোর্ট output_data_blob_prefix/debug ফোল্ডারে অবস্থিত হবে।

তৈরি করা ডিবাগ রিপোর্ট debug_results.avsc স্কিমা ব্যবহার করে।

সারাংশ এবং ডিবাগ রিপোর্ট উভয়ই [output_data_blob_prefix]-1-of-1.avro হিসাবে নামকরণ করা হবে। আপনার output_data_blob_prefix summary/summary.avro হলে, রিপোর্টটি summary-1-of-1.avro নামের সারাংশ ফোল্ডারে থাকবে।

ফলাফল.এভিএসসি

{
  "type": "record",
  "name": "AggregatedFact",
  "fields": [
    {
      "name": "bucket",
      "type": "bytes",
      "doc": "Histogram bucket used in aggregation. 128-bit integer encoded as a 16-byte big-endian bytestring. Leading 0-bits will be left out."
    },
    {
      "name": "metric",
      "type": "long",
      "doc": "Metric associated with the bucket"
    }
  ]
}

debug_results.avsc

  {
  "type": "record",
  "name": "DebugAggregatedFact",
  "fields": [
      {
        "name": "bucket",
        "type": "bytes",
        "doc": "Histogram bucket used in aggregation. 128-bit integer encoded as a 16-byte big-endian bytestring. Leading 0-bits will be left out."
      },
      {
        "name": "unnoised_metric",
        "type": "long",
        "doc": "Unnoised metric associated with the bucket."
      },
      {
        "name": "noise",
        "type": "long",
        "doc": "The noise applied to the metric in the regular result."
      }
      {
        "name":"annotations",
        "type": {
          "type": "array",
          "items": {
            "type":"enum",
            "name":"bucket_tags",
            "symbols":["in_domain","in_reports"]
          }
       }
    ]
  }

একবার রূপান্তরিত হলে, আপনার সারাংশ রিপোর্টের উদাহরণের মত দেখাবে results.json । যখন debug_run সক্ষম করা হয়, তখন ডিবাগ সারাংশ রিপোর্টটি debug_results.json উদাহরণের অনুরূপ কিছু প্রদান করে।

results.json (উদাহরণ)

অ্যাগ্রিগেশন সার্ভিস থেকে আসা AVRO রিপোর্টগুলি একই রকম দেখতে পারে যেখানে আপনার কাছে বালতি কী এবং বালতি মানগুলির যোগ করা শব্দের সাথে সারাংশ/সমষ্টিগত মান রয়েছে।

  {
    "bucket": "\u0005Y",
    "metric": 26308
  }

debug_results.json (উদাহরণ)

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

  {
    "bucket": "\u0005Y",
    "unnoised_metric": 128,
    "noise": -17948,
    "annotations": [
      "in_reports",
      "in_domain"
    ]
  }

টীকাগুলিতে in_reports এবং / অথবা in_domain ও থাকবে যার অর্থ:

  • in_reports : বালতি কী সমষ্টিগত প্রতিবেদনের ভিতরে উপলব্ধ
  • in_domain : বালতি কীটি output_domain AVRO ফাইলের ভিতরে উপলব্ধ