แชร์ผ่าน


การสร้างแบบจําลองมิติใน Microsoft Fabric Warehouse: ตารางมิติ

นําไปใช้กับ:✅ จุดสิ้นสุดการวิเคราะห์ SQL และ Warehouse ใน Microsoft Fabric

หมายเหตุ

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

บทความนี้ให้คําแนะนําและแนวทางปฏิบัติที่ดีที่สุดสําหรับการออกแบบ ตารางมิติ ในแบบจําลองมิติ ซึ่งมีคําแนะนําในทางปฏิบัติสําหรับ Warehouse ใน Microsoft Fabric ซึ่งเป็นประสบการณ์ที่สนับสนุนความสามารถ T-SQL จํานวนมาก เช่น การสร้างตารางและการจัดการข้อมูลในตาราง ดังนั้น คุณจึงสามารถควบคุมการสร้างตารางแบบจําลองมิติของคุณและโหลดข้อมูลได้อย่างสมบูรณ์

หมายเหตุ

ในบทความนี้ คําว่า คลัง ข้อมูลหมายถึงคลังข้อมูลองค์กร ซึ่งนําเสนอการรวมที่ครอบคลุมของข้อมูลที่สําคัญทั่วทั้งองค์กร ในทางตรงกันข้าม คําว่าคลังสินค้าแบบสแตนด์อโลนหมายถึง Fabric Warehouse ซึ่งเป็นซอฟต์แวร์ที่เป็นบริการฐานข้อมูลเชิงสัมพันธ์ (SaaS) ที่คุณสามารถใช้เพื่อใช้คลังข้อมูลได้ เพื่อความชัดเจน ในบทความนี้จะมีการกล่าวถึงอย่างหลังเป็น Fabric Warehouse

เคล็ดลับ

หากคุณไม่มีประสบการณ์ด้านการสร้างแบบจําลองมิติ ให้พิจารณาชุดบทความนี้ในขั้นตอนแรกของคุณ ซึ่งไม่ได้มีไว้เพื่อการสนทนาที่สมบูรณ์เกี่ยวกับการออกแบบแบบจําลองเชิงมิติ สําหรับข้อมูลเพิ่มเติม ให้ดูที่เนื้อหาที่เผยแพร่ที่ปรับใช้อย่างกว้างขวางโดยตรง เช่น ชุดเครื่องมือคลังข้อมูล: คําแนะนําในการสร้างแบบจําลอง เชิงมิติฉบับสมบูรณ์ (รุ่นที่ 3, 2013) โดย Ralph Kimball และอื่น ๆ

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

โครงสร้างตารางมิติ

เมื่อต้องการอธิบายโครงสร้างของตารางมิติ ให้พิจารณาตัวอย่างต่อไปนี้ของตารางมิติพนักงานขายที่ชื่อว่าd_Salesperson ตัวอย่างนี้ใช้แนวทางปฏิบัติในการออกแบบที่ดี แต่ละกลุ่มของคอลัมน์จะอธิบายไว้ในส่วนต่อไปนี้

CREATE TABLE d_Salesperson
(
    --Surrogate key
    Salesperson_SK INT NOT NULL,
    
    --Natural key(s)
    EmployeeID VARCHAR(20) NOT NULL,
    
    --Dimension attributes
    FirstName VARCHAR(20) NOT NULL,
    <…>
    
    --Foreign key(s) to other dimensions
    SalesRegion_FK INT NOT NULL,
    <…>
    
    --Historical tracking attributes (SCD type 2)
    RecChangeDate_FK INT NOT NULL,
    RecValidFromKey INT NOT NULL,
    RecValidToKey INT NOT NULL,
    RecReason VARCHAR(15) NOT NULL,
    RecIsCurrent BIT NOT NULL,
    
    --Audit attributes
    AuditMissing BIT NOT NULL,
    AuditIsInferred BIT NOT NULL,
    AuditCreatedDate DATE NOT NULL,
    AuditCreatedBy VARCHAR(15) NOT NULL,
    AuditLastModifiedDate DATE NOT NULL,
    AuditLastModifiedBy VARCHAR(15) NOT NULL
);

คีย์ตัวแทน

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

คีย์ตัวแทนพยายามที่จะเลียนแบบคลังข้อมูลจากการเปลี่ยนแปลงในข้อมูลต้นทาง นอกจากนี้ยังให้ประโยชน์อื่น ๆ อีกมากมายซึ่งช่วยให้คุณสามารถ:

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

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

คีย์ธรรมชาติ

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

ในบางครั้งมิติไม่มีคีย์ที่เป็นธรรมชาติ ซึ่งอาจเป็นกรณีสําหรับมิติวันที่หรือมิติการค้นหาของคุณ หรือเมื่อคุณสร้างข้อมูลมิติโดยการทําให้ไฟล์แฟล็ตเป็นมาตรฐาน

แอตทริบิวต์มิติ

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

เคล็ดลับ

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

หากคุณวางแผนที่จะสร้าง แบบจําลองความหมาย Direct Lake คุณควรรวมคอลัมน์ที่เป็นไปได้ทั้งหมดที่จําเป็นสําหรับการกรองและการจัดกลุ่มเป็นแอตทริบิวต์มิติ นั่นเป็นเพราะแบบจําลองความหมาย Direct Lake ไม่รองรับคอลัมน์จากการคํานวณ

คีย์นอก

ตารางมิติตัวอย่างยังมี Foreign Key ซึ่งมีชื่อว่าSalesRegion_FK ตารางมิติอื่น ๆ สามารถอ้างอิง Foreign Key และการแสดงตนในตารางมิติเป็นกรณีพิเศษ ซึ่งแสดงว่าตารางเกี่ยวข้องกับตารางมิติอื่นซึ่งหมายความว่าอาจเป็นส่วนหนึ่งของ มิติ ที่เพิ่มการทํานอร์มัลเฟล็กหรือเกี่ยวข้องกับ มิติที่นอกเหนือไปจากมิติข้อมูล

Fabric Warehouse สนับสนุนข้อจํากัดของ Foreign Key แต่ไม่สามารถบังคับใช้ได้ ดังนั้นจึงเป็นสิ่งสําคัญที่กระบวนการ ETL ของคุณจะทดสอบความสมบูรณ์ระหว่างตารางที่เกี่ยวข้องเมื่อมีการโหลดข้อมูล

การสร้างคีย์นอกยังเป็นความคิดที่ดี เหตุผลหนึ่งที่ดีในการสร้างคีย์นอกที่ไม่ถูกบังคับใช้คือการอนุญาตให้เครื่องมือการสร้างแบบจําลอง เช่น Power BI Desktop ตรวจจับและสร้างความสัมพันธ์ระหว่างตารางในแบบจําลองเชิงความหมายโดยอัตโนมัติ

แอตทริบิวต์การติดตามในอดีต

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

สําหรับข้อมูลเพิ่มเติม โปรดดู จัดการการเปลี่ยนแปลง ในอดีต ภายหลังในบทความนี้

แอตทริบิวต์การตรวจสอบ

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

ขนาดตารางมิติ

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

ขนาดขนาดใหญ่อาจมาจากระบบแหล่งข้อมูลหลายระบบ ในกรณีนี้ การประมวลผลมิติจําเป็นต้องรวม ผสาน ทําซ้ํา และทําให้ข้อมูลเป็นมาตรฐาน และกําหนดคีย์ตัวแทน

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

เคล็ดลับ

เมื่อคุณมีมิติขนาดเล็กจํานวนมาก ให้พิจารณาการรวมข้อมูลเหล่านั้นลงใน มิติขยะ

แนวคิดการออกแบบมิติ

ส่วนนี้อธิบายแนวคิดการออกแบบมิติต่าง ๆ

การดีนอร์มอลไลเซตเปรียบเทียบกับการทําให้เป็นมาตรฐาน

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

เนื่องจากมิติมีขนาดเล็กโดยทั่วไป (เมื่อเปรียบเทียบกับตารางข้อเท็จจริง) ต้นทุนในการจัดเก็บข้อมูลซ้ําซ้อนเกือบจะเมื่อเทียบกับประสิทธิภาพการทํางานของคิวรีและการใช้งานที่ปรับปรุงแล้ว

แบบจําลองมิติที่เพิ่มการทํานอล์ฟเฟล็ก

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

แผนภาพต่อไปนี้แสดงมิติ snowflake ที่ประกอบด้วยตารางมิติข้อมูลที่เกี่ยวข้องสามตาราง: Product, SubcategoryและCategory

แผนภาพแสดงภาพมิติที่เพิ่มการทํานึ่งหิมะตามที่อธิบายไว้ในย่อหน้าก่อนหน้า

พิจารณาใช้แบบจําลองมิติที่เพิ่มการทํานอบน้อมเมื่อ:

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

