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

ตารางแรกชื่อว่า Account ซึ่งมีสองคอลัมน์ AccountID และ Account ตารางที่สองชื่อว่า AccountCustomer ซึ่งมีสองคอลัมน์ AccountID และ CustomerID ตารางที่สามชื่อว่า Customer ซึ่งมีสองคอลัมน์ CustomerID และ Customer ไม่มีความสัมพันธ์ระหว่างตารางใด ๆ
เพิ่มความสัมพันธ์หนึ่งต่อกลุ่มให้แก่ตาราง นี่คือไดอะแกรมแบบจำลองของตารางที่เกี่ยวข้องกันที่อัปเดตแล้ว มีการเพิ่มตารางชนิดข้อเท็จจริงที่ชื่อ Transaction ซึ่งบันทึกการทำธุรกรรมของบัญชี ตารางการเชื่อมโยงและคอลัมน์ ID ทั้งหมดถูกซ่อนไว้

เพื่อช่วยในการอธิบายวิธีการทำงานของการถ่ายถอดตัวกรองความสัมพันธ์ ไดอะแกรมแบบจำลองได้รับการแก้ไขเพื่อแสดงแถวตาราง
หมายเหตุ
ไม่สามารถแสดงแถวตารางในไดอะแกรมแบบจำลอง Power BI Desktop ได้ การดำเนินการนี้จะทำในบทความนี้เพื่อสนับสนุนการสนทนาด้วยตัวอย่างที่ชัดเจน

รายละเอียดแถวสำหรับสี่ตารางอธิบายในหัวข้อย่อยต่อไปนี้:
- ตาราง Account มีสองแถว:
- AccountID 1 คือ Account-01
- AccountID 2 คือ Account-02
- ตาราง Customer มีสองแถว:
- CustomerID 91 คือ Customer-91
- CustomerID 92 คือ Customer-92
- ตาราง AccountCustomer มีสามแถว:
- AccountID 1 เชื่อมโยงกับ CustomerID 91
- AccountID 1 เชื่อมโยงกับ CustomerID 92
- AccountID 2 เชื่อมโยงกับ CustomerID 92
- ตาราง Transaction มีสามแถว:
- วันที่ 1 มกราคม 2019, AccountID 1, จำนวน 100
- วันที่ 2 กุมภาพันธ์ 2019, AccountID 2, จำนวน 200
- วันที่ 3 มีนาคม 2019, AccountID 1, จำนวน -25
มาดูกันว่าจะเกิดอะไรขึ้นเมื่อมีการสอบถามแบบจำลอง
ด้านล่างคือรูปภาพสองรูปที่สรุปคอลัมน์ จำนวน จากตาราง Transaction กลุ่มวิชวลแรกตามบัญชี ดังนั้นผลรวมของ คอลัมน์ จำนวน แสดง ยอดคงเหลือบัญชี กลุ่มวิชวลที่สองตามบัญชี ดังนั้นผลรวมของคอลัมน์ จำนวน แสดง ยอดคงเหลือลูกค้า

วิชวลแรกชื่อว่า Account Balance ซึ่งมีสองคอลัมน์: Account และ จำนวน ซึ่งแสดงผลต่อไปนี้
- Account-01 ยอดเงินคงเหลือ 75
- Account-02 ยอดเงินคงเหลือ 200
- รวม 275
วิชวลที่สองชื่อว่า Customer Balance ซึ่งมีสองคอลัมน์: Customer และ จำนวน ซึ่งแสดงผลต่อไปนี้
- Customer-91 ยอดเงินคงเหลือ 275
- Customer-92 ยอดเงินคงเหลือ 275
- รวม 275
ลองมองแถวตารางและวิชวล Account Balance แสดงให้เห็นว่าผลลัพธ์ถูกต้อง สำหรับแต่ละบัญชีและจำนวนรวม เนื่องจากผการจัดกลุ่มแต่ละบัญชีในการถ่ายทอดตัวกรองไปยังตาราง Transaction สำหรับตารางนั้น
อย่างไรก็ตามบางอย่างไม่ถูกต้องนักตามวิชวล Customer Balance ลูกค้าแต่ละคนในวิชวล Customer Balance มียอดเงินเหมือนกันยอดรวม ผบลัพธ์นี้อาจถูกต้องหากลูกค้าทุกรายเป็นเจ้าของบัญชีร่วมกันใยทุกบัญชี ซึ่งไม่ใช่กรณีในตัวอย่างนี้ ปัญหาเกี่ยวข้องกับการถ่ายทอดตัวกรอง ซึ่งไม่ได้เป็นไปตามตาราง Transaction
ทำตามทิศทางของตัวกรองความสัมพันธ์จากตาราง Customer ไปยังตาราง Transaction ซึ่งชัดเจนว่าความสัมพันธ์ระหว่างตาราง Account และตาราง AccountCustomer นั้นถ่ายทอดในทิศทางที่ไม่ถูกกต้อง ทิศทางของตัวกรองของความสัมพันธ์นี้จะต้องตั้งเป็น ทั้งคู่


ตามที่คาดไว้ไม่มีการเปลี่ยนแปลงในวิชวล Account Balance
อย่างไรก็ตามวิชวล Customer Balance แสดงผลต่อไปนี้:
- Customer-91 ยอดเงินคงเหลือ 75
- Customer-92 ยอดเงินคงเหลือ 275
- รวม 275
ขณะนี้วิชวล Customer Balance ได้แสดงผลถูกต้อง ปฏิบัติตามทิศทางตัวกรองของคุณ และศึกษาวิธีคำนวนยอดคงเหลือของลูกค้า ยังต้องทำความเข้าใจว่าผลรวมวิชวลหมายถึง ลูกค้าทุกราย
บางคนอาจจะไม่คุ้นเคยกับความสัมพันธ์แบบจำลองที่อาจรวมผลลัพธ์ที่ไม่ถูกต้อง อาจมีคำถามว่า: เพราะเหตุใดยอดรวมของ Customer-91 และ Customer-92 จึงไม่เท่ากับ 350 (75 + 275)
คำตอบสำหรับคำถามของพวกเขาอยู่ในการทำความเข้าใจเกี่ยวกับการใช้งานแบบกลุ่มต่อกลุ่ม ยอดคงเหลือของลูกค้าแต่ละรายสามารถเป็นตัวแทนของยอดคงเหลือหลายบัญชีและดังนั้นยอดดุลของลูกค้าจะ ไม่ได้รับการเติมข้อมูล
คำแนะนำเชื่อมโยงมิติแบบกลุ่มต่อกลุ่ม
เมื่อคุณมีความสัมพันธ์แบบกลุ่มต่อกลุ่มระหว่างตารางชนิดมิติเรามีคำแนะนำต่อไปนี้:
- เพิ่มแต่ละเอนทิตีที่เกี่ยวข้องกับหลายกลุ่มเป็นตารางแบบจำลอง ตรวจสอบให้แน่ใจว่ามีคอลัมน์ตัวระบุที่ไม่ซ้ำกัน (ID)
- เพิ่มตารางเชื่อมโยงเพื่อจัดเก็บเอนทิตีที่เกี่ยวข้อง
- สร้างความสัมพันธ์ระหว่างหนึ่งต่อกลุ่มระหว่างสามตาราง
- กำหนดค่า ความสัมพันธ์แบบสองทิศทาง หนึ่ง แบบ เพื่ออนุญาตให้มีการเผยแพร่ตัวกรองเพื่อดำเนินการต่อไปยังตารางชนิดข้อเท็จจริง
- เมื่อไม่เหมาะสมที่จะมีค่า ID ที่ขาดหายไป ให้ตั้งค่าคุณสมบัติ เป็น Nullable ของแถว ID ให้เป็น FALSE—การรีเฟรชข้อมูลจะล้มเหลวถ้าค่าที่ขาดหายไปถูกบันทึกต้นแบบ
- ซ่อนตารางการเชื่อมโยง (เว้นแต่จะมีคอลัมน์หรือหน่วยวัดเพิ่มเติมที่จำเป็นสำหรับการรายงาน)
- ซ่อนคอลัมน์ ID ใดๆที่ไม่เหมาะสมสำหรับการรายงาน (ตัวอย่างเช่นเมื่อ ID เป็นคีย์ตัวแทน)
- ถ้ารู้สึกสมเหตุสมผลที่จะละให้คอลัมน์ ID มองเห็นได้ ให้ตรวจสอบให้แน่ใจว่าอยู่ในสไลด์ "หนึ่ง" ของความสัมพันธ์—ซ่อนคอลัมน์ด้าน "กลุ่ม" อยู่เสมอ ซึ่งส่งผลให้ประสิทธิภาพการทำงานของตัวกรองดีที่สุด
- หากต้องการหลีกเลี่ยงความสับสนหรือความเข้าใจผิด ให้สื่อสารคำอธิบายไปยังผู้ใช้รายงานของคุณ คุณสามารถเพิ่มรายละเอียดที่มีกล่องข้อความหรือ เคล็ดลับการแสดงผลด้วยภาพ
เราไม่แนะนำให้คุณเกี่ยวข้องกับตารางชนิดของมิติแบบกลุ่มต่อกลุ่มโดยตรง วิธีการออกแบบนี้จำเป็นต้องมีการกำหนดค่าความสัมพันธ์กับคาร์ดินาลลิตี้หลายรายการ ตามหลัดแล้วสามารถทำได้ แต่ก็หมายความว่าคอลัมน์ที่เกี่ยวข้องจะมีค่าซ้ำ ซึ่งก็เป็นวิธีการออกแบบที่ยอมรับได้อย่างไรก็ตามตารางชนิดมิตินั้นมีคอลัมน์ ID ตารางชนิดมิติควรใช้คอลัมน์ ID เป็นด้าน "หนึ่ง" ของความสัมพันธ์เสมอ
เชื่อมโยงข้อเท็จจริงแบบกลุ่มต่อกลุ่ม
ชนิดของสถานการณ์สมมติแบบกลุ่มต่อกลุ่มที่สองจะเกี่ยวข้องกับการเชื่อมโยงตารางความจริงสองชนิด ตารางความจริงสองชนิดอาจเกี่ยวข้องกันโดยตรง เทคนิคการออกแบบนี้จะเป็นประโยชน์สำหรับการสำรวจข้อมูลอย่างรวดเร็วและง่ายดาย อย่างไรก็ตามเราจะไม่แนะนำวิธีการออกแบบนี้โดยทั่วไป เราจะอธิบายในส่วนตอนท้ายของส่วนนี้
ลองพิจารณาตัวอย่างที่เกี่ยวข้องกับตารางความจริงสองชนิด: คำสั่ง และ การเติมสินค้า ตาราง คำสั่ง มีมีข้อมูลหนึุ่งแถวต่อหนึ่งคำสั่ง และตาราง การเติมสินค้า อาจไม่มีข้อมูลหรือมีมากกว่าหนึ่งแถวต่อหนึ่งคำสั่ง แถวในตาราง คำสั่ง แสดงคำสั่งขาย แถวในตาราง การเติมสินค้า แสดงรายการคำสั่งที่ถูกจัดส่งแล้ว ความสัมพันธ์แบบกลุ่มต่อกลุ่มเชิ่มโยงคอลัมน์ OrderID สองคอลัมน์ โดยมีการถ่ายทอดตัวกรองจากตาราง คำสั่ง เท่านั้น (คำสั่ง กรอง การเติมสินค้า)

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

