ใช้ขนาดที่เปลี่ยนแปลงอย่างช้าๆ

เสร็จสมบูรณ์เมื่อ

ข้อมูลมิติข้อมูลเปลี่ยนแปลงเมื่อเวลาผ่านไป ลูกค้าย้ายไปยังเมืองใหม่ ผลิตภัณฑ์ถูกเปลี่ยนชื่อ และพนักงานย้ายระหว่างแผนก บทบาทหลักของคลังข้อมูลคือการอธิบายอดีตอย่างถูกต้อง ดังนั้นคุณจึงต้องมีกลยุทธ์ในการจัดการการเปลี่ยนแปลงเหล่านี้ รูปแบบมิติ (SCD) ที่เปลี่ยนแปลงอย่างช้าๆ จะกําหนดวิธีที่แบบจําลองมิติของคุณตอบสนองเมื่อข้อมูลต้นฉบับมีการเปลี่ยนแปลง

ทําความเข้าใจประเภท SCD

ข้อกําหนดทางธุรกิจที่แตกต่างกันเรียกร้องให้มีแนวทางที่แตกต่างกันในการติดตามการเปลี่ยนแปลง ประเภท SCD ต่อไปนี้มีตั้งแต่การเพิกเฉยต่อการเปลี่ยนแปลงทั้งหมดไปจนถึงการรักษาบันทึกในอดีตทั้งหมด

ประเภทที่ 0: เก็บต้นฉบับไว้

ประเภท 0 จะรักษาค่าเดิมและไม่อนุญาตให้มีการเปลี่ยนแปลง ใช้ชนิด 0 สําหรับข้อมูลอ้างอิงคงที่ที่ไม่ควรเปลี่ยนแปลง เช่น คะแนนเครดิตเดิม ณ เวลาที่สมัครหรือวันเกิด

ประเภทที่ 1: เขียนทับ

ประเภท 1 เขียนทับค่าที่มีอยู่ด้วยค่าใหม่ ไม่มีประวัติที่เก็บรักษาไว้ วิธีนี้เหมาะสมเมื่อ:

  • การเปลี่ยนแปลงเป็นการแก้ไขข้อผิดพลาด
  • ความถูกต้องในอดีตของแอตทริบิวต์ที่เปลี่ยนแปลงนั้นไม่สําคัญ
  • คุณต้องการการบํารุงรักษาที่ง่ายที่สุด

ตัวอย่างเช่น หากที่อยู่อีเมลของลูกค้าเปลี่ยนไป การอัปเดตประเภทที่ 1 จะแทนที่อีเมลเก่าด้วยอีเมลใหม่ ข้อเท็จจริงในอดีตทั้งหมดที่เกี่ยวข้องกับลูกค้ารายนั้นจะสะท้อนถึงที่อยู่อีเมลปัจจุบัน

Note

การเปลี่ยนแปลงประเภทที่ 1 อาจส่งผลต่อการวิเคราะห์ในอดีต ถ้าพนักงานขายถูกมอบหมายใหม่ไปยังภูมิภาคใหม่ และคุณเขียนทับภูมิภาค ยอดขายที่ผ่านมาทั้งหมดของพวกเขาจะปรากฏภายใต้ภูมิภาคใหม่ พิจารณาว่าลักษณะการทํางานนี้ตรงตามข้อกําหนดการรายงานของคุณหรือไม่

ประเภทที่ 2: เพิ่มแถวใหม่

ประเภทที่ 2 แทรกแถวใหม่สําหรับการเปลี่ยนแปลงแต่ละครั้ง โดยรักษาประวัติทั้งหมด แถวเดิมยังคงอยู่ และสมาชิกมิติแต่ละเวอร์ชันจะได้รับคีย์ตัวแทนของตัวเอง ประเภท SCD นี้พบได้บ่อยที่สุดสําหรับแอตทริบิวต์ที่ความถูกต้องในอดีตมีความสําคัญ

การใช้งานประเภทที่ 2 ต้องมีคอลัมน์เพิ่มเติม:

คอลัมน์ จุดประสงค์
วันที่เริ่มต้น เมื่อเวอร์ชันนี้มีผลบังคับใช้
วันที่สิ้นสุด เมื่อเวอร์ชันนี้ถูกแทนที่ (แถวปัจจุบันใช้วันที่ในอนาคตไกล เช่น 9999-12-31)
เป็นธงปัจจุบัน ระบุเวอร์ชันที่ใช้งานอยู่สําหรับการค้นหาระหว่างการโหลดตารางข้อเท็จจริง

เมื่อมีการเปลี่ยนแปลง กระบวนการ ETL จะทําดังนี้

  1. อัปเดตแถวปัจจุบันที่มีอยู่โดยตั้งค่าวันที่สิ้นสุดและเปลี่ยนค่าสถานะปัจจุบันเป็นFALSE
  2. แทรกแถวใหม่ที่มีค่าแอตทริบิวต์ใหม่, คีย์ตัวแทนใหม่, วันที่เริ่มต้นที่ตั้งค่าเป็นวันที่เปลี่ยนแปลง และค่าสถานะปัจจุบันที่ตั้งค่าเป็นTRUE