หมายเหตุ

โปรดทราบว่าลําดับชั้นในแบบจําลองความหมาย Power BI สามารถยึดตามคอลัมน์จากตารางแบบจําลองความหมายเดียวเท่านั้น ดังนั้นแบบจําลองมิติที่เพิ่มการทํานอร์มอลไลซ์กับข้อมูลควรให้ผลลัพธ์ที่ไม่มีการนอร์มอลไลซ์กับข้อมูลโดยใช้มุมมองที่รวมตารางแบบจําลองมิติที่เพิ่มการทํานอร์มอลไลซ์กับข้อมูลเข้าด้วยกัน

ลำดับชั้น

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

มีสามวิธีในการจัดเก็บลําดับชั้นในมิติ คุณสามารถใช้:

  • คอลัมน์จากมิติที่ไม่มีการนอร์มอลไลซ์เดียว
  • แบบจําลองมิติที่เพิ่มการทํานอล์ดผ่านข้อมูล ซึ่งประกอบด้วยตารางที่เกี่ยวข้องหลายตาราง
  • ความสัมพันธ์หลัก-รอง (การอ้างอิงตนเอง) ในมิติ

ลําดับชั้นสามารถมีความสมดุลหรือไม่สมดุลได้ สิ่งสําคัญคือต้องเข้าใจว่าลําดับชั้นบางอย่างจะไม่ยุบ

ลําดับชั้นที่สมดุล

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

แผนภาพต่อไปนี้แสดงลําดับชั้นที่สมดุลของภูมิภาคการขาย ซึ่งประกอบด้วยสองระดับ ซึ่งเป็นกลุ่มภูมิภาคการขายและภูมิภาคการขาย

แผนภาพแสดงตารางสมาชิกมิติภูมิภาคการขายที่มีคอลัมน์กลุ่มและภูมิภาคการขาย

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

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

ลําดับชั้นที่ไม่สมดุล

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

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

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

แผนภาพแสดงตารางของสมาชิกมิติพนักงานขายที่มีคอลัมน์ 'รายงานถึง'

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

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

การคิวรีลําดับชั้นหลัก-รองอาจซับซ้อนและช้าโดยเฉพาะอย่างยิ่งสําหรับขนาดขนาดใหญ่ ในขณะที่ระบบแหล่งข้อมูลอาจจัดเก็บความสัมพันธ์เป็นแบบหลัก-รอง เราขอแนะนําให้คุณเปลี่ยนลําดับชั้นเป็นธรรมชาติ ในอินสแตนซ์นี้ แปลงและจัดเก็บระดับลําดับชั้นในมิติเป็นคอลัมน์

เคล็ดลับ

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

ลําดับชั้นที่ไม่คล้อง

บางครั้งลําดับชั้นจะไม่ คล่อง เนื่องจากพาเรนต์ของสมาชิกในลําดับชั้นมีอยู่ในระดับที่ไม่ได้อยู่เหนือลําดับชั้นทันที ในกรณีเหล่านี้ ค่าระดับที่หายไปจะทําซ้ําค่าหลักของค่าหลัก

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

แผนภาพต่อไปนี้แสดงลําดับชั้นที่ไม่คืบคลานของภูมิภาคทางภูมิศาสตร์

แผนภาพแสดงตารางของสมาชิกมิติภูมิศาสตร์ที่ประกอบด้วยคอลัมน์ประเทศ/ภูมิภาค รัฐ/จังหวัด และเมือง

จัดการการเปลี่ยนแปลงในอดีต

เมื่อจําเป็น การเปลี่ยนแปลงในอดีตสามารถจัดการได้โดยใช้มิติที่มีการเปลี่ยนแปลงอย่างช้า ๆ (SCD) SCD รักษาบริบทในอดีตเป็นข้อมูลใหม่หรือข้อมูลที่เปลี่ยนแปลงถูกโหลดลงในนั้น

ต่อไปนี้เป็นประเภท SCD ที่พบบ่อยที่สุด

  • ชนิดที่ 1: เขียนทับสมาชิกมิติที่มีอยู่
  • ชนิดที่ 2: แทรกสมาชิกมิติที่มีการกําหนดเวอร์ชันตามเวลาใหม่
  • ประเภทที่ 3: ติดตามประวัติที่จํากัดด้วยแอตทริบิวต์