รายละเอียดแถวสำหรับสองตารางอธิบายในหัวข้อย่อยต่อไปนี้:
- ตาราง คำสั่ง มีห้าแถว:
- OrderDate 1 มกราคม 2019, OrderID 1, OrderLine 1, ProductID Prod-A, OrderQuantity 5, Sales 50
- OrderDate 1 มกราคม 2019, OrderID 1, OrderLine 2, ProductID Prod-B, OrderQuantity 10, Sales 80
- OrderDate 2 กุมภาพันธ์ 2019, OrderID 2, OrderLine 1, ProductID Prod-B, OrderQuantity 5, Sales 40
- OrderDate 2 กุมภาพันธ์ 2019, OrderID 2, OrderLine 2, ProductID Prod-C, OrderQuantity 1, Sales 20
- OrderDate 3 มีนาคม 2019, OrderID 3, OrderLine 1, ProductID Prod-C, OrderQuantity 5, Sales 100
- ตาราง เติมสินค้า มีสี่แถว:
- FulfillmentDate 1 มกราคม 2019, FulfillmentID 50, OrderID 1, OrderLine 1, FulfillmentQuantity 2
- FulfillmentDate 2 กุมภาพันธ์ 2019, FulfillmentID 51, OrderID 2, OrderLine 1, FulfillmentQuantity 5
- FulfillmentDate 2 กุมภาพันธ์ 2019, FulfillmentID 52, OrderID 1, OrderLine 1, FulfillmentQuantity 3
- FulfillmentDate 1 มกราคม 2019, FulfillmentID 53, OrderID 1, OrderLine 2, FulfillmentQuantity 10
มาดูกันว่าจะเกิดอะไรขึ้นเมื่อมีการสอบถามแบบจำลอง นี่คือการแสดงผลด้วยตารางการเปรียบเทียบปริมาณการสั่งซื้อและการเติมสินค้าตามตาราง คำสั่ง คอลัมน์ OrderID

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

