ซิงก์ข้อมูลจาก BigQuery
ภาพรวม
Domain นี้มีตารางเดียวคือ bigquery_sync_config ซึ่งเก็บการตั้งค่าให้ระบบไป
ดึงข้อมูลสรุปลูกค้าจาก Google BigQuery ของลูกค้าเอง ตามรอบเวลาที่กำหนด
แล้วนำผลลัพธ์มาแมปลงเป็น attribute ของเพื่อน LINE
รูปแบบการใช้งานหลักคือลูกค้าที่มี data warehouse อยู่แล้ว และมีตัวเลขที่คำนวณฝั่ง BigQuery เช่น ยอดซื้อสะสมหรือเกรดสมาชิก แล้วต้องการให้ LINE Management นำค่าเหล่านั้นมาใช้ ทำ segmentation และส่งข้อความต่อ
โครงสร้างข้อมูลหลัก
bigquery_sync_config
| กลุ่มข้อมูล | คอลัมน์ | รายละเอียด |
|---|---|---|
| การเชื่อมต่อ | project_id, summary_table, credentials | credentials เก็บ service account JSON แบบ TEXT |
| การจับคู่ข้อมูล | user_id_column, field_mappings | ค่าเริ่มต้นของ user_id_column คือ user_id ส่วน field_mappings เป็น JSONB ที่แมปคอลัมน์เข้ากับ attribute |
| ตารางเวลา | sync_cron, enabled | ค่าเริ่มต้น 0 6 * * * คือทำงานทุกวันเวลา 06:00 น. |
| ผลรอบล่าสุด | last_sync_at, last_sync_result | เก็บผลลัพธ์ล่าสุดแบบ JSONB เพื่อแสดงในหน้าตั้งค่า |
ตารางนี้มี unique constraint (organization_id, line_oa_id) ชื่อ uq_bigquery_sync_config_org_lineoa
ซึ่งบังคับว่าหนึ่งช่องทางตั้งค่าการซิงก์ได้เพียงชุดเดียว และใช้ soft delete ผ่าน deleted_date
ไฟล์ที่เกี่ยวข้อง
prisma/schema.prisma:1560— modelBigquerySyncConfigschema-dumps/2026-07-24/schema.sql:1108
จุดเชื่อมต่อกับ Service อื่น
- cms-api-go ให้หน้าตั้งค่าการเชื่อมต่อ พร้อมปุ่มทดสอบว่า credential และตารางปลายทางใช้งานได้จริง
- worker-go รัน cron ตามค่าใน
sync_cronโดย query ข้อมูลจาก BigQuery แล้วอัปเดตline_user.custom_attributeตามที่ระบุในfield_mappingsการอัปเดตนี้จะทำให้ triggerattribute_changedทำงานตามปกติ เว้นแต่จะตั้งค่าapp.skip_triggersไว้ในรอบนั้น - ปลายทางของข้อมูลคือ เพื่อน LINE และคีย์ที่ใช้แมป ต้องถูกนิยามไว้ล่วงหน้าที่ ทะเบียน Attribute