อาจเป็นไปได้ว่ามิติสามารถรองรับการเปลี่ยนแปลงทั้ง SCD ชนิดที่ 1 และ SCD ชนิดที่ 2

SCD ชนิดที่ 3 มักไม่ได้ใช้เป็นส่วนหนึ่งของ SCD เนื่องจากเป็นเรื่องยากที่จะใช้ในแบบจําลองความหมาย พิจารณาอย่างรอบคอบว่าวิธีการ SCD ชนิดที่ 2 จะพอดียิ่งขึ้นหรือไม่

เคล็ดลับ

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

SCD ชนิดที่ 1

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

แผนภาพต่อไปนี้แสดงสถานะก่อนและหลังของสมาชิกมิติพนักงานขายที่หมายเลขโทรศัพท์ของพวกเขามีการเปลี่ยนแปลง

แผนภาพแสดงโครงสร้างของตารางมิติพนักงานขาย และค่าก่อนและหลังสําหรับหมายเลขโทรศัพท์ที่เปลี่ยนแปลงสําหรับพนักงานขายรายเดียว

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

SCD ชนิดที่ 2

SCD ชนิดที่ 2 จะเปลี่ยนแปลงผลลัพธ์ในแถวใหม่ที่แสดงเวอร์ชันตามเวลาของสมาชิกมิติ มีแถวเวอร์ชันปัจจุบันอยู่เสมอและจะแสดงสถานะของสมาชิกมิติในระบบต้นทาง แอตทริบิวต์ การติดตามในอดีตในตารางมิติเก็บค่าที่อนุญาตให้ระบุเวอร์ชันปัจจุบัน (ค่าสถานะปัจจุบันคือ TRUE) และช่วงเวลาที่สามารถใช้งานได้ ต้องใช้คีย์ตัวแทนเนื่องจากจะมีการทําซ้ําคีย์ธรรมชาติเมื่อจัดเก็บหลายเวอร์ชัน

เป็น SCD ประเภททั่วไป แต่ควรสงวนไว้สําหรับแอตทริบิวต์ที่ต้องรักษามุมมองในอดีต

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

  1. การดําเนินการอัปเดตจะเขียนทับเวอร์ชันปัจจุบันเพื่อตั้งค่าแอตทริบิวต์การติดตามในอดีต โดยเฉพาะ คอลัมน์ความถูกต้องสิ้นสุดถูกตั้งค่าเป็นวันที่ประมวลผล ETL (หรือประทับเวลาที่เหมาะสมในระบบต้นทาง) และสถานะปัจจุบันถูกตั้งค่า FALSEเป็น
  2. การดําเนินการแทรกจะเพิ่มเวอร์ชันใหม่ที่เป็นปัจจุบัน การตั้งค่าคอลัมน์ความมีผลบังคับใช้เริ่มต้นไปยังค่าคอลัมน์ความมีผลบังคับใช้สิ้นสุด (ใช้เพื่ออัปเดตเวอร์ชันก่อนหน้า) และค่าสถานะปัจจุบันเป็นTRUE

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

แผนภาพต่อไปนี้แสดงสถานะก่อนและหลังของสมาชิกมิติพนักงานขายที่ภูมิภาคการขายมีการเปลี่ยนแปลง เนื่องจากองค์กรต้องการวิเคราะห์ความพยายามของพนักงานขายตามภูมิภาคที่พวกเขาได้รับมอบหมาย ซึ่งจะทริกเกอร์การเปลี่ยนแปลงชนิด SCD 2

แผนภาพแสดงโครงสร้างของตารางมิติพนักงานขาย ซึ่งรวมถึงคอลัมน์ 'วันที่เริ่มต้น' 'วันที่สิ้นสุด' และ 'เป็นปัจจุบัน'

เคล็ดลับ

เมื่อตารางมิติสนับสนุนการเปลี่ยนแปลง SCD ชนิดที่ 2 คุณควรมีแอตทริบิวต์ป้ายชื่อที่อธิบายถึงสมาชิกและเวอร์ชัน พิจารณาตัวอย่างเมื่อพนักงานขาย Lynn Tsoflias จาก Adventure Works เปลี่ยนการกําหนดจากภูมิภาคการขายของออสเตรเลียไปยังภูมิภาคการขายในสหราชอาณาจักร แอตทริบิวต์ป้ายชื่อสําหรับเวอร์ชันแรกสามารถอ่าน "Lynn Tsoflias (ออสเตรเลีย)" และแอตทริบิวต์ป้ายชื่อสําหรับเวอร์ชันใหม่ที่ปัจจุบันสามารถอ่าน "Lynn Tsoflias (สหราชอาณาจักร)" หากเป็นประโยชน์ คุณอาจรวมวันที่ใช้งานได้ในป้ายชื่อด้วย

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

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