โปรดสังเกตการเปลี่ยนแปลงแบบดังต่อไปนี้:
- ขณะนี้โมเดลมีตารางเพิ่มเติมสี่ตาราง: OrderLine, OrderDate, Product, และ FulfillmentDate
- ตารางเพิ่มเติมสี่ตารางเป็นตารางชนิดมิติ และมีความสัมพันธ์แบบหนึ่งต่อกลุ่มระหว่างตารางเหล่านี้กับตารางชนิดความจริง
- ตาราง OrderLine มีคอลัมน์ OrderLineID ซึ่งแสดงค่า OrderID คุณ 100 บวกกับค่า OrderLine ซึ่งเป็นค่าตัวบ่งชี้ที่ไม่ซ้ำกันสำหรับคำสั่งแต่ละบรรทัด
- ตาราง คำสั่ง และ เติมสินค้า มีคอลัมน์ OrderLineID และไม่มีคอลัมน์ OrderID และ OrderLine แล้ว
- ขณะนี้ตาราง Fulfillment มีคอลัมน์ OrderDate และ ProductID
- ตาราง FulfillmentDate สัมพันธ์กับตาราง การเติมสินค้า เท่านั้น
- คอลัมน์ตัวระบุที่ไม่ซ้ำกันทั้งหมดถูกซ่อนไว้
สละเวลาในการใช้หลักการออกแบบ โครงร่างรูปดาว ให้สิทธิประโยชน์ดังต่อไปนี้:
- การแสดงผลรายงานของคุณสามารถ กรองหรือจัดกลุ่ม ตามคอลัมน์ที่มองเห็นได้จากตารางชนิดมิติ
- การแสดงผลรายงานของคุณสามารถ สรุป คอลัมน์ใด ๆ ที่มองเห็นได้จากตารางชนิดข้อเท็จจริง
- ตัวกรองที่นำไปใช้กับตาราง OrderLine, OrderDate หรือ Product จะถ่ายทอดไปยังตารางชนิดข้อเท็จจริง
- ความสัมพันธ์ทั้งหมดเป็นแบบหนึ่งต่อกลุ่มและแต่ละความสัมพันธ์เป็น ความสัมพันธ์ปกติ ปัญหาความสมบูรณ์ของข้อมูลจะไม่ได้รับการมาสก์ เมื่อต้องการเรียนรู้เพิ่มเติมเกี่ยวกับความสัมพันธ์ โปรดดูความสัมพันธ์แบบจำลองใน Power BI Desktop (การประเมินผลความสัมพันธ์)
เชื่อมโยงความจริงเกรนที่สูงกว่า
สถานการณ์กลุ่มต่อกลุ่มนี้แตกต่างจากสถานการณ์ที่ได้อธิบายก่อนหน้านี้ไว้ในบทความ
มาพิจารณาตัวอย่างที่เกี่ยวข้องกับตารางทั้งสี่: วันที่, ยอดขาย, ผลิตภัณฑ์, และ เป้าหมาย ข้อมูล และ ผลิตภัณฑ์ เป็นข้อมูลชนิดมิติ และความสัมพันธ์หนึ่งต่อกลุ่มสัมพันธ์กับตาราง ยอดขาย ชนิดความจริง ซึ่งแสดงการออกแบบโครงร่างรูปดาวที่ดี อย่างไรก็ตาม ตาราง เป้าหมาย สัมพันธ์กับตารางอื่น ๆ

ตาราง เป้าหมาย มีสามตาราง: Category, TargetQuantity, และ TargetYear. แถวตารางเผยถึงส่วนประกอบของประเภทปีและผลิตภัณฆ์ อีกนัยหนึ่ง เป้าหมายที่ใช้ประเมินประสิทธิภาพการขายนั้นถูกกำหนดในแต่ละปีสำหรับผลิตภัณฑ์แต่ละประเภท

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

เพื่อหลีกเลี่ยงปัญหานี้เราขอแนะนำให้คุณควบคุมสรุปของข้อมูลข้อเท็จจริงของคุณโดยใช้หน่วยวัด วิธีหนึ่งในการควบคุมสรุปคือการส่งกลับค่า BLANK เมื่อมีการสอบถามช่วงเวลาที่ต่ำกว่า อีกวิธีหนึ่งคือการกำหนดด้วย DAX ที่มีความซับซ้อนบางอย่างคือการจัดสรรค่าในช่วงเวลาที่ต่ำกว่า
พิจารณาข้อกำหนดหน่วยวัดต่อไปนี้ที่ใช้ฟังก์ชัน DAX ISFILTERED จะส่งกลับค่าเฉพาะเมื่อคอลัมน์ วันที่ หรือ เดือน ไม่ถูกกรอง
Target Quantity =
IF(
NOT ISFILTERED('Date'[Date])
&& NOT ISFILTERED('Date'[Month]),
SUM(Target[TargetQuantity])
)
ขณะนี้วิชวลเมทริกซ์ต่อไปนี้ใช้หน่วยวัด ปริมาณเป้าหมาย ซึ่งแสดงให้เห็นว่าปริมาณเป้าหมายรายเดือนทั้งหมดเป็นค่า BLANK

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

ตอนนี้เรามาดูแถวตารางกัน

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

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

การแสดงผลทำให้เกิดบิดเบือนข้อมูล เกิดอะไรขึ้นที่นี่
กรองคอลัมน์ สี จากตาราง ผลิตภัณฑ์ แสดงในสองแถว แถวหนึ่งเป็นประเภทของสี และอีกแถวหนึ่งเป็นประเภทเครื่องประดับ มีการเผยแพร่ค่าประเภทที่สองเหล่านี้เป็นตัวกรองไปยังตาราง เป้าหมาย อีกนัยหนึ่ง เนื่องจากสีน้ำเงินถูกใช้โดยผลิตภัณฑ์จากสองประเภท ใช้ ประเภทเหล่านั้น ในการกรองเป้าหมาย
เพื่อหลีกเลี่ยงปัญหานี้เรา ดังที่กล่าวไว้ เราขอแนะนำให้คุณควบคุมสรุปของข้อมูลข้อเท็จจริงของคุณโดยใช้หน่วยวัด
มาเริ่มต้นจากกำจัดกัดความหน่วยวัดต่อไปนี้ โปรดสังเกตว่าคอลัมน์ตารางทั้งหมดของ ผลิตภัณฑ์ ที่อยู่ใต้ระดับประเภทจะได้รับการทดสอบสำหรับตัวกรอง
Target Quantity =
IF(
NOT ISFILTERED('Product'[ProductID])
&& NOT ISFILTERED('Product'[Product])
&& NOT ISFILTERED('Product'[Color]),
SUM(Target[TargetQuantity])
)
ขณะนี้การแสดงผลเมทริกซ์ต่อไปนี้ใช้หน่วยวัด ปริมาณเป้าหมาย ซึ่งแสดงให้เห็นว่าปริมาณเป้าหมายของทุกสีทั้งหมดเป็นค่า BLANK

การออกแบบแบบจำลองขั้นสุดท้ายมีลักษณะดังต่อไปนี้

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