Khóa tổng hợp là gì, cách sử dụng khoá tổng hợp trong Attribution Reporting API và cách bạn có thể chuyển đổi mục tiêu thành khoá.
Là một công ty công nghệ quảng cáo chạy các chiến dịch ở nhiều địa điểm cho nhiều danh mục sản phẩm, bạn muốn giúp nhà quảng cáo trả lời những câu hỏi sau:
- Mỗi chiến dịch của tôi ở mỗi khu vực địa lý đã tạo ra bao nhiêu giao dịch mua cho mỗi danh mục sản phẩm?
- Mỗi chiến dịch của tôi ở mỗi khu vực địa lý đã tạo ra bao nhiêu doanh thu cho mỗi danh mục sản phẩm?
Mặc dù nhiều công ty về công nghệ quảng cáo khuyến khích nhà quảng cáo thiết lập nhiều loại chuyển đổi, nhưng việc tập trung vào các lượt chuyển đổi quan trọng nhất (như lượt mua hàng) là cách tốt để đảm bảo rằng kết quả tóm tắt chi tiết và chính xác cho những sự kiện quan trọng này.
Để làm như vậy, bạn cần phải suy nghĩ xem mình muốn trả lời những câu hỏi nào trước khi dữ liệu được thu thập.
Phương diện, khoá và giá trị
Để trả lời các câu hỏi này, hãy cùng tìm hiểu phương diện, khoá và giá trị.
Kích thước
Để hiểu cách chiến dịch của bạn đang tạo ra doanh thu, như mô tả ở đây, bạn nên theo dõi các phương diện sau:
- Mã chiến dịch quảng cáo: giá trị nhận dạng của chiến dịch cụ thể.
- Mã địa lý: khu vực địa lý nơi quảng cáo được phân phát.
- Danh mục sản phẩm: loại sản phẩm mà bạn đã xác định.
Mặc dù bạn biết phương diện Mã chiến dịch và Mã địa lý khi quảng cáo được phân phát (thời gian phân phát quảng cáo), nhưng bạn sẽ biết Danh mục sản phẩm từ một sự kiện kích hoạt, khi người dùng hoàn tất một lượt chuyển đổi (thời gian chuyển đổi).
Các phương diện bạn muốn theo dõi cho ví dụ này được minh hoạ trong hình sau:
Khoá tổng hợp (vùng chứa) là gì?
Các thuật ngữ khoá tổng hợp và bộ chứa đề cập đến cùng một nội dung. Khoá tổng hợp được dùng trong các API trình duyệt dùng để định cấu hình báo cáo. Thuật ngữ bộ chứa được dùng trong các báo cáo tổng hợp và báo cáo tóm tắt, cũng như trong API dịch vụ tổng hợp.
Khoá tổng hợp (viết tắt là khoá) là một phần dữ liệu đại diện cho các giá trị của phương diện đang được theo dõi. Sau đó, dữ liệu được tổng hợp theo từng khoá tổng hợp.
Ví dụ: giả sử bạn đang theo dõi các phương diện Danh mục sản phẩm, Mã địa lý và Mã chiến dịch.
Khi người dùng ở Mã chiến dịch 7 nhìn thấy quảng cáo cho Mã chiến dịch 12 và sau đó chuyển đổi bằng cách mua sản phẩm trong Danh mục sản phẩm 25, bạn có thể đặt khoá tổng hợp giống như khoá trong hình sau:
Bạn sẽ thấy sau này một khoá tổng hợp trông không giống hệt như vậy trong thực tế, nhưng bây giờ, hãy tập trung vào thông tin có trong khoá đó.
Các giá trị tổng hợp là gì?
Để trả lời các câu hỏi của bạn về những phương diện mà chúng tôi đã nêu, bạn cần biết:
- Số giao dịch mua (số lượt mua). Sau khi được tổng hợp và có trong báo cáo tóm tắt, đây sẽ là tổng số giao dịch mua (giá trị tóm tắt).
- Doanh thu của mỗi giao dịch mua (giá trị giao dịch mua). Sau khi được tổng hợp và cung cấp trong báo cáo tóm tắt, đây sẽ là tổng doanh thu (giá trị tóm tắt).
Mỗi chỉ số này—số giao dịch mua cho một lượt chuyển đổi và giá trị giao dịch mua cho một lượt chuyển đổi—là giá trị tổng hợp. Bạn có thể coi các giá trị tổng hợp là giá trị cho các mục tiêu đo lường.
Câu hỏi | Giá trị tổng hợp = Mục tiêu đo lường |
---|---|
Số lượng giao dịch mua... | Số lượt mua hàng |
Doanh thu là bao nhiêu… | Giá trị giao dịch mua |
Khi một người dùng ở Mã địa lý 7 nhìn thấy quảng cáo của Mã chiến dịch 12, sau đó chuyển đổi bằng cách mua một sản phẩm thuộc Danh mục sản phẩm 25 với giá 120 đô la Mỹ (giả sử đơn vị tiền tệ của bạn là đô la Mỹ), bạn có thể đặt khoá tổng hợp và các giá trị tổng hợp như sau:
Các giá trị tổng hợp được tổng hợp cho mỗi khoá trên nhiều người dùng để tạo thông tin chi tiết tổng hợp, dưới dạng giá trị tóm tắt trong các báo cáo tóm tắt.
Các giá trị tổng hợp được tổng hợp để tạo thông tin chi tiết tổng hợp cho các mục tiêu đo lường của bạn.
Xin lưu ý rằng sơ đồ này bỏ qua quá trình giải mã và thể hiện một ví dụ đơn giản mà không áp dụng nhiễu. Trong phần tiếp theo, chúng ta sẽ trình bày ví dụ này với tiếng ồn.
Từ khoá và giá trị đến báo cáo
Bây giờ, hãy cùng thảo luận về mối liên hệ giữa các khoá và giá trị tổng hợp với báo cáo.
Các báo cáo tổng hợp
Khi người dùng nhấp hoặc xem quảng cáo và sau đó chuyển đổi, bạn hướng dẫn trình duyệt lưu trữ cặp {khoá tổng hợp, giá trị tổng hợp}.
Trong ví dụ của chúng tôi, khi người dùng nhấp hoặc xem quảng cáo rồi chuyển đổi sau đó, bạn sẽ hướng dẫn trình duyệt tạo hai lượt đóng góp (một lượt đóng góp cho mỗi mục tiêu đo lường).
Sau này, bạn sẽ thấy báo cáo tổng hợp {aggregation key, aggregatable value} không giống như vậy. Tuy nhiên, hiện tại, hãy tập trung vào thông tin có trong báo cáo.
Khi bạn hướng dẫn trình duyệt tạo hai lượt đóng góp, trình duyệt sẽ tạo một báo cáo tổng hợp (nếu có thể so khớp lượt chuyển đổi với một lượt xem hoặc lượt nhấp trước đó).
Báo cáo tổng hợp chứa:
- (Các) nội dung đóng góp mà bạn đã định cấu hình.
- Siêu dữ liệu về sự kiện nhấp hoặc xem và sự kiện chuyển đổi: trang web nơi xảy ra lượt chuyển đổi, v.v. Xem tất cả các trường trong một báo cáo tổng hợp.
Báo cáo tổng hợp có định dạng JSON và bao gồm nhiều thành phần, trong đó có trường tải trọng sẽ được dùng làm dữ liệu đầu vào cho báo cáo tóm tắt cuối cùng.
Gói dữ liệu chứa danh sách các giá trị đóng góp, mỗi giá trị là một cặp {khoá tổng hợp, giá trị tổng hợp}:
bucket
: khoá tổng hợp, được mã hoá dưới dạng chuỗi byte.value
: giá trị tổng hợp cho mục tiêu đo lường đó, được mã hoá dưới dạng chuỗi byte.
Ví dụ:
{
"data": [
{
"bucket": "111001001",
"value": "11111010000",
}
],
"operation": "histogram"
}
Trong thực tế, các báo cáo tổng hợp được mã hoá theo cách khiến các bộ chứa và giá trị khác với ví dụ trước (tức là một bộ chứa có thể trông giống như \u0000\u0000\x80\u0000
). Bộ chứa và giá trị đều là chuỗi byte.
Báo cáo tóm tắt
Báo cáo tổng hợp được tổng hợp trên nhiều trình duyệt và thiết bị (người dùng) như sau:
- Một công nghệ quảng cáo yêu cầu các báo cáo tóm tắt cho một tập hợp các khoá nhất định và một tập hợp các báo cáo tổng hợp nhất định đến từ nhiều trình duyệt (người dùng).
- Dịch vụ tổng hợp sẽ giải mã các báo cáo tổng hợp.
- Đối với mỗi khoá, các giá trị tổng hợp từ báo cáo tổng hợp sẽ được cộng lại.
- Độ nhiễu được thêm vào giá trị tóm tắt.
Kết quả là một báo cáo tóm tắt chứa một tập hợp các cặp {aggregation key, summary value}.
Báo cáo tóm tắt chứa một tập hợp các cặp khoá-giá trị kiểu từ điển JSON. Mỗi cặp chứa:
bucket
: khoá tổng hợp, được mã hoá dưới dạng chuỗi byte.value
: giá trị tóm tắt ở dạng thập phân cho một mục tiêu đo lường nhất định, được tổng hợp từ tất cả báo cáo tổng hợp có sẵn, với mức độ nhiễu bổ sung.
Ví dụ:
[
{"bucket": "111001001", "value": "2558500"},
{"bucket": "111101001", "value": "3256211"},
{...}
]
Trong thực tế, báo cáo tóm tắt được mã hoá theo cách khiến các nhóm và giá trị trông khác với được nêu trong ví dụ (nghĩa là nhóm có thể trông giống như \u0000\u0000\x80\u0000
). Bộ chứa và giá trị đều là chuỗi byte.
Khoá tổng hợp trong thực tế
Khoá tổng hợp (vùng chứa) do công ty công nghệ quảng cáo xác định, thường là trong hai bước: khi người dùng nhấp vào hoặc xem quảng cáo và khi người dùng chuyển đổi.
Cấu trúc khoá
Chúng ta sẽ sử dụng thuật ngữ cấu trúc khoá để chỉ định tập hợp các phương diện được mã hoá thành một khoá.
Ví dụ: Mã chiến dịch × GeoID × Danh mục sản phẩm là một cấu trúc chính.
Loại khoá
Các giá trị tổng hợp được cộng lại cho một khoá nhất định trên nhiều người dùng/trình duyệt. Tuy nhiên, chúng ta đã thấy rằng các giá trị tổng hợp có thể theo dõi nhiều mục tiêu đo lường, chẳng hạn như giá trị giao dịch mua hàng hoặc số lượng giao dịch mua. Bạn cần đảm bảo rằng dịch vụ tổng hợp sẽ tính tổng các giá trị tổng hợp thuộc cùng một loại.
Để làm như vậy, trong mỗi khoá, hãy mã hoá một phần dữ liệu để bạn biết giá trị tóm tắt đại diện cho điều gì (mục tiêu đo lường mà khoá này đang đề cập đến). Một cách để thực hiện việc đó là tạo phương diện bổ sung cho khoá đại diện cho loại mục tiêu đo lường.
Trong ví dụ trước, loại mục tiêu đo lường này sẽ có hai giá trị có thể có:
- Số lượt mua hàng là loại mục tiêu đo lường đầu tiên.
- Giá trị giao dịch mua là loại mục tiêu đo lường thứ hai.
Nếu bạn có n mục tiêu đo lường, thì loại mục tiêu đo lường sẽ có n loại giá trị khác nhau.
Bạn có thể coi phương diện của khoá là một chỉ số. Ví dụ: "số lượt mua của một sản phẩm nhất định trên mỗi chiến dịch theo khu vực địa lý".
Kích thước khoá, kích thước phương diện
Kích thước khoá tối đa được xác định bằng số bit – số 0 và số trong hệ nhị phân để tạo khoá đầy đủ. API cho phép chiều dài khoá là 128 bit.
Kích thước này cho phép các khoá rất chi tiết, nhưng các khoá chi tiết hơn có nhiều khả năng dẫn đến các giá trị nhiễu hơn. Bạn có thể đọc thêm về tiếng ồn trong bài viết Tìm hiểu về tiếng ồn.
Như đã giới thiệu trước đó, các phương diện được mã hoá vào khoá tổng hợp. Mỗi phương diện có một số lượng giá trị riêng biệt nhất định, tức là số lượng giá trị riêng biệt mà phương diện có thể nhận được. Tuỳ thuộc vào số lượng giá trị riêng biệt, mỗi phương diện cần được biểu thị bằng một số bit nhất định. Với n bit, có thể biểu thị 2n các tuỳ chọn riêng biệt.
Ví dụ: một phương diện Quốc gia có thể có số lượng giá trị riêng biệt là 200, vì có khoảng 200 quốc gia trên thế giới. Cần bao nhiêu bit để mã hoá phương diện này?
7 bit sẽ chỉ lưu trữ 27 = 128 tuỳ chọn riêng biệt, ít hơn 200 tuỳ chọn cần thiết.
8 bit sẽ lưu trữ 28 = 256 tuỳ chọn riêng biệt, nhiều hơn 200 bit cần thiết, vì vậy, bạn có thể sử dụng n=8 bit để mã hoá chiều này.
Mã hoá khoá
Khi bạn đặt các khoá trong trình duyệt, các khoá này phải được mã hoá theo hệ thập lục phân. Trong báo cáo tóm tắt, các khoá sẽ xuất hiện dưới dạng nhị phân (và được đặt tên là nhóm).
Đặt hai đoạn khoá cho một khoá đầy đủ
Giả sử bạn sử dụng một khoá để theo dõi các phương diện sau:
- Mã chiến dịch
- ID khu vực địa lý
- Danh mục sản phẩm
Mặc dù bạn biết các phương diện Mã chiến dịch và Mã địa lý khi quảng cáo được phân phát (thời gian phân phát quảng cáo), nhưng bạn sẽ biết danh mục sản phẩm từ một sự kiện kích hoạt, khi người dùng hoàn tất một lượt chuyển đổi (thời gian chuyển đổi).
Trong thực tế, điều này có nghĩa là bạn sẽ thiết lập khoá theo hai bước:
- Bạn sẽ đặt một phần của khóa—ID chiến dịch × ID địa lý—tại thời gian nhấp hoặc xem.
- Bạn sẽ đặt phần thứ hai của khoá – Danh mục sản phẩm – tại thời điểm chuyển đổi.
Những phần này của khoá được gọi là phần khoá.
Một khoá được tính bằng cách lấy OR (v
) của các phần khoá của khoá đó.
Ví dụ:
- Phần khoá phía nguồn =
0x159
- Phần khoá phía điều kiện kích hoạt =
0x400
- Khoá =
0x159 v 0x400 = 0x559
Căn chỉnh các thành phần quan trọng
Với hai phần khoá 64 bit được mở rộng thành 128 bit bằng cách sử dụng các phần đệm/chênh lệch 64 bit được đặt cẩn thận (16 số 0), việc nối các phần khoá OR tương đương với việc nối các phần khoá này, giúp dễ dàng lý giải và xác minh hơn:
- Phần khoá phía nguồn =
0xa7e297e7c8c8d0540000000000000000
- Phần khoá phía trình kích hoạt =
0x0000000000000000674fbe308a597271
- Khoá =
0xa7e297e7c8c8d0540000000000000000 v 0x0000000000000000674fbe308a597271 = 0xa7e297e7c8c8d054674fbe308a597271
Nhiều khoá cho mỗi lượt nhấp hoặc lượt xem quảng cáo
Trong thực tế, bạn có thể đặt nhiều khoá cho mỗi sự kiện nguồn phân bổ (lượt nhấp hoặc lượt xem quảng cáo). Ví dụ: bạn có thể đặt:
- Khoá theo dõi Mã địa lý × Mã chiến dịch.
- Một khoá khác theo dõi Loại mẫu quảng cáo × Mã chiến dịch.
Hãy xem Chiến lược B để biết một ví dụ khác.
Mã hoá phương diện thành khoá
Khi yêu cầu báo cáo tóm tắt, bạn cần cho dịch vụ tổng hợp biết những chỉ số mà bạn muốn truy cập bằng cách yêu cầu báo cáo tóm tắt cho một nhóm khoá tổng hợp nhất định.
Báo cáo tóm tắt chứa các cặp {key, summary value} thô và không có thông tin bổ sung về khoá. Điều này có nghĩa là:
- Khi đặt khoá khi người dùng xem hoặc nhấp vào quảng cáo rồi chuyển đổi sau đó, bạn cần đặt khoá một cách đáng tin cậy dựa trên giá trị của các phương diện mà khoá đó đại diện.
- Khi xác định các khoá mà bạn muốn yêu cầu báo cáo tóm tắt, bạn cần tạo hoặc truy cập nhanh các khoá đó một cách đáng tin cậy, giống như các khoá được đặt khi người dùng xem hoặc nhấp vào quảng cáo và chuyển đổi, dựa trên giá trị của các phương diện mà bạn muốn xem dữ liệu tổng hợp.
Mã hoá phương diện bằng cách sử dụng bản đồ cấu trúc khoá
Để mã hoá phương diện thành khoá, bạn có thể tạo và duy trì bản đồ cấu trúc khoá trước khi xác định khoá (trước thời gian phân phát quảng cáo).
Bản đồ cấu trúc khoá đại diện cho từng phương diện và vị trí của các phương diện đó trong khoá.
Trong thực tế, việc tạo và duy trì bản đồ cấu trúc khoá có nghĩa là bạn phải triển khai và duy trì logic bộ giải mã. Nếu đang tìm một phương thức không yêu cầu bạn phải làm việc đó, hãy cân nhắc sử dụng phương pháp dựa trên hàm băm.
Ví dụ:
Giả sử bạn dự định theo dõi cả giao dịch mua và giá trị giao dịch mua cho một số chiến dịch, khu vực địa lý và sản phẩm cụ thể.
Danh mục sản phẩm, mã khu vực địa lý và mã chiến dịch cần phải là phương diện trong khóa của bạn. Ngoài ra, vì muốn theo dõi hai mục tiêu đo lường khác nhau (số lượt mua và giá trị giao dịch mua), nên bạn cần thêm một phương diện trong khoá để theo dõi loại khoá. Việc này sẽ cho phép bạn xác định giá trị tổng hợp thực sự đại diện cho giá trị tổng hợp nào khi nhận được các cặp {key, tổng hợp giá trị} trong báo cáo tóm tắt.
Với các mục tiêu đo lường này, khoá của bạn sẽ có các phương diện sau:
- Danh mục sản phẩm
- Loại mục tiêu đo lường
- ID khu vực địa lý
- Mã chiến dịch
Bây giờ, khi xem xét mỗi phương diện, giả sử bạn cần theo dõi các yếu tố sau trong trường hợp sử dụng của mình:
- 29 danh mục sản phẩm khác nhau.
- 8 khu vực địa lý khác nhau: Bắc Mỹ, Trung Mỹ, Nam Mỹ, Châu Âu, Châu Phi, Châu Á, Caribe và Châu Đại Dương.
- 16 chiến dịch.
Sau đây là số bit bạn cần để mã hoá từng phương diện trong khoá:
- Danh mục sản phẩm: 5 bit (25 = 32 > 29).
- Loại mục tiêu đo lường: 1 bit. Mục tiêu đo lường là số lượt mua hàng hoặc giá trị giao dịch mua, nghĩa là có hai khả năng riêng biệt; do đó, chỉ cần một bit là đủ để lưu trữ số liệu này.
Mã địa lý: 3 bit (23 = 8). Bạn cũng sẽ xác định một bản đồ phương diện cho Mã địa lý để biết mỗi giá trị nhị phân đại diện cho khu vực địa lý nào. Bản đồ phương diện cho phương diện Mã địa lý có thể trông giống như sau:
Giá trị nhị phân trong khoá Khu vực địa lý 000 Bắc Mỹ 001 Trung Mỹ 010 Nam Mỹ 011 Châu Âu 100 Châu Phi 101 Châu Á 110 Caribbean 111 Châu Đại dương Mã chiến dịch: 4 bit (24 = 16)
Các khoá theo cấu trúc này sẽ có độ dài 13 bit (5 + 1 + 3 + 4).
Trong ví dụ này, sơ đồ cấu trúc khoá cho các khoá này sẽ có dạng như sau:
Bạn có thể tuỳ ý sắp xếp thứ tự của các phương diện trong khoá.
Để minh hoạ cách thứ nguyên tạo nên một cấu trúc chính, chúng ta sẽ sử dụng cách biểu diễn nhị phân, đó là lý do tại sao ID chiến dịch (bit đầu tiên) là phần ở ngoài cùng bên phải và danh mục sản phẩm (bit cuối cùng) là phần ngoài cùng bên trái.
Trong mỗi chiều, bit quan trọng nhất (dữ liệu mang giá trị số lớn nhất) là bit ngoài cùng bên trái. Bit có giá trị ít quan trọng nhất (bit mang giá trị số nhỏ nhất) là bit ở ngoài cùng bên phải.
Hãy xem cách sử dụng bản đồ cấu trúc khoá để giải mã khoá.
Hãy lấy 0b1100100111100 làm khoá ví dụ tuỳ ý và giả sử bạn có một cách để biết rằng khoá này tuân theo bản đồ cấu trúc chính trong hình minh hoạ trước.
Theo bản đồ cấu trúc khoá, khoá này sẽ giải mã thành:
`11001 0 011 1100`
Vì vậy, khoá 0b1100100111100 thể hiện số lượt mua hàng thuộc danh mục Sản phẩm 25 cho Mã chiến dịch 12 được ra mắt ở Châu Âu.
Mã hoá phương diện bằng hàm băm
Thay vì sử dụng bản đồ cấu trúc khoá, bạn có thể sử dụng hàm băm để tạo khoá một cách linh động theo cách nhất quán và đáng tin cậy.
Cách thức hoạt động như sau:
- Chọn một thuật toán băm.
- Tại thời điểm phân phát quảng cáo, hãy tạo một chuỗi bao gồm tất cả các phương diện mà bạn muốn theo dõi và giá trị của các phương diện đó. Để tạo phần khoá phía nguồn, hãy băm chuỗi này và cân nhắc thêm hậu tố 0 64 bit để điều chỉnh chuỗi này với phần khoá phía điều kiện kích hoạt và giúp OR dễ hiểu hơn.
- Phần khoá phía nguồn
=<64-bit hex hash("COUNT, campaignID=12, geoID=7"))><64-bit 00000000…>
- Lưu ý rằng
COUNT
mã hoá giống nhưmeasurementGoalType=0
trong phương pháp bản đồ cấu trúc khoá.COUNT
gọn nhẹ và rõ ràng hơn một chút.
- Phần khoá phía nguồn
- Tại thời điểm chuyển đổi, hãy tạo một chuỗi bao gồm tất cả các phương diện bạn muốn theo dõi và giá trị của các phương diện đó. Để tạo một phần khoá phía điều kiện kích hoạt, hãy băm chuỗi này rồi thêm một tiền tố 64 bit chứa số 0:
- Phần khoá phía trình kích hoạt
=
<64-bit 00000000…><64-bit hex hash("productCategory=25")>
- Phần khoá phía trình kích hoạt
=
- Trình duyệt sẽ OR các phần khoá này để tạo một khoá.
- Khoá tổng hợp 128 bit
=<64-bit hex source-side key piece hash><64-bit hex source-side key piece hash>
- Khoá tổng hợp 128 bit
- Sau đó, khi bạn đã sẵn sàng yêu cầu báo cáo tóm tắt cho khoá này, hãy tạo báo cáo ngay lập tức:
- Dựa trên các phương diện bạn quan tâm, hãy tạo một phần khoá phía nguồn và phía điều kiện kích hoạt như đã làm trước đó.
- Phần khoá phía nguồn
=<64-bit hex hash("COUNT, campaignID=12, geoID=7"))><64-bit 00000000…>
- Phần khoá phía trình kích hoạt
=<64-bit 00000000…><64-bit hex hash("productCategory=25")>
- phần khoá phía trình kích hoạt =
toHex(hash("productCategory=25"))
- Phần khoá phía nguồn
- Giống như trình duyệt, HOẶC các phần khoá này để tạo cùng một khoá mà trình duyệt đã tạo trước đó.
- Khoá tổng hợp 128 bit
=<64-bit source-side key piece hash><64-bit source-side key piece hash>
- Khoá tổng hợp 128 bit
- Dựa trên các phương diện bạn quan tâm, hãy tạo một phần khoá phía nguồn và phía điều kiện kích hoạt như đã làm trước đó.
Một số mẹo thực tế nếu bạn đang sử dụng phương pháp dựa trên hàm băm này:
- Luôn sử dụng cùng một thứ tự của các phương diện. Điều này đảm bảo rằng hàm băm của bạn có thể được tạo lại một cách đáng tin cậy. (
"COUNT, CampaignID=12, GeoID=7"
sẽ không tạo ra cùng một hàm băm với"COUNT, GeoID=7, CampaignID=12"
). Một cách đơn giản để thực hiện việc này là sắp xếp các phương diện theo thứ tự chữ cái và số. Đây là những gì chúng ta sẽ làm trong ví dụ, ngoại trừ việc chúng ta sẽ luôn đặtCOUNT
hoặcVALUE
làm mục đầu tiên trong phương diện – đây là lựa chọn để dễ đọc, vìCOUNT
hoặcVALUE
mã hoá thông tin có khái niệm hơi khác so với tất cả các phương diện khác. - Theo dõi tập hợp phương diện mà bạn đang sử dụng trong khoá. Bạn nên tránh tạo khoá dựa trên một tập hợp phương diện mà bạn chưa từng sử dụng.
- Rất hiếm khi xảy ra xung đột hàm băm nếu bạn sử dụng một hàm băm phù hợp. Tuy nhiên, việc kiểm tra dựa trên các hàm băm đã sử dụng trước đó (nên được lưu trữ để diễn giải kết quả từ dịch vụ tổng hợp) có thể tránh được việc tạo khoá mới xung đột với các khoá cũ.
Xem cách sử dụng khoá dựa trên hàm băm trong thực tế trong ví dụ về một lượt chuyển đổi cho mỗi lượt nhấp hoặc chế độ xem.
Giá trị tổng hợp trong thực tế
Công ty công nghệ quảng cáo đặt các giá trị tổng hợp khi người dùng chuyển đổi.
Để bảo vệ quyền riêng tư của người dùng, mức đóng góp của mỗi người dùng đều có giới hạn trên. Trên tất cả các giá trị tổng hợp được liên kết với một nguồn duy nhất (lượt nhấp vào quảng cáo hoặc lượt xem), không có giá trị nào có thể cao hơn một giới hạn đóng góp nhất định.
Chúng ta sẽ gọi giới hạn này là CONTRIBUTION_BUDGET
. Trong nội dung giải thích, giới hạn này được gọi là ngân sách L1, nhưng thực chất là giống với CONTRIBUTION_BUDGET
.
Để thảo luận sâu hơn về ngân sách đóng góp, hãy tham khảo bài viết Ngân sách đóng góp cho báo cáo tóm tắt.
Ví dụ: một lượt chuyển đổi cho mỗi lượt nhấp hoặc lượt xem
Đối với ví dụ này, giả sử bạn đang muốn trả lời các câu hỏi sau:
- Danh mục sản phẩm nào có giá trị nhất ở mỗi khu vực?
- Những chiến lược chiến dịch nào có hiệu quả nhất ở mỗi khu vực?
Cũng giả sử rằng đối với trường hợp sử dụng của bạn, bạn cần thông tin chi tiết hằng tuần.
Bạn cũng cần theo dõi những thông tin sau:
- 16 chiến dịch.
- 8 khu vực địa lý khác nhau: Bắc Mỹ, Trung Mỹ, Nam Mỹ, Châu Âu, Châu Phi, Châu Á, Caribe và Châu Đại Dương.
- 29 danh mục sản phẩm khác nhau.
Nội dung đánh giá
Mặc dù nhiều công ty công nghệ quảng cáo khuyến khích nhà quảng cáo định cấu hình nhiều loại lượt chuyển đổi, nhưng việc tập trung vào những lượt chuyển đổi quan trọng nhất (chẳng hạn như lượt mua hàng) là một cách hay để đảm bảo rằng kết quả tổng hợp chi tiết và chính xác cho những sự kiện chuyển đổi quan trọng này. Trên thực tế, bạn đo lường càng nhiều chỉ số, ngân sách đóng góp cho mỗi chỉ số càng nhỏ và do đó, mỗi giá trị có thể càng nhiễu động hơn. Do đó, bạn cần chọn kỹ những gì cần đo lường.
Trong ví dụ này, chúng ta sẽ tập trung vào các chế độ thiết lập chiến dịch chỉ đo lường một lượt chuyển đổi cho mỗi lượt nhấp hoặc lượt xem: một giao dịch mua.
Bạn vẫn sẽ đo lường cả số lượt mua hàng và giá trị giao dịch mua, đồng thời có thể truy cập vào nhiều số liệu thống kê tổng hợp quan trọng, chẳng hạn như tổng giá trị giao dịch mua và thông tin phân tích chi tiết theo địa lý. Điều này giúp giảm thiểu độ nhiễu ở mức hợp lý và đảm bảo phương pháp điều chỉnh quy mô đơn giản cho ngân sách đóng góp.
Còn đơn vị tiền tệ thì sao?
Việc chạy chiến dịch ở nhiều khu vực đồng nghĩa với việc bạn cần cân nhắc đơn vị tiền tệ. Bạn có thể:
- Đặt đơn vị tiền tệ làm phương diện riêng trong khoá tổng hợp.
- Hoặc dự đoán đơn vị tiền tệ từ ID chiến dịch và chuyển đổi tất cả các đơn vị tiền tệ sang đơn vị tiền tệ tham chiếu.
Trong ví dụ này, chúng ta sẽ giả định rằng bạn có thể suy luận đơn vị tiền tệ từ mã chiến dịch. Điều này cho phép bạn chuyển đổi bất kỳ giá trị giao dịch mua nào từ đơn vị tiền tệ địa phương của người dùng sang đơn vị tiền tệ tham chiếu mà bạn chọn. Bạn cũng có thể thực hiện chuyển đổi đó một cách nhanh chóng, khi người dùng mua hàng.
Với kỹ thuật này, tất cả giá trị tổng hợp đều ở cùng một đơn vị tiền tệ tham chiếu, do đó, bạn có thể cộng tất cả giá trị này để tạo ra tổng giá trị giao dịch mua được tổng hợp – giá trị giao dịch mua tóm tắt.
Dịch mục tiêu thành khoá
Với các mục tiêu và chỉ số đo lường, bạn có một số lựa chọn cho chiến lược chính. Hãy tập trung vào hai trong số những chiến lược này:
- Chiến lược A: một cấu trúc khoá chi tiết.
- Chiến lược B: hai cấu trúc khoá thô.
Chiến lược A: một cây sâu (một cấu trúc khoá chi tiết)
Trong chiến lược A, bạn sử dụng một cấu trúc khoá chi tiết, bao gồm tất cả các phương diện bạn cần:
Tất cả khoá của bạn đều sử dụng cấu trúc này.
Bạn chia cấu trúc khoá này thành 2 kiểu chính để hỗ trợ 2 mục tiêu đo lường.
- Loại khoá 0: loại mục tiêu đo lường = 0 mà bạn quyết định xác định là số lượt mua hàng.
- Loại khoá 1: loại mục tiêu đo lường = 1 mà bạn quyết định xác định là giá trị giao dịch mua.
Báo cáo tóm tắt có dạng như sau:
Bạn có thể xem chiến lược A là chiến lược "một cây sâu":
- Mỗi giá trị tóm tắt trong báo cáo tóm tắt được liên kết với tất cả các phương diện mà bạn đang theo dõi.
- Bạn có thể tổng hợp các giá trị tóm tắt này cùng với mỗi phương diện trong số này để các dữ liệu tổng hợp này có thể liên quan đến số lượng phương diện mà bạn có.
Với chiến lược A, bạn sẽ trả lời các câu hỏi của mình như sau:
Câu hỏi | Trả lời |
---|---|
Danh mục sản phẩm nào có giá trị nhất ở mỗi khu vực? | Tính tổng số lượt mua hàng và giá trị tóm tắt trong báo cáo tóm tắt trên tất cả các chiến dịch. Thông tin này cho bạn biết số lượt mua hàng và giá trị theo Mã địa lý × danh mục sản phẩm. Đối với mỗi khu vực, hãy so sánh giá trị giao dịch mua và số lượng của các danh mục sản phẩm. |
Chiến lược chiến dịch nào hiệu quả nhất ở mỗi khu vực? | Tính tổng số lượt mua hàng và giá trị tóm tắt trong báo cáo tóm tắt trên tất cả danh mục sản phẩm. Thẻ này cho bạn biết số lượng và giá trị giao dịch mua trên mỗi Mã chiến dịch × Mã địa lý. Đối với mỗi khu vực, hãy so sánh giá trị giao dịch mua và số lượng giao dịch mua của các chiến dịch. |
Với chiến lược A, bạn cũng có thể trả lời trực tiếp câu hỏi thứ ba sau:
"Mỗi chiến dịch của tôi ở mỗi khu vực địa lý đã tạo ra bao nhiêu doanh thu cho mỗi sản phẩm?"
Mặc dù các giá trị tóm tắt sẽ có độ nhiễu, nhưng bạn có thể xác định thời điểm sự khác biệt về giá trị được đo lường giữa các chiến dịch không phải chỉ do độ nhiễu. Tìm hiểu cách thực hiện việc này trong bài viết Tìm hiểu về tiếng ồn.
Chiến lược B: hai cây nông (2 cấu trúc chính tương đối)
Trong chiến lược B, bạn sử dụng 2 cấu trúc khoá thô, mỗi cấu trúc bao gồm một tập hợp con các phương diện bạn cần:
Bạn chia từng cấu trúc chính này thành 2 loại chính để hỗ trợ 2 mục tiêu đo lường.
- Loại mục tiêu đo lường = 0, bạn quyết định xác định là số lượt mua hàng.
- Loại mục tiêu đo lường = 1, bạn quyết định xác định là giá trị giao dịch mua.
Bạn sẽ có 4 loại khoá:
- Loại khoá I-0: Cấu trúc khoá I, số lượng giao dịch mua.
- Loại khoá I-1: Cấu trúc khoá I, giá trị giao dịch mua.
- Loại khoá II-0: Cấu trúc khoá II, số lượt mua.
- Loại khoá II-1: Cấu trúc khoá II, giá trị mua hàng.
Báo cáo tóm tắt có dạng như sau:
Bạn có thể xem chiến lược B là chiến lược "hai cây nông":
- Các giá trị tóm tắt trong báo cáo tóm tắt liên kết đến một trong hai tập hợp phương diện nhỏ.
- Bạn có thể tổng hợp các giá trị tóm tắt này cùng với mỗi phương diện trong các tập hợp này. Điều này có nghĩa là các dữ liệu tổng hợp này không sâu như trong tuỳ chọn A, vì có ít phương diện để tổng hợp hơn.
Với chiến lược B, bạn sẽ trả lời các câu hỏi của mình như sau:
Câu hỏi | Trả lời |
---|---|
Danh mục sản phẩm nào có giá trị nhất ở mỗi khu vực? | Truy cập trực tiếp vào số lượng và giá trị giao dịch mua tóm tắt trong báo cáo tóm tắt. |
Chiến lược chiến dịch nào hiệu quả nhất ở mỗi khu vực? | Truy cập trực tiếp vào số lượt mua hàng và giá trị tóm tắt trong báo cáo tóm tắt. |
Quyết định: Chiến lược A
Chiến lược A đơn giản hơn; tất cả dữ liệu đều tuân theo cùng một cấu trúc chính, nghĩa là bạn chỉ có một cấu trúc chính để duy trì.
Tuy nhiên, với chiến lược A, bạn cần tổng hợp các giá trị tóm tắt nhận được trong báo cáo tóm tắt để trả lời một số câu hỏi của mình. Mỗi giá trị tóm tắt này đều có nhiễu. Bằng cách cộng dữ liệu đó, bạn cũng đang cộng cả tiếng ồn.
Điều này không xảy ra với chiến lược B, trong đó các giá trị tóm tắt hiển thị trong báo cáo tóm tắt đã cung cấp cho bạn thông tin cần thiết. Tức là chiến lược B có thể gây ảnh hưởng ít hơn so với chiến lược A.
Làm thế nào để xác định xem nên sử dụng chiến lược nào? Đối với các nhà quảng cáo hoặc chiến dịch hiện tại, bạn có thể dựa vào dữ liệu trong quá khứ để xác định xem số lượt chuyển đổi phù hợp hơn với chiến lược A hoặc chiến lược B. Tuy nhiên, đối với nhà quảng cáo hoặc chiến dịch mới, bạn có thể quyết định:
- Thu thập dữ liệu trong một tháng bằng các khoá chi tiết (Chiến lược A). Vì bạn đang kéo dài thời lượng thu thập dữ liệu, nên các giá trị tóm tắt sẽ cao hơn và độ nhiễu sẽ tương đối thấp hơn.
- Đánh giá chính xác số lượt chuyển đổi hằng tuần và giá trị giao dịch mua.
Trong ví dụ này, giả sử số lượt mua hàng và giá trị giao dịch mua hàng hằng tuần đủ cao để chiến lược A dẫn đến tỷ lệ phần trăm nhiễu mà bạn cho là chấp nhận được đối với trường hợp sử dụng của mình.
Vì chiến lược A đơn giản hơn và dẫn đến tác động nhiễu không ảnh hưởng đến khả năng đưa ra quyết định, nên bạn quyết định sử dụng chiến lược A.
Chọn một thuật toán băm
Bạn quyết định sử dụng phương pháp dựa trên hàm băm để tạo khoá. Để làm được điều này, bạn cần chọn một thuật toán băm để hỗ trợ phương pháp đó.
Giả sử bạn đã chọn SHA-256. Bạn cũng có thể sử dụng một thuật toán đơn giản hơn, kém an toàn hơn, chẳng hạn như MD5.
Trong trình duyệt: đặt khoá và giá trị
Sau khi đã quyết định về một cấu trúc khoá và thuật toán băm, bạn đã sẵn sàng đăng ký các khoá và giá trị khi người dùng nhấp hoặc xem quảng cáo rồi chuyển đổi.
Tiếp theo là thông tin tổng quan về các tiêu đề mà bạn sẽ đặt để đăng ký khoá và giá trị trong trình duyệt:
Thiết lập các phần khoá phía nguồn
Khi người dùng nhấp hoặc xem quảng cáo, hãy đặt các khoá tổng hợp trong tiêu đề Attribution-Reporting-Register-Aggregatable-Source
.
Ở giai đoạn này, đối với mỗi khoá, bạn chỉ có thể đặt một phần của khoá (còn gọi là phần khoá) được xác định tại thời điểm phân phát quảng cáo.
Hãy tạo các phần chính:
Phần khoá phía nguồn cho mã nhận dạng khoá... | Chuỗi chứa các giá trị phương diện mà bạn muốn đặt | Hàm băm của chuỗi này dưới dạng hệ thập lục phân, được cắt thành 64 bit đầu tiên (64/4 = 16 ký tự1) | Hàm băm hex có số 0 được thêm vào để đơn giản hoá hoạt động OR. Đây là phần khoá phía nguồn. |
---|---|---|---|
key_purchaseCount |
COUNT, CampaignID=12, GeoID=7 |
0x3cf867903fbb73ec | 0x3cf867903fbb73ec0000000000000000 |
key_purchaseValue |
VALUE, CampaignID=12, GeoID=7 |
0x245265f432f16e73 | 0x245265f432f16e730000000000000000 |
Bây giờ, hãy đặt các phần quan trọng:
// Upon receiving the request from the publisher site
res.set(
"Attribution-Reporting-Register-Aggregatable-Source",
JSON.stringify([
{
"id": "key_purchaseCount",
"key_piece": "0x3cf867903fbb73ec0000000000000000"
},
{
"id": "key_purchaseValue",
"key_piece": "0x245265f432f16e730000000000000000"
}
])
);
Xin lưu ý rằng mã khoá sẽ không xuất hiện trong báo cáo cuối cùng. Chúng chỉ được dùng khi đặt khoá trong trình duyệt để các phần khoá phía nguồn và phía điều kiện kích hoạt có thể được ánh xạ với nhau và kết hợp thành một khoá đầy đủ.
Không bắt buộc: báo cáo ở cấp sự kiện
Nếu bạn cần sử dụng báo cáo ở cấp sự kiện cùng với báo cáo tổng hợp, hãy đảm bảo rằng đối với một nguồn nhất định, dữ liệu ở cấp sự kiện (mã sự kiện nguồn và dữ liệu điều kiện kích hoạt) và khoá tổng hợp có thể so khớp.
Ví dụ: bạn có thể sử dụng cả hai báo cáo nếu dự định sử dụng báo cáo cấp sự kiện để chạy các mô hình về những loại quảng cáo có xu hướng dẫn đến nhiều lượt mua hàng nhất.
Một người dùng chuyển đổi
Khi người dùng chuyển đổi, yêu cầu pixel thường được gửi đến máy chủ công nghệ quảng cáo. Sau khi nhận được yêu cầu này:
- Đặt các phần khoá phía chuyển đổi (phía điều kiện kích hoạt) để hoàn tất khoá.
Bạn sẽ thiết lập các phần chính này thông qua tiêu đề
Attribution-Reporting-Register-Aggregatable-Trigger-Data
. - Đặt giá trị tổng hợp cho lượt chuyển đổi đó thông qua tiêu đề
Attribution-Reporting-Register-Aggregatable-Values
.
Đặt các mảnh khoá phía điều kiện kích hoạt để hoàn tất khoá
Hãy tạo các phần khoá:
Phần khoá phía trình kích hoạt cho mã khoá… | Chuỗi chứa các giá trị phương diện mà bạn muốn đặt | Hàm băm của chuỗi này dưới dạng hệ thập lục phân, được cắt thành 64 bit đầu tiên (64/4 = 16 ký tự1) | Hàm băm hex có số 0 được thêm vào để đơn giản hoá việc OR. Đây là phần khoá phía nguồn. |
---|---|---|---|
key_purchaseCount |
ProductCategory=25 |
0x1c7ce88c4904bbe2 | 0x0000000000000000f9e491fe37e55a0c |
key_purchaseValue |
(giống nhau) | (tương tự) | (giống nhau) |
Bây giờ, hãy thiết lập các phần chính:
// Upon receiving the pixel request from the advertiser site
res.set(
"Attribution-Reporting-Register-Aggregatable-Trigger-Data",
JSON.stringify([
// Each dictionary independently adds pieces to multiple source keys
{
"key_piece": "0x0000000000000000f9e491fe37e55a0c",
"source_keys": ["key_purchaseCount", "key_purchaseValue"]
},
])
);
Lưu ý cách bạn thêm cùng một phần khoá vào một số khoá bằng cách liệt kê một số mã khoá trong source_keys
– phần khoá sẽ được thêm vào cả hai khoá.
Đặt giá trị tổng hợp
Trước khi đặt các giá trị tổng hợp, bạn cần tăng kích thước để giảm độ nhiễu.
Giả sử bạn đã thực hiện một giao dịch mua hàng đối với loại sản phẩm 25 với giá 52 USD.
Bạn sẽ không trực tiếp đặt các giá trị này làm giá trị tổng hợp:
key_purchaseCount
: 1 lượt chuyển đổikey_purchaseValue
: 52 USD
Thay vào đó, trước khi đăng ký các giá trị tổng hợp này, bạn cần điều chỉnh theo tỷ lệ để giảm thiểu độ nhiễu.
Bạn có hai mục tiêu để chi tiêu ngân sách đóng góp, vì vậy, bạn có thể quyết định phân chia ngân sách đóng góp thành hai phần.
Trong trường hợp này, mỗi mục tiêu được phân bổ tối đa là CONTRIBUTION_BUDGET/2
(=65.536/2=32.768).
Giả sử giá trị giao dịch mua tối đa của một người dùng, dựa trên danh sách giao dịch mua của tất cả người dùng trên trang web, là 1.500 đô la. Có thể có các ngoại lệ, ví dụ như rất ít người dùng đã chi tiêu trên số tiền đó, nhưng bạn có thể quyết định bỏ qua những ngoại lệ này.
Hệ số tỷ lệ cho giá trị giao dịch mua phải là:
((CONTRIBUTION_BUDGET
/2) / 1.500) = 32.768/1.500 = 21,8 ≈ 22
Hệ số điều chỉnh cho số lượt mua hàng là 32.768/1 = 32.768, vì bạn đã quyết định theo dõi tối đa một lượt mua hàng cho mỗi lượt nhấp vào quảng cáo hoặc lượt xem (sự kiện nguồn).
Bây giờ, bạn có thể đặt các giá trị sau:
key_purchaseCount
: 1 × 32.768 = 32.768key_purchaseValue
: 52 × 22 = 1.144
Trong thực tế, bạn sẽ thiết lập các giá trị này như sau, sử dụng tiêu đề chuyên dụng Attribution-Reporting-Register-Aggregatable-Values
:
// Instruct the browser to schedule-send a report
res.set(
"Attribution-Reporting-Register-Aggregatable-Values",
JSON.stringify({
"key_purchaseCount": 32768,
"key_purchaseValue": 1144,
})
);
Đã tạo báo cáo tổng hợp
Trình duyệt sẽ so khớp lượt chuyển đổi với một chế độ xem hoặc lượt nhấp trước đó rồi tạo một báo cáo tổng hợp, trong đó bao gồm tải trọng đã mã hoá bên cạnh siêu dữ liệu báo cáo.
Dưới đây là ví dụ về dữ liệu có thể tìm thấy trong tải trọng của báo cáo tổng hợp, nếu dữ liệu đó có thể đọc được ở dạng văn bản thô:
[
{
key: 0x3cf867903fbb73ecf9e491fe37e55a0c, // = source-side key piece OR conversion-side key piece for the key key_purchaseCount
value: 32768 // the scaled value for 1 conversion, in the context of [CONTRIBUTION_BUDGET/2]
},
{
key: 0x245265f432f16e73f9e491fe37e55a0c, // source-side key piece OR conversion-side key piece for the key key_purchaseValue
value: 1144 // the scaled value for $52, in the context of [CONTRIBUTION_BUDGET/2]
},
]
Tại đây, bạn có thể thấy hai đóng góp riêng biệt trong một báo cáo tổng hợp duy nhất.
Yêu cầu báo cáo tóm tắt
- Báo cáo tổng hợp theo lô. Làm theo lời khuyên trong phần Tạo hàng loạt.
- Tạo các khoá mà bạn muốn xem dữ liệu. Ví dụ: để xem dữ liệu tóm tắt về
COUNT
(tổng số lượt mua hàng) vàVALUE
(tổng giá trị giao dịch mua) cho Mã chiến dịch 12 × Mã địa lý 7 × Danh mục sản phẩm 25:- Tạo phần khoá phía nguồn, như bạn đã làm khi đặt khoá trong trình duyệt.
- Tạo phần khoá phía điều kiện kích hoạt, như bạn đã làm khi đặt khoá trong trình duyệt.
Chỉ số bạn muốn yêu cầu1 | Phần khoá phía nguồn | Phần khoá phía điều kiện kích hoạt | Khoá để yêu cầu dịch vụ tổng hợp2 |
---|---|---|---|
Tổng số giao dịch mua (COUNT ) |
0x3cf867903fbb73ec 0000000000000000 |
0x00000000000000 00f9e491fe37e55a0c |
0x3cf867903fbb73 ecf9e491fe37e55a0c |
Tổng giá trị giao dịch mua (VALUE ) |
0x245265f432f16e73 0000000000000000 |
0x0000000000000000 f9e491fe37e55a0c |
0x245265f432f16e73 f9e491fe37e55a0c |
- Yêu cầu dịch vụ tổng hợp cung cấp dữ liệu tóm tắt cho các khoá này.
Xử lý báo cáo tóm tắt
Cuối cùng, bạn sẽ nhận được báo cáo tóm tắt có thể có dạng như sau:
[
{"bucket": "00111100111110000110011110010000001111111011101101110011111011001111100111100100100100011111111000110111111001010101101000001100",
"value": "2558500"},
{"bucket": "00100100010100100110010111110100001100101111000101101110011100111111100111100100100100011111111000110111111001010101101000001100",
"value": "687060"},
…
]
Bộ chứa đầu tiên là khoá COUNT
ở dạng nhị phân. Bộ chứa thứ hai là khoá VALUE
ở dạng tệp nhị phân.
Xin lưu ý rằng mặc dù các khoá không đồng nhất (COUNT
so với VALUE
) nhưng chúng nằm trong cùng một báo cáo.
Giảm số lượng giá trị
- 2.558.500 là số lượt mua của khoá này, được điều chỉnh theo hệ số điều chỉnh mà bạn đã tính trước đó. Hệ số tỷ lệ cho số lượt mua là 32.768. Chia 2.558.500 cho ngân sách đóng góp của mục tiêu: 2.558.500/32.768 = 156,15 giao dịch mua.
- 687.060 → 687.060/22 = 31.230 USD tổng giá trị giao dịch mua.
Do đó, báo cáo tóm tắt cung cấp cho bạn những thông tin chi tiết sau:
- Within the reporting time period, campaign #12
run in Europe drove about 156 purchases (± noise)
for the product category #25
```
```text
- Within the reporting time period, campaign #12
run in Europe drove $31,230 of purchases (± noise)
for the product category #25.