พิจารณาแอตทริบิวต์การติดตาม SCD ชนิดที่ 2 ต่อไปนี้ในอดีต

CREATE TABLE d_Salesperson
(
    <…>

    --Historical tracking attributes (SCD type 2)
    RecChangeDate_FK INT NOT NULL,
    RecValidFromKey INT NOT NULL,
    RecValidToKey INT NOT NULL,
    RecReason VARCHAR(15) NOT NULL,
    RecIsCurrent BIT NOT NULL,

    <…>
);

นี่คือวัตถุประสงค์ของแอตทริบิวต์การติดตามในอดีต

  • คอลัมน์ RecChangeDate_FK จะจัดเก็บวันที่เมื่อการเปลี่ยนแปลงมีผล ซึ่งช่วยให้คุณสามารถคิวรีเมื่อมีการเปลี่ยนแปลงเกิดขึ้น
  • คอลัมน์ RecValidFromKey และ RecValidToKey จะจัดเก็บวันที่มีผลบังคับใช้ของความถูกต้องสําหรับแถว พิจารณาจัดเก็บวันที่แรกสุดที่พบในมิติวันที่สําหรับ RecValidFromKey เพื่อแสดงเวอร์ชันเริ่มต้น และการจัดเก็บ 01/01/9999 สําหรับ RecValidToKey เวอร์ชันปัจจุบัน
  • คอลัมน์ RecReason เป็นทางเลือก ซึ่งช่วยให้ทําการจัดทําเอกสารด้วยเหตุผลในการแทรกเวอร์ชัน ซึ่งอาจเข้ารหัสแอตทริบิวต์ที่เปลี่ยนแปลง หรืออาจเป็นโค้ดจากระบบต้นทางที่ระบุว่าเป็นเหตุผลทางธุรกิจที่เฉพาะเจาะจง
  • คอลัมน์ RecIsCurrent ช่วยให้สามารถดึงข้อมูลเวอร์ชันปัจจุบันเท่านั้น ซึ่งใช้เมื่อกระบวนการ ETL ค้นหาคีย์มิติเมื่อโหลดตารางข้อเท็จจริง

หมายเหตุ

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

SCD ชนิดที่ 3

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

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

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

แผนภาพต่อไปนี้แสดงสถานะก่อนและหลังของสมาชิกมิติพนักงานขายที่ภูมิภาคการขายมีการเปลี่ยนแปลง เนื่องจากองค์กรต้องการกําหนดการกําหนดภูมิภาคการขายใด ๆ ก่อนหน้า จะทริกเกอร์การเปลี่ยนแปลง SCD ชนิดที่ 3

แผนภาพแสดงโครงสร้างของตารางมิติพนักงานขาย ซึ่งประกอบด้วยคอลัมน์ 'ภูมิภาคการขายก่อนหน้า' และ 'วันที่สิ้นสุดภูมิภาคการขายก่อนหน้า'

สมาชิกมิติพิเศษ

คุณอาจแทรกแถวลงในมิติที่แสดงสถานะที่ขาดหายไป ไม่ทราบ N/A หรือข้อผิดพลาด ตัวอย่างเช่น คุณอาจใช้ค่าคีย์ตัวแทนต่อไปนี้

ค่าคีย์ วัตถุประสงค์
0 ขาดหายไป (ไม่พร้อมใช้งานในระบบต้นทาง)
-1 ไม่รู้จัก (ความล้มเหลวในการค้นหาในระหว่างการโหลดตารางข้อเท็จจริง)
-2 N/A (ไม่สามารถใช้ได้)
-3 ข้อผิดพลาด

ปฏิทินและเวลา

เกือบโดยไม่มีข้อยกเว้น ตารางข้อเท็จจริงจะจัดเก็บหน่วยวัดณ จุดเฉพาะในเวลา เพื่อสนับสนุนการวิเคราะห์ตามวันที่ (และอาจถึงเวลา) ต้องมีมิติปฏิทิน (วันที่และเวลา)

เป็นเรื่องผิดปกติที่ระบบต้นทางจะมีข้อมูลมิติปฏิทิน ดังนั้นจึงต้องสร้างขึ้นในคลังข้อมูล โดยทั่วไปจะมีการสร้างหนึ่งครั้ง และหากเป็นมิติปฏิทิน จะมีการขยายด้วยวันที่ในอนาคตเมื่อจําเป็น

มิติวันที่

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

สำคัญ

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

คีย์ที่เป็นธรรมชาติของมิติวันที่ควรใช้ชนิดข้อมูลวันที่ คีย์ตัวแทนควรจัดเก็บวันที่โดยใช้YYYYMMDDรูปแบบและชนิดข้อมูล int แนวทางปฏิบัติที่ยอมรับนี้ควรเป็นข้อยกเว้นเดียว (ควบคู่ไปกับมิติเวลา) เมื่อค่าคีย์ตัวแทนมีความหมายและมนุษย์สามารถอ่านได้ การจัดเก็บ YYYYMMDD เป็น ชนิดข้อมูลแบบอินทริกซ์ ไม่เพียง แต่มีประสิทธิภาพและเรียงลําดับตามตัวเลขเท่านั้น แต่ยังสอดคล้องกับรูปแบบวันที่ขององค์กรมาตรฐานสากล (ISO) ที่ไม่กํากวม

ต่อไปนี้เป็นแอตทริบิวต์ทั่วไปเพื่อรวมไว้ในมิติวันที่

  • Year, , Quarter, MonthDay
  • QuarterNumberInYearMonthNumberInYear ซึ่งอาจจําเป็นต้องเรียงลําดับป้ายชื่อข้อความ
  • FiscalYear, FiscalQuarter – กําหนดการทางบัญชีขององค์กรบางตารางเริ่มต้นกลางปี เพื่อให้จุดเริ่มต้น/สิ้นสุดของปีปฏิทินและปีบัญชีแตกต่างกัน
  • FiscalQuarterNumberInYearFiscalMonthNumberInYear ซึ่งอาจจําเป็นต้องเรียงลําดับป้ายชื่อข้อความ
  • WeekOfYear – มีหลายวิธีในป้ายชื่อสัปดาห์ของปี รวมถึงมาตรฐาน ISO ที่มี 52 หรือ 53 สัปดาห์
  • IsHolidayHolidayText หากองค์กรของคุณดําเนินงานในหลายภูมิศาสตร์ คุณควรรักษาชุดของรายการวันหยุดหลายชุดที่แต่ละภูมิศาสตร์สังเกตได้ว่าเป็นมิติแยกต่างหากหรือทําให้เป็นธรรมชาติในแอตทริบิวต์หลายรายการในมิติวันที่ HolidayTextการเพิ่มแอททริบิวต์อาจช่วยระบุวันหยุดสําหรับการรายงาน
  • IsWeekday ในทํานองเดียวกัน ในบางภูมิศาสตร์ สัปดาห์การทํางานมาตรฐานไม่ใช่วันจันทร์ถึงวันศุกร์ ตัวอย่างเช่น สัปดาห์ทํางานคือวันอาทิตย์ถึงวันพฤหัสบดีในภูมิภาคตะวันออกกลางหลายภูมิภาค ในขณะที่ภูมิภาคอื่นๆ จะใช้สัปดาห์ทํางานสี่วันหรือหกวัน
  • LastDayOfMonth
  • RelativeYearOffset, RelativeQuarterOffset, RelativeMonthOffsetRelativeDayOffset – ซึ่งอาจจําเป็นในการสนับสนุนการกรองวันที่ที่สัมพันธ์ (ตัวอย่างเช่น เดือนก่อนหน้า) รอบระยะเวลาปัจจุบันใช้ออฟเซตเป็นศูนย์ (0); รอบระยะเวลาก่อนหน้านี้จัดเก็บออฟเซตของ -1, -2, -3...; ค่าชดเชยการจัดเก็บรอบระยะเวลาในอนาคตของ 1, 2, 3....

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

เมื่อมิติถูกใช้เพื่อเชื่อมโยงกับค่าความจริงเกรนที่สูงกว่า ตารางข้อเท็จจริงสามารถใช้วันที่แรกของรอบระยะเวลาวันที่ได้ ตัวอย่างเช่น ตารางข้อเท็จจริงเป้าหมายการขายที่จัดเก็บเป้าหมายพนักงานขายรายไตรมาสจะจัดเก็บวันที่แรกของไตรมาสในมิติวันที่ วิธีอื่นคือการสร้างคอลัมน์หลักในตารางวันที่ ตัวอย่างเช่น คีย์ไตรมาสสามารถจัดเก็บคีย์ไตรมาสโดยใช้YYYYQรูปแบบและชนิดข้อมูล smallint

มิติควรถูกเติมด้วยช่วงวันที่ที่ทราบซึ่งใช้โดยตารางข้อเท็จจริงทั้งหมด นอกจากนี้ยังควรรวมวันที่ในอนาคตเมื่อคลังข้อมูลจัดเก็บข้อเท็จจริงเกี่ยวกับเป้าหมาย งบประมาณ หรือการคาดการณ์ เช่นเดียวกับมิติอื่น คุณอาจรวมแถวที่แสดงสถานการณ์ที่ขาดหายไป ไม่รู้จัก N/A หรือข้อผิดพลาด

เคล็ดลับ

ค้นหาอินเทอร์เน็ตสําหรับ "ตัวสร้างมิติวันที่" เพื่อค้นหาสคริปต์และสเปรดชีตที่สร้างข้อมูลวันที่

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

มิติเวลา

บางครั้งจําเป็นต้องจัดเก็บข้อเท็จจริงณ จุดเวลา (ตามเวลาของวัน) ในกรณีนี้ ให้สร้างมิติเวลา (หรือนาฬิกา) ซึ่งอาจมีหน่วยของนาที (24 x 60 = 1,440 แถว) หรือแม้แต่วินาที (24 x 60 x 60 = 86,400 แถว) ธัญพืชที่เป็นไปได้อื่น ๆ ได้แก่ ครึ่งชั่วโมงหรือชั่วโมง

คีย์ที่เป็นธรรมชาติของมิติเวลาควรใช้ชนิดข้อมูลเวลา คีย์ตัวแทนสามารถใช้รูปแบบที่เหมาะสมและค่าร้านค้าที่มีความหมายและไม่สามารถอ่านได้ ตัวอย่างเช่น โดยใช้HHMMรูปแบบ หรือHHMMSS

ต่อไปนี้เป็นแอตทริบิวต์ทั่วไปเพื่อรวมอยู่ในมิติเวลา

  • Hour, , HalfHour, QuarterHourMinute
  • ป้ายกํากับช่วงเวลา (เช้า บ่าย เย็น คืน)
  • ชื่อกะการทํางาน
  • ค่าสถานะสูงสุดหรือยอดสูงสุด

มิติที่สอดคล้อง

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

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

แผนภาพต่อไปนี้แสดง Sales ตารางข้อเท็จจริงและ Inventory ตารางข้อเท็จจริง ตารางข้อเท็จจริงแต่ละตารางเกี่ยวข้องกับ Date มิติและ Product มิติ ซึ่งเป็นขนาดที่สอดคล้อง

แผนภาพแสดงภาพประกอบของมิติที่สอดคล้องตามที่อธิบายไว้ในย่อหน้าก่อนหน้า

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

มิติการเล่นบทบาท

เมื่อมีการอ้างอิงมิติหลายครั้งในตารางข้อเท็จจริง มิติดังกล่าวจะเรียกว่า มิติการเล่นตามบทบาท

ตัวอย่างเช่น เมื่อตารางข้อเท็จจริงด้านการขายมีวันที่สั่งซื้อ วันที่จัดส่ง และคีย์มิติวันที่จัดส่ง มิติวันที่จะเชื่อมโยงในสามวิธี แต่ละวิธีแสดงบทบาทที่แตกต่างกัน แต่มีมิติวันที่จริงเพียงมิติเดียวเท่านั้น

แผนภาพต่อไปนี้แสดง Flight ตารางข้อเท็จจริง มิติ Airport เป็นมิติการเล่นบทบาทเนื่องจากมีความเกี่ยวข้องกับตาราง Departure Airport ข้อเท็จจริงเป็นมิติและ Arrival Airport มิติสองครั้ง

แผนภาพแสดงภาพเค้าร่างดาวสําหรับข้อเท็จจริงเที่ยวบินของสายการบินตามที่อธิบายไว้ในย่อหน้าก่อนหน้า

มิติขยะ

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

โดยทั่วไปแล้ว ตารางสําหรับจัดเก็บข้อมูลมิติขยะจะจัดเก็บผลิตภัณฑ์คาร์ทีเซียนของค่าแอตทริบิวต์มิติทั้งหมดด้วยแอตทริบิวต์คีย์ตัวแทน

