คำแนะนำความสัมพันธ์แบบกลุ่มต่อกลุ่ม

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

แผนภาพที่แสดงวิชวลตารางที่มีสามคอลัมน์: OrderID, OrderQuantity และ FulfillmentQuantity

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

คำแนะนำเชื่อมโยงข้อเท็จจริงแบบกลุ่มต่อกลุ่ม

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

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

มาพิจารณาวิธีการที่ดีกว่ากัน

แผนภาพที่แสดงแบบจำลองที่มีหกตาราง: OrderLine, OrderDate, Order, Fulfillment, Product, และ FulfillmentDate.

โปรดสังเกตการเปลี่ยนแปลงแบบดังต่อไปนี้:

  • ขณะนี้โมเดลมีตารางเพิ่มเติมสี่ตาราง: 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, Category, และ TargetQuantity.

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

ความสัมพันธ์ของช่วงเวลาเกรนที่สูงขึ้น

ความสัมพันธ์ระหว่างตาราง วันที่ และ เป้าหมาย เนื่องจากค่าของคอลัมน์ TargetYear เป็นวันที่ ในตัวอย่างนี้ แต่ละค่าในคอลัมน์ TargetYear เป็นวันแรกของปีเป้าหมาย

เคล็ดลับ

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

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

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

แผนภาพที่แสดงวิชวลเมทริกซ์ซึ่งเปิดเผยจำนวนเป้าหมายในปี 2020 เป็น 270 รายการ

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

พิจารณาข้อกำหนดหน่วยวัดต่อไปนี้ที่ใช้ฟังก์ชัน DAX ISFILTERED จะส่งกลับค่าเฉพาะเมื่อคอลัมน์ วันที่ หรือ เดือน ไม่ถูกกรอง

Target Quantity =
IF(
    NOT ISFILTERED('Date'[Date])
        && NOT ISFILTERED('Date'[Month]),
    SUM(Target[TargetQuantity])
)

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

แผนภาพแสดงวิชวลเมทริกซ์ที่เผยปริมาณเป้าหมายปี 2020 เป็น 270 พร้อมค่ารายเดือนที่ว่างเปล่า

เชื่อมโยงเกรนที่สูงกว่า (ไม่ใช่วันที่)

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

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

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

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

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

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

การจัดกลุ่มวิชวลของตารางโดยคอลัมน์ ประเภท จากตาราง ผลิตภัณฑ์ สร้างผลลัพธ์ดังต่อไปนี้

แผนภาพที่แสดงวิชวลตารางที่มีสองคอลัมน์: ประเภทและ TargetQuantity เครื่องประดับเท่ากับ 60 เสื้อผ้าเท่ากับ 40 และทั้งหมดเท่ากับ 100

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

แผนภาพที่แสดงวิชวลตารางที่มีสองคอลัมน์: สีและ TargetQuantity สีน้ำเงินเท่ากับ 100 สีเขียวเท่ากับ 40 และรวมเท่ากับ 100

การแสดงผลทำให้เกิดบิดเบือนข้อมูล เกิดอะไรขึ้นที่นี่

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

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

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

Target Quantity =
IF(
    NOT ISFILTERED('Product'[ProductID])
        && NOT ISFILTERED('Product'[Product])
        && NOT ISFILTERED('Product'[Color]),
    SUM(Target[TargetQuantity])
)

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

แผนภาพที่แสดงวิชวลตารางที่มีสองคอลัมน์: สีและ TargetQuantity สีน้ำเงินเป็นค่า BLANK สีเขียวเป็นค่า BLANK และผลรวมเท่ากับ 100

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

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

คำแนะนำเชื่อมโยงความจริงเกรนที่สูงกว่า

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

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

ขั้นตอนถัดไป

สำหรับข้อมูลเพิ่มเติมที่เกี่ยวข้องกับบทความนี้ โปรดดูทรัพยากรต่อไปนี้: