0Pricing
Digital Marketing Academy · บทเรียน

การสร้างแบบจำลองข้อมูลการตลาด

ตารางที่สะอาดและรวมเข้าด้วยกัน

การสร้างแบบจำลองข้อมูลการตลาด เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุผลที่ต้องมีคลังข้อมูล
  2. ETL และตัวเชื่อมต่อ
  3. การสร้างแบบจำลองข้อมูลการตลาด
  4. แดชบอร์ดที่ช่วยขับเคลื่อนการลงมือทำ
← กลับไปที่ Digital Marketing Academy