Khi phân lô các báo cáo tổng hợp, bạn phải tối ưu hoá các chiến lược phân 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 được đề xuất để gửi các lô 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 quá 28 ngày.
Chờ báo cáo
Bạn nên đợi báo cáo đến muộn khi thu thập báo cáo để phân 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 thu thập các báo cáo bị trễ, hãy kiểm tra trường scheduled_report_time
và lưu ý độ trễ thời gian theo giờ vì tỷ lệ nhận được báo cáo là 90%, 95% và 99%. Dữ liệu đó có thể được dùng để xác định thời gian chờ nhận báo cáo đến trễ.
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. Do đó, một báo cáo tóm tắt sẽ bao gồm phần lớn các báo cáo có trong lô tương ứng với thời gian báo cáo đã lên lịch.
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ả các báo cáo tổng hợp có cùng mã nhận dạng dùng chung phải được đưa vào 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ả báo cáo liên kết với 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 report_id
trong một lô, thì chỉ báo cáo đầu tiên sẽ được tổng hợp, còn các báo cáo khác sẽ bị coi là trùng lặp và tự động bị loại bỏ; 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 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 gán một mã nhận dạng dùng chung. Mã này được tạo từ các điểm dữ liệu kết hợp 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 của tất cả cá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 Lô #1, nên Lô số 2 sẽ không được cho phép và sẽ gặp 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 xem xét thời gian báo cáo theo lịch của báo cáo (shared_info.scheduled_report_time
) khi phân 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ô, điều này sẽ 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 độ nhiễu đối với 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.