ประเภทที่ 2 เป็นสิ่งสําคัญเมื่อคุณต้องการวิเคราะห์อดีตอย่างถูกต้อง ตัวอย่างเช่น หากคุณต้องการรายงานยอดขายตามภูมิภาคที่พนักงานขายได้รับมอบหมาย ณ เวลาที่ขายแต่ละครั้ง การติดตามประเภทที่ 2 จะรักษาบริบทนั้นไว้

ไดอะแกรมที่แสดง SCD Type 2 ก่อนและหลังการเปลี่ยนแปลงภูมิภาคของลูกค้า โดยมีการเพิ่มแถวใหม่และแถวเดิมหมดอายุ

ประเภทที่ 3: เพิ่มคอลัมน์ใหม่

ประเภท 3 จะเพิ่มคอลัมน์เพื่อจัดเก็บค่าก่อนหน้าควบคู่ไปกับค่าปัจจุบัน แนวทางนี้ติดตามประวัติที่จํากัด ซึ่งโดยทั่วไปจะเป็นเพียงการเปลี่ยนแปลงล่าสุดเท่านั้น

ตัวอย่างเช่น มิติพนักงานขายอาจรวมCurrentSalesRegionทั้งคอลัมน์และPreviousSalesRegion เมื่อพนักงานขายย้าย ภูมิภาคปัจจุบันจะเปลี่ยนเป็นคอลัมน์ก่อนหน้า และภูมิภาคใหม่จะกลายเป็นคอลัมน์ปัจจุบัน

ประเภท 3 มีประโยชน์เมื่อคุณต้องการเปรียบเทียบสถานะปัจจุบันกับสถานะก่อนหน้าเพียงสถานะเดียว อย่างไรก็ตาม มักไม่ใช้เพราะคุณสูญเสียการเปลี่ยนแปลงระดับกลางทั้งหมด

แบบที่ 6: แนวทางไฮบริด

Type 6 รวมองค์ประกอบของ Type 1, Type 2 และ Type 3 รักษาประวัติเวอร์ชันเต็ม (ประเภท 2) ในขณะเดียวกันก็จัดเก็บค่าปัจจุบันในทุกแถว (พิมพ์ทับ Type 1 ในคอลัมน์เฉพาะ) และค่าก่อนหน้า (Type 3)

ไฮบริดนี้ช่วยให้คิวรีสามารถเข้าถึงทั้งบริบทในอดีตและปัจจุบันจากแถวเวอร์ชันใดก็ได้ อย่างไรก็ตาม จะเพิ่มความซับซ้อนให้กับกระบวนการ ETL เนื่องจากทุกแถวสําหรับสมาชิกมิติต้องได้รับการอัปเดตเมื่อค่าปัจจุบันมีการเปลี่ยนแปลง

เลือกประเภท SCD ที่เหมาะสม

ใช้คําแนะนําต่อไปนี้เพื่อเลือกประเภท SCD ที่เหมาะสม:

ข้อกำหนด ประเภทที่แนะนํา
แก้ไขข้อมูลอ้างอิงที่ไม่เคยเปลี่ยนแปลง ชนิดที่ 0
ไม่จําเป็นต้องแก้ไขหรือประวัติ ชนิดที่ 1
ต้องการความถูกต้องในอดีตอย่างเต็มที่ ชนิดที่ 2
ต้องการเฉพาะการเปรียบเทียบปัจจุบันกับก่อนหน้า แบบที่ 3
ต้องการทั้งมุมมองปัจจุบันและในอดีตในทุกแถว แบบที่ 6

พิจารณาการแลกเปลี่ยนการใช้งาน

SCD แต่ละประเภทมีผลกระทบด้านต้นทุนและความซับซ้อน:

  • พื้นที่เก็บข้อมูล: มิติข้อมูลประเภท 2 จะเพิ่มขึ้นเมื่อเวลาผ่านไปเมื่อแถวเวอร์ชันใหม่สะสม วางแผนสําหรับพื้นที่จัดเก็บที่เพิ่มขึ้นและพิจารณาว่าการเติบโตส่งผลต่อประสิทธิภาพของคิวรีอย่างไร
  • ความซับซ้อนของคิวรี: การรวมตารางข้อเท็จจริงกับมิติข้อมูลประเภท 2 จําเป็นต้องมีการจับคู่ในวันที่มีผลบังคับใช้หรือใช้ค่าสถานะปัจจุบัน ซึ่งจะเพิ่มความซับซ้อนให้กับคิวรี
  • ความซับซ้อนของ ETL: ประเภท 2 และประเภท 6 ต้องการตรรกะ ETL ที่ซับซ้อนมากขึ้นเพื่อตรวจจับการเปลี่ยนแปลง
  • ข้อกําหนดทางธุรกิจ: การเลือกประเภท SCD ควรขับเคลื่อนตามความต้องการทางธุรกิจ อย่าติดตามประวัติในที่ที่ไม่จําเป็น และอย่าข้ามการติดตามประวัติที่มันอยู่

เคล็ดลับ

หลีกเลี่ยงการใช้การติดตามประเภท 2 กับแอตทริบิวต์ทุกรายการในมิติข้อมูล ติดตามประวัติเฉพาะแอตทริบิวต์ที่ธุรกิจต้องการการวิเคราะห์ในอดีตเท่านั้น ใช้ประเภท 1 สําหรับส่วนที่เหลือเพื่อให้สามารถจัดการมิติได้