การสร้างแบบจําลองมิติใน 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 จะเกี่ยวข้องกับการดําเนินการอัพเดตและการดําเนินการแทรก
- การดําเนินการอัปเดตจะเขียนทับเวอร์ชันปัจจุบันเพื่อตั้งค่าแอตทริบิวต์การติดตามในอดีต โดยเฉพาะ คอลัมน์ความถูกต้องสิ้นสุดถูกตั้งค่าเป็นวันที่ประมวลผล ETL (หรือประทับเวลาที่เหมาะสมในระบบต้นทาง) และสถานะปัจจุบันถูกตั้งค่า
FALSE
เป็น - การดําเนินการแทรกจะเพิ่มเวอร์ชันใหม่ที่เป็นปัจจุบัน การตั้งค่าคอลัมน์ความมีผลบังคับใช้เริ่มต้นไปยังค่าคอลัมน์ความมีผลบังคับใช้สิ้นสุด (ใช้เพื่ออัปเดตเวอร์ชันก่อนหน้า) และค่าสถานะปัจจุบันเป็น
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
,Month
Day
QuarterNumberInYear
–MonthNumberInYear
ซึ่งอาจจําเป็นต้องเรียงลําดับป้ายชื่อข้อความFiscalYear
,FiscalQuarter
– กําหนดการทางบัญชีขององค์กรบางตารางเริ่มต้นกลางปี เพื่อให้จุดเริ่มต้น/สิ้นสุดของปีปฏิทินและปีบัญชีแตกต่างกันFiscalQuarterNumberInYear
–FiscalMonthNumberInYear
ซึ่งอาจจําเป็นต้องเรียงลําดับป้ายชื่อข้อความWeekOfYear
– มีหลายวิธีในป้ายชื่อสัปดาห์ของปี รวมถึงมาตรฐาน ISO ที่มี 52 หรือ 53 สัปดาห์IsHoliday
–HolidayText
หากองค์กรของคุณดําเนินงานในหลายภูมิศาสตร์ คุณควรรักษาชุดของรายการวันหยุดหลายชุดที่แต่ละภูมิศาสตร์สังเกตได้ว่าเป็นมิติแยกต่างหากหรือทําให้เป็นธรรมชาติในแอตทริบิวต์หลายรายการในมิติวันที่HolidayText
การเพิ่มแอททริบิวต์อาจช่วยระบุวันหยุดสําหรับการรายงานIsWeekday
ในทํานองเดียวกัน ในบางภูมิศาสตร์ สัปดาห์การทํางานมาตรฐานไม่ใช่วันจันทร์ถึงวันศุกร์ ตัวอย่างเช่น สัปดาห์ทํางานคือวันอาทิตย์ถึงวันพฤหัสบดีในภูมิภาคตะวันออกกลางหลายภูมิภาค ในขณะที่ภูมิภาคอื่นๆ จะใช้สัปดาห์ทํางานสี่วันหรือหกวันLastDayOfMonth
RelativeYearOffset
,RelativeQuarterOffset
,RelativeMonthOffset
RelativeDayOffset
– ซึ่งอาจจําเป็นในการสนับสนุนการกรองวันที่ที่สัมพันธ์ (ตัวอย่างเช่น เดือนก่อนหน้า) รอบระยะเวลาปัจจุบันใช้ออฟเซตเป็นศูนย์ (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
,QuarterHour
Minute
- ป้ายกํากับช่วงเวลา (เช้า บ่าย เย็น คืน)
- ชื่อกะการทํางาน
- ค่าสถานะสูงสุดหรือยอดสูงสุด
มิติที่สอดคล้อง
มิติบางมิติอาจเป็น มิติที่สอดคล้อง มิติที่สอดคล้องเกี่ยวข้องกับตารางข้อเท็จจริงจํานวนมาก และดังนั้นจึงถูกแชร์โดยดาวหลายตัวในแบบจําลองมิติ พวกเขาให้ความสอดคล้องและสามารถช่วยให้คุณลดการพัฒนาและการบํารุงรักษาอย่างต่อเนื่อง
ตัวอย่างเช่น เป็นเรื่องปกติที่ตารางข้อเท็จจริงจะจัดเก็บคีย์มิติวันที่อย่างน้อยหนึ่งคีย์ (เนื่องจากกิจกรรมส่วนใหญ่จะถูกบันทึกตามวันที่และ/หรือเวลา) ด้วยเหตุนี้ มิติวันที่จึงเป็นมิติที่สอดคล้องกันทั่วไป ดังนั้นคุณควรตรวจสอบให้แน่ใจว่ามิติวันที่ของคุณมีแอตทริบิวต์ที่เกี่ยวข้องกับการวิเคราะห์ตารางข้อเท็จจริงทั้งหมด
แผนภาพต่อไปนี้แสดง 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
ตารางบริดจ์
เนื้อหาที่เกี่ยวข้อง
ในบทความถัดไปในชุดนี้ คุณจะได้เรียนรู้เกี่ยวกับคําแนะนําและแนวทางปฏิบัติที่ดีที่สุดสําหรับ ตารางข้อเท็จจริง