Khi tạo báo cáo tổng hợp theo lô, điều quan trọng là bạn phải tối ưu hoá các chiến lược tạo lô để không vượt quá giới hạn về quyền riêng tư. Sau đây là một số chiến lược đề xuất để gửi hàng loạt báo cáo đến Dịch vụ tổng hợp.
Thu thập báo cáo
Khi thu thập báo cáo để đưa vào một lô, hãy lưu ý những điều sau:
Báo cáo số lần thử tải lên lại
Lưu ý: Các tiêu chí thử lại có thể thay đổi. Thông tin trong phần này sẽ được cập nhật trong trường hợp đó.
Trên cả nền tảng web và nền tảng hệ điều hành, nền tảng sẽ cố gắng gửi báo cáo ba lần, nhưng nếu không gửi được báo cáo sau lần thử thứ ba, thì báo cáo sẽ không được gửi. Giá trị scheduled_report_time
ban đầu được giữ nguyên bất kể thời điểm báo cáo có thể được gửi. Tiến trình thử lại sẽ khác nhau tuỳ theo nền tảng:
- Trình duyệt web sẽ gửi báo cáo khi trình duyệt có kết nối mạng. Nếu không gửi được báo cáo, hệ thống sẽ đợi 5 phút để thử lại lần thứ hai, sau đó đợi 15 phút để thử lại lần thứ ba. Nếu trình duyệt không có mạng, thì lần thử lại tiếp theo sẽ là một phút sau khi trình duyệt có mạng trở lại. Không có độ trễ tối đa trong việc gửi báo cáo trên web; điều này có nghĩa là nếu trình duyệt ngoại tuyến, bất kể báo cáo được tạo cách đây bao lâu, sau khi trình duyệt kết nối lại, trình duyệt sẽ cố gắng gửi báo cáo theo chính sách thử lại.
- Điện thoại Android có kết nối mạng ổn định. Do đó, công việc này sẽ chạy để gửi báo cáo một lần mỗi giờ. Điều này có nghĩa là nếu không gửi được báo cáo, hệ thống sẽ thử lại vào giờ kế tiếp và một lần nữa vào giờ sau đó. Nếu không có kết nối, thiết bị sẽ thử gửi lại báo cáo bằng công việc báo cáo tiếp theo chạy sau khi thiết bị kết nối lại với mạng. Độ trễ tối đa là 28 ngày, tức là thiết bị sẽ không gửi báo cáo được tạo cách đây hơn 28 ngày.
Chờ báo cáo
Bạn nên đợi các báo cáo đến muộn khi thu thập báo cáo để tạo báo cáo theo lô. Bạn có thể xác định báo cáo trễ bằng cách so sánh giá trị scheduled_report_time
với thời điểm nhận được báo cáo. Chênh lệch thời gian giữa các báo cáo đó sẽ giúp xác định khoảng thời gian bạn có thể cân nhắc chờ đợi các báo cáo đến muộn. Ví dụ: khi các báo cáo bị trễ được thu thập, hãy kiểm tra trường scheduled_report_time
và ghi lại độ trễ theo giờ khi 90%, 95% và 99% báo cáo được nhận. Bạn có thể dùng dữ liệu đó để xác định khoảng thời gian chờ báo cáo đến muộn.
Bạn có thể sử dụng báo cáo tổng hợp tức thì để giảm khả năng báo cáo bị chậm trễ.
Hình ảnh sau đây cho thấy các báo cáo đến muộn được lưu trữ trong các lô phù hợp theo thời gian báo cáo đã lên lịch. T lô đại diện cho scheduled_report_time
và T+X đại diện cho thời gian chờ báo cáo bị trì hoãn. Thao tác này sẽ tạo ra một báo cáo tóm tắt bao gồm phần lớn các báo cáo có trong lô báo cáo tương ứng với thời gian báo cáo theo lịch của các báo cáo đó.

Hạch toán báo cáo tổng hợp
Dịch vụ tổng hợp duy trì quy tắc"không trùng lặp". Quy tắc này thực thi việc tất cả báo cáo Tổng hợp có cùng mã nhận dạng dùng chung phải nằm trong cùng một lô.
Sau khi thu thập, các báo cáo phải được phân thành lô sao cho tất cả báo cáo có cùng mã nhận dạng dùng chung đều thuộc một lô.
Nếu một báo cáo đã được xử lý trong một lô khác, thì quá trình xử lý có thể dẫn đến lỗi hết hạn mức ngân sách quyền riêng tư. Việc báo cáo theo lô một cách chính xác sẽ giúp ngăn chặn việc các lô bị từ chối do quy tắc "không có dữ liệu trùng lặp".
Mã dùng chung là khoá được tạo cho mỗi báo cáo để theo dõi việc hạch toán báo cáo tổng hợp. Mã nhận dạng dùng chung đảm bảo rằng các báo cáo có cùng mã nhận dạng dùng chung chỉ đóng góp vào một báo cáo tóm tắt. Điều này có nghĩa là tất cả các báo cáo ánh xạ đến một mã nhận dạng dùng chung phải được đưa vào một lô. Ví dụ: nếu Báo cáo X và Báo cáo Y đều có cùng một mã nhận dạng dùng chung, thì bạn phải đưa cả hai báo cáo này vào cùng một lô để tránh bị loại bỏ do trùng lặp.
Hình ảnh sau đây minh hoạ các thành phần shared_info
được băm cùng nhau để tạo mã nhận dạng dùng chung.