ผู้สมัครที่ดีประกอบด้วยธงและตัวบ่งชี้ สถานะการสั่งซื้อ และรัฐเชิงประชากรศาสตร์ของลูกค้า (เพศ กลุ่มอายุ และอื่น ๆ)

แผนภาพต่อไปนี้แสดงมิติขยะที่ Sales Status ชื่อว่าที่รวมค่าสถานะคําสั่งซื้อและค่าสถานะการจัดส่ง

แผนภาพแสดงสถานะคําสั่งซื้อและค่าสถานะการจัดส่งและวิธีที่ผลิตภัณฑ์คาร์ทีเซียนของค่าเหล่านั้นสร้างแถวมิติ 'สถานะยอดขาย'

มิติที่ลดลง

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

ไดอะแกรมต่อไปนี้แสดง Sales Order มิติที่เป็นมิติลดรูปโดยยึดตาม SalesOrderNumber คอลัมน์ในตารางข้อเท็จจริงด้านการขาย มิตินี้ถูกนํามาใช้เป็นมุมมองที่ดึงข้อมูลค่าหมายเลขใบสั่งขายที่แตกต่างกัน

แผนภาพแสดงมิติลดรูปตามที่อธิบายไว้ในย่อหน้าก่อนหน้า

เคล็ดลับ

มีความเป็นไปได้ที่จะสร้างมุมมองใน Fabric Warehouse ที่แสดงมิติลดรูปเป็นมิติสําหรับการคิวรี่

จากมุมมองการสร้างแบบจําลองเชิงความหมายของ Power BI มิติลดรูปสามารถสร้างขึ้นเป็นตารางแยกต่างหากโดยใช้ Power Query ด้วยวิธี แบบจําลองความหมายสอดคล้องกับแนวทางปฏิบัติที่ดีที่สุดที่เขตข้อมูลที่ใช้ในการกรองหรือกลุ่มมีแหล่งที่มาจากตารางมิติ และเขตข้อมูลที่ใช้เพื่อสรุปข้อเท็จจริงนั้นมาจากตารางข้อเท็จจริง

ขนาดนอกชุด

เมื่อตารางมิติเชื่อมโยงกับตารางมิติอื่น ตารางมิตินั้นจะเรียกว่ามิติที่รก มิติที่ผิดปกติสามารถช่วยในการสร้างความสอดคล้องและนําข้อกําหนดกลับมาใช้ใหม่ในแบบจําลองมิติได้

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

ไดอะแกรมต่อไปนี้แสดง Geography มิติที่เป็นมิติที่เหนือกว่า ซึ่งไม่ได้เชื่อมโยงโดยตรงกับ Sales ตารางข้อเท็จจริง แต่จะเชื่อมโยงกันทางอ้อมผ่าน Customer มิติและ Salesperson มิติแทน

แผนภาพแสดงภาพประกอบของมิตินอกชุดตามที่อธิบายไว้ในย่อหน้าก่อนหน้า

พิจารณาว่าสามารถใช้มิติวันที่เป็นมิติค่านอกขอบเขตเมื่อแอตทริบิวต์ตารางมิติอื่น ๆ จัดเก็บวันที่ ตัวอย่างเช่น สามารถจัดเก็บวันเกิดในมิติลูกค้าได้โดยใช้คีย์ตัวแทนของตารางมิติวันที่

มิติที่มีหลายค่า

เมื่อแอตทริบิวต์มิติต้องจัดเก็บค่าหลายค่า คุณจําเป็นต้องออกแบบ มิติที่มีหลายค่า คุณใช้มิติที่มีหลายค่าโดยการสร้าง ตาราง บริดจ์ (บางครั้งเรียกว่า ตารางการรวม) ตารางบริดจ์จะจัดเก็บความสัมพันธ์แบบกลุ่มต่อกลุ่มระหว่างเอนทิตี้

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

ในไดอะแกรม Account ต่อไปนี้ ตารางมิติเกี่ยวข้องกับ Transaction ตารางข้อเท็จจริง เนื่องจากลูกค้าสามารถมีหลายบัญชีและบัญชีสามารถมีลูกค้าได้หลายราย Customer ตารางมิติจึงเชื่อมโยงผ่าน Customer Account ตารางบริดจ์

แผนภาพแสดงภาพประกอบของมิติที่มีค่าหลายค่าตามที่อธิบายไว้ในย่อหน้าก่อนหน้า

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