Khi sync dữ liệu (đơn hàng, khách hàng…) từ nguồn ngoài vào Larkbase bằng Anycross, bạn cần một luồng upsert: bản ghi đã tồn tại thì update, chưa có thì insert — và quan trọng, không đè lên những cột bạn tự thêm tay trong Larkbase.
Ví dụ thực tế: order 8051 đã có trong bảng, lần sync mới nó đổi trạng thái từ "cũ" sang "cancel" → cần update. Order 8052 chưa có → cần insert. Còn cột ghi chú bạn tự thêm cho 8051 thì phải giữ nguyên.
Mấu chốt: định danh bằng một cột ID
Mỗi bản ghi cần một ID định danh (ví dụ order_id), mỗi order là một dòng. ID này là chìa khóa để biết bản ghi đã tồn tại hay chưa. Không có ID ổn định thì không có upsert — chỉ có insert trùng lặp.
Luồng update + insert
Luồng cơ bản gồm các bước:
- Lấy dữ liệu hiện có trong bảng Larkbase (nhớ xử lý phân trang để lấy đủ — xem bài về has_more & page_token).
- So khớp theo ID giữa dữ liệu mới và dữ liệu cũ → chia làm 2 nhóm:
- Update record: ID đã tồn tại → cập nhật các trường thay đổi.
- New record: ID chưa có → thêm mới.
- Update cần
record_idcủa Larkbase (không phải ID nghiệp vụ) để biết sửa đúng dòng; insert thì chỉ cần dữ liệu field. - Khi update, chỉ ghi đè các trường đến từ nguồn; các cột bạn tự thêm trong Larkbase không nằm trong payload nên được giữ nguyên.
Kết quả: chạy lại bao nhiêu lần cũng không sinh bản ghi trùng (idempotent), trạng thái luôn khớp nguồn.
Lưu ý kỹ thuật hay vấp
- Đúng kiểu dữ liệu field. Payload phải khớp định dạng field của Larkbase thì mới upsert được — mỗi field là một object riêng. Sai kiểu là lỗi ngay.
- Tách
record_idra rõ ràng. Update đi theorecord_id; nhầm với ID nghiệp vụ là cập nhật sai dòng. - Lọc bớt dữ liệu cần so khớp. Nếu bảng có 1.000 dòng nhưng đợt sync chỉ động tới 50, hãy lọc theo khoảng thời gian (start/end time) để chỉ kéo phần liên quan — nhẹ và nhanh hơn nhiều.
- Tái sử dụng bằng sub-flow. Phần "lấy dữ liệu gốc" nên gói thành một flow tái dùng (chflow) để các luồng khác gọi lại, đỡ dựng lại từ đầu và giảm số lần thao tác.
Khi nào dùng cách này
Hợp với đồng bộ định kỳ lượng dữ liệu vừa phải vào Larkbase — nơi Larkbase vừa là "mặt bàn làm việc" vừa là nơi giữ thêm thông tin thủ công. Nếu đích đến là kho phân tích thuần (không sửa tay), cân nhắc đẩy thẳng về BigQuery và upsert bằng MERGE cho gọn.
Đây là một mảnh trong bộ bài về đồng bộ dữ liệu Larkbase/Anycross của tôi. Muốn xem nó tạo ra kết quả gì cho doanh nghiệp thật? Ghé các hệ thống tôi đã làm cho SME hoặc đặt lịch trao đổi 15 phút. Cần triển khai trọn gói trên Larksuite? Đó là dịch vụ của Diginno — công ty tôi sáng lập.
Bài viết hữu ích?
Chia sẻ để nhiều người biết đến!