Hình ảnh sau đây minh hoạ cách hai báo cáo khác nhau có thể có cùng một mã nhận dạng dùng chung:

Lưu ý: scheduled_report_time
bị cắt bớt theo giờ và source_registration_time
bị cắt bớt theo ngày. Ngoài ra, report_id
không được dùng trong quá trình tạo mã nhận dạng dùng chung. Trong tương lai, chúng tôi có thể cập nhật độ chi tiết về thời gian.
Báo cáo trùng lặp trong lô
Trường shared_info
trong báo cáo tổng hợp chứa một UUID trong trường report_id
. Trường này dùng để xác định các báo cáo trùng lặp trong một lô. Nếu có nhiều báo cáo có cùng một report_id
trong một lô, thì chỉ báo cáo đầu tiên mới được tổng hợp, còn các báo cáo khác sẽ được coi là trùng lặp và bị loại bỏ một cách thầm lặng; quá trình tổng hợp sẽ diễn ra như bình thường và không có lỗi nào được gửi.
Mặc dù không bắt buộc, nhưng công nghệ quảng cáo có thể thấy hiệu suất tăng lên một chút bằng cách lọc ra các báo cáo trùng lặp có cùng mã báo cáo trước khi tổng hợp.
report_id
là duy nhất cho mỗi báo cáo.
Báo cáo trùng lặp trên các lô
Mỗi báo cáo được chỉ định một mã nhận dạng dùng chung. Đây là mã nhận dạng được tạo từ các điểm dữ liệu kết hợp lấy từ trường shared_info
của báo cáo. Nhiều báo cáo có thể có cùng một mã nhận dạng dùng chung và mỗi lô có thể chứa nhiều mã nhận dạng dùng chung. Tất cả báo cáo có cùng mã dùng chung phải nằm trong cùng một lô. Nếu các báo cáo có cùng mã nhận dạng dùng chung nằm trong nhiều lô, thì chỉ lô đầu tiên mới được chấp nhận, còn các lô khác sẽ bị từ chối vì trùng lặp. Để ngăn chặn điều này, bạn phải tạo các lô một cách thích hợp.
Hình ảnh sau đây cho thấy một ví dụ về trường hợp các báo cáo có cùng mã nhận dạng dùng chung trên nhiều lô có thể khiến lô sau đó không thành công. Trong hình ảnh, bạn có thể thấy hai hoặc nhiều báo cáo có cùng mã nhận dạng dùng chung e679aa
được phân thành các lô #1 và #2 khác nhau. Vì ngân sách cho tất cả báo cáo có mã nhận dạng dùng chung e679aa
đã được sử dụng trong quá trình tạo báo cáo tóm tắt của Lô 1, nên Lô 2 không được phép và không thành công do lỗi.

Báo cáo theo lô
Dưới đây là các cách nên dùng để tạo báo cáo theo lô nhằm tránh báo cáo trùng lặp và tối ưu hoá việc tính toán báo cáo tổng hợp.
Theo lô theo nhà quảng cáo
Lưu ý: Bạn chỉ nên sử dụng chiến lược này để tổng hợp Báo cáo phân bổ.
Tính năng Tổng hợp riêng tư không có trường attribution_destination
, tức là nhà quảng cáo. Bạn nên tạo lô theo nhà quảng cáo, tức là đưa các báo cáo thuộc về một nhà quảng cáo vào cùng một lô để tránh đạt đến giới hạn tài khoản báo cáo tổng hợp cho mỗi lô. Nhà quảng cáo là một trường được xem xét trong quá trình tạo mã nhận dạng dùng chung, vì vậy, các báo cáo có cùng một nhà quảng cáo cũng có thể có cùng một mã nhận dạng dùng chung. Điều này đòi hỏi các báo cáo đó phải nằm trong cùng một lô để tránh lỗi.
Tạo lô theo thời gian
Bạn nên cân nhắc thời gian báo cáo theo lịch của báo cáo (shared_info.scheduled_report_time
) khi tạo báo cáo theo lô. Thời gian báo cáo định kỳ được cắt bớt thành giờ trong quá trình tạo mã nhận dạng dùng chung. Do đó, tối thiểu, các báo cáo phải được phân thành lô theo khoảng thời gian một giờ. Tức là tất cả báo cáo có thời gian báo cáo định kỳ trong cùng một giờ phải nằm trong cùng một lô để tránh có báo cáo có cùng mã nhận dạng dùng chung trên nhiều lô, dẫn đến lỗi công việc.
Tần suất và độ nhiễu của lô
Bạn nên cân nhắc tác động của tạp âm đến tần suất xử lý báo cáo tổng hợp. Nếu báo cáo tổng hợp được phân lô thường xuyên hơn (ví dụ: báo cáo được xử lý một lần mỗi giờ), thì sẽ có ít sự kiện chuyển đổi hơn và độ nhiễu sẽ có tác động tương đối lớn hơn. Nếu tần suất giảm và báo cáo được xử lý một lần một tuần, thì độ nhiễu sẽ có tác động tương đối nhỏ hơn. Để hiểu rõ hơn về tác động của nhiễu đối với các lô, hãy thử nghiệm với Noise Lab.