การสร้างแบบจำลองข้อมูลการตลาด
ตารางที่สะอาดและรวมเข้าด้วยกัน
การสร้างแบบจำลองข้อมูลการตลาด เป็นบทเรียน Digital Marketing Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Digital Marketing Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Digital Marketing Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงต้องสร้างแบบจำลอง
ตารางข้อมูลดิบจากตัวเชื่อมต่อมีความยุ่งเหยิง ทั้งชื่อคอลัมน์ที่ไม่สอดคล้องกัน สกุลเงินปะปนกัน ระดับรายละเอียดต่างกัน และลักษณะเฉพาะของแต่ละแพลตฟอร์ม การสอบถามตารางเหล่านี้โดยตรงจึงให้ตัวเลขที่ผิดและไม่สามารถทำซ้ำได้
การสร้างแบบจำลองข้อมูลคือกระบวนการเปลี่ยนแถวข้อมูลดิบให้เป็นตารางที่สะอาด สอดคล้องกัน และพร้อมใช้งานทางธุรกิจ ที่นี่คือจุดที่นิยาม ROAS อัตราการเปลี่ยนเป็นลูกค้า และรายได้ให้ถูกต้องเพียงครั้งเดียว เพื่อให้รายงานทุกฉบับใช้ความหมายเดียวกัน
สคีมาแบบดาว
รูปแบบการวิเคราะห์ที่ใช้กันมากที่สุดคือสคีมาแบบดาว ซึ่งมีตารางข้อเท็จจริงส่วนกลางที่เก็บเหตุการณ์ที่วัดผลได้ และมีตารางมิติล้อมรอบเพื่ออธิบายเหตุการณ์เหล่านั้น ข้อเท็จจริงเก็บตัวเลข เช่น ค่าใช้จ่าย จำนวนคลิก และรายได้ ส่วนมิติเก็บบริบท เช่น แคมเปญ วันที่ ช่องทาง และลูกค้า
รูปแบบนี้เข้าใจง่ายสำหรับผู้ทำการตลาดและมีประสิทธิภาพสำหรับเครื่องมือ BI ซึ่งเชื่อมตารางข้อเท็จจริงหนึ่งตารางกับหลายตารางมิติ เพื่อแยกดูตัวชี้วัดตามคุณลักษณะใดก็ได้
dim_date
|
dim_channel -- fct_ad_spend -- dim_campaign
|
dim_account
fct_ad_spend (facts): impressions, clicks, cost, conversions
dims: who / what / when contextข้อเท็จจริงกับมิติ
ตารางข้อเท็จจริงมีแถวยาวและนำมาบวกสะสมได้ โดยมีหนึ่งแถวต่อเหตุการณ์หรือต่อวันและแคมเปญ พร้อมค่าตัวเลขที่นำมาหาผลรวมได้ ส่วนตารางมิติมีคอลัมน์กว้างและใช้บรรยายข้อมูล โดยมีหนึ่งแถวต่อแคมเปญหรือลูกค้า พร้อมคุณลักษณะที่ใช้กรองและจัดกลุ่มได้
หลักทดสอบคือ หากคุณจะใช้ SUM กับสิ่งนั้น สิ่งนั้นคือข้อเท็จจริง หากคุณจะใช้ GROUP BY กับสิ่งนั้น สิ่งนั้นคือมิติ ค่าใช้จ่ายเป็นข้อเท็จจริง ส่วนชื่อแคมเปญเป็นมิติ
fct_ad_spend dim_campaign
---------------- ----------------
date campaign_id (PK)
campaign_id (FK) campaign_name
cost <-SUM-> channel
clicks <-SUM-> objective
conversions start_dateระดับรายละเอียด: การตัดสินใจแรก
ระดับรายละเอียดคือสิ่งที่หนึ่งแถวในตารางข้อเท็จจริงแทน การประกาศระดับรายละเอียดก่อนถือเป็นการตัดสินใจด้านการสร้างแบบจำลองที่สำคัญที่สุด การผสมระดับรายละเอียด เช่น แถวรายวันกับยอดรวมตลอดอายุการใช้งาน จะทำให้เกิดการนับซ้ำและทำให้ตัวชี้วัดทุกตัวในขั้นตอนถัดไปผิดเพี้ยน
ระบุระดับรายละเอียดด้วยภาษาที่เข้าใจง่าย เช่น หนึ่งแถวต่อแคมเปญต่อวัน จากนั้นทุกคอลัมน์ต้องเป็นจริงสำหรับระดับรายละเอียดนี้ และการโหลดข้อมูลทุกครั้งต้องปฏิบัติตามระดับดังกล่าว
Declared grain: one row per campaign per day
-- enforce uniqueness on the grain
SELECT date, campaign_id, COUNT(*)
FROM fct_ad_spend
GROUP BY 1,2
HAVING COUNT(*) > 1; -- must return 0 rowsแบบจำลองขั้นเตรียมข้อมูล
ก่อนสร้างตารางข้อเท็จจริงและตารางมิติ ให้สร้างแบบจำลองขั้นเตรียมข้อมูล โดยสร้างหนึ่งแบบจำลองต่อหนึ่งตารางแหล่งข้อมูล เปลี่ยนชื่อคอลัมน์ให้เป็นมาตรฐาน แปลงชนิดข้อมูล และทำหน่วยให้เป็นมาตรฐาน เช่น เซนต์เป็นดอลลาร์ และวันที่ UTC แบบจำลองขั้นเตรียมข้อมูลหนึ่งแบบจำลองควรจับคู่กับตารางข้อมูลดิบหนึ่งตารางเท่านั้น
ขั้นเตรียมข้อมูลคือชั้นทำความสะอาดข้อมูล ซึ่งแยกลักษณะเฉพาะของแหล่งข้อมูลออกไป เพื่อให้ตารางสำหรับงานธุรกิจในขั้นถัดไปไม่จำเป็นต้องรู้ว่า Meta เรียกสิ่งนี้ว่าค่าใช้จ่าย แต่ Google เรียกว่าต้นทุน
-- stg_google_ads__spend
SELECT
date AS spend_date,
campaign_id,
'google' AS channel,
cost_micros / 1000000 AS cost, -- micros -> dollars
clicks,
conversions
FROM raw.google_ads__campaign_stats;การรวมช่องทาง
แพลตฟอร์มโฆษณาแต่ละแห่งรายงานข้อมูลแตกต่างกัน แต่หลังจากผ่านขั้นเตรียมข้อมูลแล้ว ข้อมูลเหล่านั้นจะมีรูปแบบร่วมกัน แบบจำลองถัดไปจะรวมข้อมูลทั้งหมดเป็นตารางข้อเท็จจริงค่าใช้จ่ายข้ามช่องทางหนึ่งตาราง ซึ่งเป็นรากฐานของการรายงานแบบรวม
ตารางเดียวนี้ทำให้สามารถคำนวณ ROAS รวมได้ เมื่อทุกช่องทางปรับให้อยู่ในคอลัมน์เดียวกันแล้ว คำสั่งสอบถามหนึ่งชุดก็สามารถรวมค่าใช้จ่ายจาก Google, Meta และ TikTok ได้พร้อมกัน
-- fct_ad_spend: union all channels
SELECT * FROM stg_google_ads__spend
UNION ALL
SELECT * FROM stg_meta_ads__spend
UNION ALL
SELECT * FROM stg_tiktok_ads__spend;
-- now: SUM(cost) GROUP BY channel worksมิติที่ปรับให้สอดคล้องกัน
สำหรับการวิเคราะห์ข้ามช่องทาง ตารางมิติต้องได้รับการปรับให้สอดคล้องกัน โดยใช้ dim_date และ dim_channel ร่วมกัน ซึ่งตารางข้อเท็จจริงทุกตารางเชื่อมเข้าหาในรูปแบบเดียวกัน จากนั้น "รายได้ตามเดือนตามช่องทาง" จะมีความหมายเหมือนกัน ไม่ว่าแหล่งข้อมูลจะมาจากโฆษณา อีเมล หรือเว็บ
มิติที่ปรับให้สอดคล้องกันทำให้คุณวางค่าใช้จ่ายและรายได้ไว้เคียงข้างกันในแผนภูมิเดียวได้ หากไม่มีมิติเหล่านี้ การเชื่อมข้อมูลจะไม่ตรงกันและยอดรวมจะแตกต่างกันโดยไม่มีใครสังเกต
Conformed dims shared across facts:
dim_date -> joined by every fact on date
dim_channel -> 'google','meta','email','organic'
dim_campaign -> unified campaign keys
-> spend and revenue line up on the same axesการจัดสรรเครดิตด้วย SQL
การจัดสรรเครดิตคือการมอบเครดิตของการเปลี่ยนเป็นลูกค้าให้แก่จุดสัมผัส วิธีคลิกสุดท้ายเป็นวิธีที่ง่ายที่สุด โดยแหล่งการตลาดสุดท้ายก่อนการเปลี่ยนเป็นลูกค้าจะได้รับเครดิตทั้งหมด ส่วนวิธีคลิกแรก วิธีแบบเส้นตรง และวิธีตามตำแหน่งจะแบ่งเครดิตแตกต่างกัน
ในคลังข้อมูล คุณนำการจัดสรรเครดิตมาใช้เป็นแบบจำลอง ไม่ใช่กล่องดำของแพลตฟอร์ม ด้วยข้อมูลเหตุการณ์ระดับเหตุการณ์จาก GA4 คุณสามารถจัดลำดับจุดสัมผัสของผู้ใช้แต่ละคนด้วยฟังก์ชันหน้าต่างและใช้กฎใดก็ได้ จากนั้นจึงเปรียบเทียบผลลัพธ์ของแต่ละแบบจำลองได้อย่างตรงไปตรงมา
-- last non-direct click per conversion
WITH touches AS (
SELECT user_id, channel, event_time,
ROW_NUMBER() OVER (PARTITION BY user_id
ORDER BY event_time DESC) AS rn
FROM web_touchpoints
WHERE channel <> 'direct'
)
SELECT channel, COUNT(*) FROM touches WHERE rn=1
GROUP BY 1;มิติที่เปลี่ยนแปลงอย่างช้า ๆ
คุณลักษณะของมิติเปลี่ยนแปลงไปตามเวลา เช่น ผู้รับผิดชอบงบประมาณของแคมเปญเปลี่ยนคน หรือลูกค้าเลื่อนระดับสมาชิก มิติที่เปลี่ยนแปลงอย่างช้า ๆ ประเภทที่ 2 จะเก็บประวัติไว้โดยเพิ่มแถวใหม่พร้อมวันที่เริ่มต้นและสิ้นสุดความมีผล แทนการเขียนทับข้อมูลเดิม
สิ่งนี้สำคัญต่อการรายงาน ณ จุดเวลาอย่างถูกต้อง หากต้องการทราบว่าลูกค้าอยู่ในกลุ่มใดตอนที่เปลี่ยนเป็นลูกค้า คุณต้องใช้มิติฉบับที่มีผลในเวลานั้น ไม่ใช่ฉบับของวันนี้
dim_customer (SCD Type 2)
cust_id tier valid_from valid_to is_current
101 free 2026-01-01 2026-04-01 false
101 pro 2026-04-01 9999-12-31 true
-- join on event_date BETWEEN valid_from AND valid_toการทดสอบและเอกสารประกอบ
แบบจำลองคือโค้ด ดังนั้นจึงต้องทดสอบ แบบจำลอง เครื่องมืออย่าง dbt ช่วยให้คุณยืนยันได้ว่าคีย์ไม่ซ้ำและไม่เป็นค่าว่าง ค่าช่องทางอยู่ในชุดค่าที่ยอมรับ และความสัมพันธ์ระหว่างตารางถูกต้อง
การทดสอบช่วยตรวจพบการเปลี่ยนแปลงสคีมาโดยไม่คาดหมายและการเชื่อมตารางที่ผิดก่อนจะไปถึงแดชบอร์ด เมื่อใช้ร่วมกับเอกสารประกอบและลำดับสายข้อมูลที่สร้างขึ้นโดยอัตโนมัติ สิ่งเหล่านี้จะทำให้แบบจำลองน่าเชื่อถือและช่วยให้ผู้ใช้ใหม่เริ่มงานได้ แทนที่จะเป็นกล่องดำที่เปราะบาง
# dbt schema test
models:
- name: fct_ad_spend
columns:
- name: campaign_id
tests: [not_null]
- name: channel
tests:
- accepted_values:
values: ['google','meta','tiktok']ตารางสำหรับงานธุรกิจ: ชั้นสุดท้าย
ชั้นบนสุดคือตารางสำหรับงานธุรกิจ ซึ่งเป็นตารางพร้อมใช้ทางธุรกิจที่จัดรูปแบบสำหรับผู้ใช้เฉพาะกลุ่ม เช่น ตาราง marketing_performance ที่เชื่อมค่าใช้จ่ายกับรายได้ไว้แล้ว และคำนวณ ROAS ต่อช่องทางต่อวัน
เครื่องมือ BI จะอ่านข้อมูลจากตารางสำหรับงานธุรกิจเท่านั้น การเชื่อมตารางและรวมข้อมูลล่วงหน้าในชั้นนี้ทำให้แดชบอร์ดทำงานได้รวดเร็วและมีต้นทุนต่ำ อีกทั้งนักวิเคราะห์ทุกคนยังใช้คำนิยามที่ถูกต้องเหมือนกัน
-- marts.marketing_performance (1 row / day / channel)
SELECT s.spend_date, s.channel,
SUM(s.cost) AS spend,
SUM(r.revenue) AS revenue,
SAFE_DIVIDE(SUM(r.revenue), SUM(s.cost)) AS roas
FROM fct_ad_spend s
LEFT JOIN fct_revenue r USING (spend_date, channel)
GROUP BY 1,2;ตรวจสอบความเข้าใจ
คุณกำลังสร้างตารางข้อเท็จจริงสำหรับประสิทธิภาพโฆษณาและต้องหลีกเลี่ยงการนับซ้ำ สิ่งใดคือสิ่งสำคัญที่สุดเพียงอย่างเดียวที่ต้องประกาศก่อนเขียนคอลัมน์ใด ๆ
ทบทวน
การสร้างแบบจำลองจะเปลี่ยนตารางดิบที่ยุ่งเหยิงให้เป็นข้อมูลที่เชื่อถือได้และพร้อมใช้งานทางธุรกิจผ่านหลายชั้น ได้แก่ ชั้นเตรียมข้อมูลที่ทำความสะอาดและปรับรูปแบบของแต่ละแหล่งข้อมูล ตารางข้อเท็จจริงและมิติที่ปรับมาตรฐานซึ่งประกอบเป็นโครงสร้างดาว และมาร์ตที่เชื่อมข้อมูลทุกอย่างไว้ล่วงหน้าสำหรับ BI
กำหนดระดับรายละเอียดก่อน รวมช่องทางเข้าด้วยกันเพื่อคำนวณตัวชี้วัดแบบผสม ใช้การจัดสรรเครดิตและประวัติ SCD ประเภท 2 ในเอสคิวแอล และทดสอบแบบจำลองทุกแบบ เพื่อให้ตัวเลขที่ผิดพลาดแสดงข้อผิดพลาดอย่างชัดเจนแทนที่จะไปปรากฏบนแดชบอร์ด
คำถามที่พบบ่อย
บทเรียน “การสร้างแบบจำลองข้อมูลการตลาด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การสร้างแบบจำลองข้อมูลการตลาด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Digital Marketing Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Digital Marketing Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสร้างแบบจำลองข้อมูลการตลาด”
ตารางที่สะอาดและรวมเข้าด้วยกัน คุณปฏิบัติ Digital Marketing Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Digital Marketing Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Digital Marketing Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การสร้างแบบจำลองข้อมูลการตลาด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Digital Marketing Academy นี้ได้ไหม
ได้ บทเรียน Digital Marketing Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เหตุผลที่ต้องมีคลังข้อมูล
- ETL และตัวเชื่อมต่อ
- การสร้างแบบจำลองข้อมูลการตลาด
- แดชบอร์ดที่ช่วยขับเคลื่อนการลงมือทำ