คําแนะนําความสัมพันธ์แบบกลุ่มต่อกลุ่ม
บทความนี้มุ่งเป้าหมายไปยังคุณในฐานะผู้สร้างแบบจําลองข้อมูลที่ทํางานกับ Power BI Desktop ซึ่งอธิบายสถานการณ์แบบจําลองแบบกลุ่มต่อกลุ่มสามแบบ นอกจากนี้ยังมีคําแนะนําเกี่ยวกับวิธีการออกแบบในแบบจําลองของคุณอย่างประสบความสําเร็จ
หมายเหตุ
บทนําสู่ความสัมพันธ์ของแบบจําลองนั้นไม่ครอบคลุมในบทความนี้ ถ้าคุณไม่คุ้นเคยกับความสัมพันธ์ คุณสมบัติหรือวิธีการกําหนดค่าทั้งหมด เราขอแนะนําให้คุณอ่านบทความ ความสัมพันธ์แบบจําลอง ใน Power BI Desktop ก่อน
นอกจากนี้ยังเป็นสิ่งสําคัญที่คุณต้องทําความเข้าใจเกี่ยวกับการออกแบบแบบจําลองข้อมูลรูปดาว สําหรับข้อมูลเพิ่มเติม โปรดดูทําความเข้าใจ Schema รูปดาวและความสําคัญของ Power BI
ความเป็นจริงแล้วมีสถานการณ์แบบกลุ่มต่อกลุ่มสามแบบ ซึ่งสามารถเกิดขึ้นได้เมื่อคุณจําเป็นต้อง:
- เชื่อมโยงตารางชนิดสองมิติ
- เชื่อมโยงตารางความจริงสองชนิด
- เชื่อมโยงตารางความจริงเกรนสูงขึ้นเมื่อตารางความจริงจัดเก็บแถวที่มีเกรนสูงกว่าแถวตารางชนิดมิติ
หมายเหตุ
ในตอนนี้ Power BI สนับสนุนความสัมพันธ์แบบกลุ่มต่อกลุ่ม สําหรับข้อมูลเพิ่มเติม ให้ดู ใช้ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่มใน Power BI Desktop
เชื่อมโยงมิติแบบกลุ่มต่อกลุ่ม
มาพิจารณาชนิดสถานการณ์แบบกลุ่มต่อกลุ่มพร้อมกับตัวอย่างกันเถอะ สถานการณ์คลาสสิกเชื่อมโยงสองเอนทิตี: ลูกค้าธนาคารและบัญชีธนาคาร พิจารณาว่าลูกค้าสามารถมีหลายบัญชี และบัญชีสามารถมีลูกค้าได้หลายราย เมื่อบัญชีมีลูกค้าหลายราย มักเรียกว่า ผู้ถือบัญชีร่วม
การสร้างแบบจําลองเอนทิตีเหล่านี้จะตรงไปตรงมา ตารางแบบหนึ่งมิติจัดเก็บบัญชี และตารางอีกมิติหนึ่งเก็บลูกค้า เช่นเดียวกับลักษณะของตารางชนิดมิติ มีคอลัมน์ 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 และ Amount ซึ่งแสดงผลลัพธ์ต่อไปนี้:
- Account-01 ยอดเงินคงเหลือ 75
- Account-02 ยอดเงินคงเหลือ 200
- รวม 275
วิชวลที่สองชื่อว่า Customer Balance ซึ่งมีสองคอลัมน์: Customer และ Amount ซึ่งแสดงผลลัพธ์ต่อไปนี้:
- 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 เป็นด้าน "หนึ่ง" ของความสัมพันธ์เสมอ
เชื่อมโยงข้อเท็จจริงแบบกลุ่มต่อกลุ่ม
ชนิดสถานการณ์แบบกลุ่มต่อกลุ่มที่สองจะเกี่ยวข้องกับความสัมพันธ์ระหว่างตารางความจริงสองชนิด ตารางความจริงสองชนิดอาจเกี่ยวข้องกันโดยตรง เทคนิคการออกแบบนี้จะเป็นประโยชน์สําหรับการสํารวจข้อมูลอย่างรวดเร็วและง่ายดาย อย่างไรก็ตาม เราจะไม่แนะนําวิธีการออกแบบนี้โดยทั่วไป เราจะอธิบายภายหลังในส่วนนี้
ลองพิจารณาตัวอย่างที่เกี่ยวข้องกับตารางความจริงสองชนิด: คําสั่ง และการ เติมสินค้า ตาราง คําสั่ง มีข้อมูล 1 แถวต่อหนึ่งคําสั่ง และ ตารางการ เติมสินค้าอาจไม่มีข้อมูลหรือมีมากกว่าหนึ่งแถวต่อหนึ่งคําสั่ง แถวในตารางคําสั่งแสดงคําสั่งขาย แถวในตารางการเติมสินค้าแสดงรายการคําสั่งที่ถูกจัดส่งแล้ว ความสัมพันธ์แบบกลุ่มต่อกลุ่มเกี่ยวข้องกับคอลัมน์ 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 (การประเมินผลความสัมพันธ์)
เชื่อมโยงความจริงเกรนที่สูงกว่า
สถานการณ์กลุ่มต่อกลุ่มนี้แตกต่างจากสถานการณ์ที่ได้อธิบายไว้แล้วในบทความนี้
มาพิจารณาตัวอย่างที่เกี่ยวข้องกับตารางทั้งสี่: วันที่, ยอดขาย, ผลิตภัณฑ์, และ เป้าหมาย วันที่และผลิตภัณฑ์ เป็นตารางชนิดมิติ และความสัมพันธ์แบบหนึ่งต่อกลุ่มสัมพันธ์กับตารางยอดขายชนิดความจริง ซึ่งแสดงการออกแบบ Schema รูปดาวที่ดี อย่างไรก็ตาม ตารางเป้าหมายสัมพันธ์กับตารางอื่น ๆ
ตาราง เป้าหมาย มีสามคอลัมน์: Category, TargetQuantity, และ TargetYear. แถวของตารางเผยถึงส่วนประกอบของหมวดหมู่ปีและผลิตภัณฑ์ อีกนัยหนึ่ง เป้าหมายที่ใช้เพื่อวัดประสิทธิภาพการขาย นั้นถูกตั้งค่าในแต่ละปีสําหรับผลิตภัณฑ์แต่ละประเภท
เนื่องจากตารางเป้าหมายจัดเก็บข้อมูลในระดับที่สูงกว่าตารางชนิดมิติซึ่งไม่สามารถสร้างความสัมพันธ์แบบหนึ่งต่อกลุ่มได้ เป็นเรื่องจริงสําหรับความสัมพันธ์เพียงหนึ่งเดียว ลองสํารวจว่าตารางเป้าหมายสามารถเกี่ยวข้องกับตารางชนิดมิติได้อย่างไร
เชื่อมโยงช่วงเวลาเกรนที่สูงขึ้น
ความสัมพันธ์ระหว่าง ตารางวันที่ และ เป้าหมาย ควรเป็นความสัมพันธ์แบบหนึ่งต่อกลุ่ม เนื่องจากค่าของ คอลัมน์ TargetYear เป็นวันที่ ในตัวอย่างนี้ แต่ละ ค่าคอลัมน์ TargetYear เป็นวันที่แรกของปีเป้าหมาย
เคล็ดลับ
เมื่อจัดเก็บข้อเท็จจริงในช่วงเวลาที่สูงขึ้นกว่าวันที่ตั้งค่าชนิดข้อมูลคอลัมน์เป็นวันที่ (หรือใครเลขหากคุณกําลังใช้คีย์วันที่) ในคอลัมน์ ให้จัดเก็บค่าที่แสดงวันแรกของช่วงเวลา ตัวอย่างเช่น มีการบันทึกช่วงปีเป็นวันที่ 1 มกราคมของปี และระยะเวลาเดือนจะถูกบันทึกเป็นวันแรกของเดือนนั้น
อย่างไรก็ตามต้องใช้ความระมัดระวังเพื่อให้แน่ใจว่าตัวกรองระดับเดือนหรือวันที่สร้างผลลัพธ์ที่มีความหมาย หากไม่มีตรรกะการคํานวณพิเศษ ภาพรายงานอาจรายงานว่าวันที่เป้าหมายเป็นวันแรกของแต่ละปี วันอื่นๆ ทั้งหมดและเดือนทั้งหมดยกเว้นมกราคมจะสรุปปริมาณเป้าหมายเป็น BLANK
วิชวลเมทริกซ์ต่อไปนี้แสดงสิ่งที่เกิดขึ้นเมื่อผู้ใช้รายงานเจาะลึกจากปีเป็นเดือน วิชวลกําลังสรุปคอลัมน์ 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 เมื่อมีการใช้คอลัมน์ชนิดมิติระดับล่างในการกรองหรือจัดกลุ่ม
- ซ่อนคอลัมน์ตารางชนิดข้อเท็จจริงที่สามารถสรุปได้ ซึ่งเป็นวิธีนี้เท่านั้นที่สามารถใช้เพื่อสรุปตารางชนิดข้อเท็จจริงได้
เนื้อหาที่เกี่ยวข้อง
สําหรับข้อมูลเพิ่มเติมที่เกี่ยวข้องกับบทความนี้ โปรดดูทรัพยากรต่อไปนี้:
คำติชม
https://aka.ms/ContentUserFeedback
เร็วๆ นี้: ตลอดปี 2024 เราจะขจัดปัญหา GitHub เพื่อเป็นกลไกคำติชมสำหรับเนื้อหา และแทนที่ด้วยระบบคำติชมใหม่ สำหรับข้อมูลเพิ่มเติม ให้ดู:ส่งและดูข้อคิดเห็นสำหรับ