Populate & Contribute

Tài liệu này sẽ hướng dẫn các thao tác dùng để thêm các dữ liệu hàng hoặc cột giữa các bảng có liên quan trên PangoCDP.

Định nghĩa

ContributePopulate đều là các tính năng dùng để đóng góp và luân chuyển dữ liệu giữa các data model trong hệ thống.

  • Populate thực hiện việc chèn dữ liệu theo cột, tức là cập nhật hoặc bổ sung giá trị vào các trường (fields) đã tồn tại trong model hiện tại từ một model khác.

  • Contribute thực hiện việc chèn dữ liệu theo hàng, nghĩa là thêm mới các bản ghi (records) từ nguồn khác vào model hiện tại, thường dùng trong các tình huống nhập liệu hoặc tổng hợp dữ liệu từ nhiều nguồn. Contribute hiện tại chỉ hỗ trợ insert cho:

    • Contact

    • ⁠Contact score

    • ⁠Contact Tag

    • ⁠Profile - ⁠Custom Model

Cả hai tính năng giúp đảm bảo dữ liệu được đồng bộ và tích hợp hiệu quả trong quá trình xây dựng và vận hành mô hình dữ liệu.

Các bước tạo mới Populate Data và Contribute Data

  • Truy cập vào Module Console.

  • Chọn Data Model.

  • Chọn System hoặc Custom.

  • Chọn Data Model cần bổ sung dữ liệu.

  • Chọn Populate Data hoặc Contribute Data cần thêm mới.

  • Nhấn để thêm mới.

Thiết lập Populate Data

Sau khi đã thêm mới thành công, để thiết lập Populate Data, người vận hành thực hiện các bước sau:

  • Chọn data model làm nguồn đóng góp dữ liệu.

  • Chọn Contribute data to.

Cài đặt thông tin

Đây là giao diện cấu hình liên kết giữa hai Data Model trong PangoCDP thông qua tính năng Add a Link Model, giúp người vận hành thiết lập cách dữ liệu được chia sẻ và ánh xạ giữa các model. Dưới đây là phần giới thiệu chi tiết về từng thành phần trong giao diện.

Ý nghĩa các trường thông tin:

No.
Trường dữ liệu
Ý nghĩa

1

Filter

Lọc thông tin đóng góp dữ liệu.

2

Select key

Chọn trường dữ liệu làm Key để đối chiếu giữa 2 model.

3

Copy key

Chọn trường dữ liệu sẽ đóng góp.

4

Transform

Hàm được hỗ trợ để chuyển đổi data event.

Thiết lập lịch

Để thiết lập lịch chạy, người vận hành nhấn vào

Instant

Nếu người vận hành muốn chạy ngay lập tức sau khi submit, chọn trigger "Instant" và thiết lập khung thời gian.

Schedule

Để thiết lập thời gian chạy task theo lịch được lên trước, người vận hành chọn lên lịch với "Schedule"

Người vận hành có thể tự cấu hình thời gian lên lịch bằng cách "Config Schedule"

Cơ chế Look back time

Look back time là khoảng thời gian mà hệ thống sẽ quét ngược lại để lấy dữ liệu mỗi khi chạy đồng bộ theo lịch đã cấu hình (schedule). Lưu ý rằng, khi thực hiện look back hệ thống sẽ dựa vào field createdTime để thực hiện.

  • Ví dụ:

Người vận hành cấu hình Config Schedule để hệ thống chạy lúc 20:00 mỗi ngày và đặt Look back time là 25 tiếng, thì mỗi lần chạy, hệ thống sẽ lấy toàn bộ dữ liệu từ 19:00 của ngày hôm trước đến 20:00 của ngày hiện tại.

Mỗi lần hệ thống chạy, thường sẽ mất vài phút để xử lý xong. Nếu chỉ lấy đúng 24 giờ gần nhất thì có thể sót dữ liệu ở phút cuối cùng do chưa xử lý kịp. Một số cột mốc thường gặp:

  • Nếu chạy mỗi giờ, nên đặt look back là 65 phút

  • Nếu chạy mỗi ngày, nên đặt look back là 25 giờ

Cơ chế Populate Instant

Cơ chế Populate Instant được sử dụng để cập nhật dữ liệu giữa hai Data Models (Source ↔ Dest) dựa trên các cấu hình sao chép dữ liệu (copy config).

  • Case 1: Duyệt từ Dest Model → Source Model

  • Case 2: Từ Source Model → Dest Model (chỉ áp dụng với loại Instant)

Việc cần có hai hướng xử lý là điều cần thiết vì:

  • Có nhiều trường hợp một bản ghi Source có thể liên kết với nhiều bản ghi Dest (1:n).

  • Nếu chỉ chạy một chiều (ví dụ từ Dest Model → Source Model), có thể bỏ sót các record phù hợp nằm trong Source Model chưa từng được match.

  • Chạy thêm chiều Source Model → Dest Model giúp đảm bảo dữ liệu ở cả hai chiều được đồng bộ.

👉 Case 1: Duyệt từ Dest Model → tìm matching record ở Source Model

1. Truy vấn dữ liệu từ Dest Model

  • Hệ thống lần lượt duyệt từng record trong Dest Model.

2. Tìm bản ghi matching trong Source Model

  • Với mỗi record trong Dest Model, hệ thống sử dụng “Select Key” (ví dụ: email, phone, identity,...) từ record ở Dest Model để tìm các record tương ứng trong Source Model.

  • Ví dụ:

Dest record: email = [email protected] → Hệ thống truy Dest để tìm tất cả bản ghi có email Source Model để tìm tất cả record có cùng email.

3. So sánh và cập nhật

  • Nếu tìm được record matching trong Source Model:

    • So sánh các field trong copyFields.

    • Nếu dữ liệu khác biệt thì áp dụng strategy để cập nhật các action phù hợp:

      • Update only if old value is null

      • Override only if new value has value

      • Override

    • Tiến hành copy dữ liệu từ Source sang Dest.

    • Apply converter (nếu có).

    • Apply transform function (nếu có).

    • Update lại record trong Dest Model.

Ghi nhận kết quả: số record cập nhật thành công theo hướng này được lưu vào totalUpdated.

👉 Case 2: Duyệt từ Source Model → tìm matching record ở Dest Model

⚠️ Chỉ áp dụng khi trigger là Instant – không áp dụng cho Schedule.

1. Truy vấn dữ liệu từ Source Model

  • Hệ thống duyệt từng bản ghi trong Source Model.

2. Tìm bản ghi matching trong Dest Model

  • Với mỗi record từ Source, hệ thống lấy key như email, phone... để tìm các record trong Dest Model.

  • Ví dụ:

Source record: phone = 0989123456 → Hệ thống truy Dest Model để tìm các bản ghi có phone = 0989123456.

3. So sánh và cập nhật

  • Nếu tìm được record phù hợp trong Dest Model:

    • So sánh các copyFields.

    • Nếu khác biệt → apply strategy như Case 1.

    • Cập nhật lại Dest Record.

    • Apply converter và transform function (nếu có).

Ghi nhận kết quả: số record cập nhật theo hướng này được lưu vào totalUpdated2.

Giới hạn hệ thống

Model
Instance Trigger
Schedule Trigger

Dest Model

500,000 record

100,000 record

Source Model

10,000 record

Một số lưu ý quan trọng

👉Khi chạy hai chiều từ Dest sang Source và từ Source sang Dest, thì record được ghi nhận ở totalUpdatedtotalUpdated2 có trùng nhau không?

Về nguyên tắc, totalUpdatedtotalUpdated2 là hai danh sách record độc lập, tương ứng với hai hướng xử lý khác nhau. Do đó, thông thường sẽ không trùng nhau.

  • totalUpdated: là các bản ghi được cập nhật khi hệ thống duyệt từ Dest Model → Source Model.

  • totalUpdated2: là các bản ghi được cập nhật khi hệ thống duyệt từ Source Model → Dest Model (chỉ xảy ra với trigger Instant).

Tuy nhiên, trong trường hợp chẳng hạn khi lượng dữ liệu nhỏ, vẫn có khả năng record tại totalUpdatedtotalUpdated2 trùng nhau.

👉Tại giao diện Task Execution Logs, chỉ số Record được tính như thế nào?

Khi vào Task Execution Logs và xem cột Record, giá trị hiển thị chính là totalUpdated. Cụ thể:

  • Khi người dùng truy cập màn hình Task Execution Logs, cột Record trên giao diện hiện tại chỉ hiển thị giá trị của totalUpdated.

  • Hệ thống không cộng thêm totalUpdated2 vào chỉ số đang hiển thị trên giao diện.

Điều đó có nghĩa là nếu hệ thống thực hiện đồng thời cả Case 1 và Case 2, thì trên giao diện, người dùng chỉ nhìn thấy số record được cập nhật từ Case 1 (Dest → Source), còn số được cập nhật từ Case 2 (Source → Dest) chỉ xuất hiện trong log chi tiết JSON.

Last updated

Was this helpful?