คําแนะนําความสัมพันธ์แบบสองทิศทาง

บทความนี้มุ่งเป้าหมายไปยังคุณในฐานะผู้สร้างแบบจําลองข้อมูลที่ทํางานกับ Power BI Desktop ซึ่งจะให้คําแนะนําคุณเกี่ยวกับเวลาในการสร้างความสัมพันธ์ของแบบจําลองแบบสองทิศทาง ความสัมพันธ์แบบสองทิศทางคือตัวกรองในทั้งสองทิศทาง

หมายเหตุ

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

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

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

มีสามสถานการณ์เมื่อการกรองแบบสองทิศทางสามารถแก้ไขข้อกําหนดเฉพาะได้:

ความสัมพันธ์ของแบบจําลองพิเศษ

ความสัมพันธ์แบบสองทิศทางมีบทบาทสําคัญในการสร้างความสัมพันธ์แบบจําลองพิเศษสองชนิดต่อไปนี้:

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

รายการตัวแบ่งส่วนข้อมูล "ด้วยข้อมูล"

ความสัมพันธ์แบบสองทิศทางสามารถส่งตัวแบ่งส่วนข้อมูลที่จํากัดรายการไปยังตําแหน่งที่มีข้อมูลอยู่ได้ (หากคุณคุ้นเคยกับ Excel PivotTables และตัวแบ่งส่วนข้อมูล นี่คือลักษณะการทํางานเริ่มต้นเมื่อทําการจัดหาข้อมูลจากแบบจําลองความหมายของ Power BI (ก่อนหน้านี้เรียกว่าชุดข้อมูล) หรือแบบจําลอง Analysis Services) เพื่อช่วยอธิบายให้เข้าใจความหมาย ก่อนอื่นให้พิจารณาไดอะแกรมแบบจําลองต่อไปนี้

Diagram showing a model containing three tables. The design is described in the following paragraph.

ตารางแรกที่มีชื่อว่า Customer ซึ่งมีสามคอลัมน์ดังต่อไปนี้: ประเทศ-ภูมิภาค ลูกค้า และ CustomerCode ตารางที่สองที่มีชื่อว่าผลิตภัณฑ์ ซึ่งมีสามคอลัมน์ดังต่อไปนี้: สี ผลิตภัณฑ์ และ SKU ตารางที่สามชื่อว่ายอดขาย ซึ่งมีสี่คอลัมน์ดังต่อไปนี้: CustomerCode OrderDate Quantity และ SKU ตารางลูกค้าและผลิตภัณฑ์ เป็นตารางชนิดมิติ และแต่ละตารางมีความสัมพันธ์แบบหนึ่งต่อกลุ่มไปยังตารางยอดขาย แต่ละความสัมพันธ์จะกรองในทิศทางเดียว

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

หมายเหตุ

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

Diagram showing that the model now reveals the table rows. The row details are described in the following paragraph.

รายละเอียดแถวสําหรับสามตารางอธิบายไว้ในหัวข้อย่อยต่อไปนี้:

  • ตาราง Customer มีสองแถว:
    • CustomerCode CUST-01 Customer Customer-1 ประเทศ-ภูมิภาค สหรัฐอเมริกา
    • CustomerCode CUST-02 Customer Customer-2 ประเทศ-ภูมิภาค ออสเตรเลีย
  • ตาราง ผลิตภัณฑ์ มีสามแถว:
    • SKU CL-01 ผลิตภัณฑ์ เสื้อยืด สี เขียว
    • SKU CL-02 ผลิตภัณฑ์ กางเกงยีนส์ สีน้ําเงิน
    • SKU AC-01 ผลิตภัณฑ์ หมวก สีน้ําเงิน
  • ตาราง ยอดขาย มีสามแถว:
    • OrderDate 1 มกราคม 2019 CustomerCode CUST-01 SKU CL-01 จํานวน 10
    • OrderDate 2 กุมภาพันธ์ 2019 CustomerCode CUST-01 SKU CL-02 จํานวน 20
    • OrderDate 3 มีนาคม 2019 CustomerCode CUST-02 SKU CL-01 จํานวน 30

ในตอนนี้ ให้พิจารณาหน้ารายงานต่อไปนี้

Diagram showing the report page containing three visuals. The details are described in the following paragraph.

หน้านี้ประกอบด้วยตัวแบ่งส่วนข้อมูลสองตัวและการ์ดแสดงผลด้วยภาพ ตัวแบ่งส่วนข้อมูลแรกมีไว้สําหรับ ประเทศ-ภูมิภาค และมีสองรายการ: ออสเตรเลียและสหรัฐอเมริกา ขณะนี้แบ่งตามออสเตรเลีย ตัวแบ่งส่วนข้อมูลที่สองสําหรับ ผลิตภัณฑ์ และมีสามรายการ: หมวก กางเกงยีนส์ และเสื้อยืด ไม่มีรายการที่ถูกเลือก (หมายความว่า ไม่มีการกรองผลิตภัณฑ์ ) วิชวลการ์ดแสดงปริมาณ 30

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

Diagram showing a model that the relationship between the Product and Sales table is now bi-directional.

ตอนนี้ตัวแบ่งส่วนข้อมูลผลิตภัณฑ์แสดงรายการเดียว: เสื้อยืด รายการนี้แสดงเฉพาะผลิตภัณฑ์ที่ขายให้กับลูกค้าชาวออสเตรเลียเท่านั้น

Diagram showing the report page containing three visuals with Product called out. The details are described in the following paragraph.

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

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

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

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

Total Quantity = SUM(Sales[Quantity])

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

Diagram showing that the Filters pane for the Product slicer now filters by

การวิเคราะห์มิติต่อมิติ

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

ใช้แบบจําลองตัวอย่างในบทความนี้ ให้พิจารณาว่าสามารถตอบคําถามต่อไปนี้ได้อย่างไร:

  • มีสีกี่สีที่ถูกขายให้กับลูกค้าชาวออสเตรเลีย
  • มีประเทศ/ภูมิภาคกี่ประเทศที่ซื้อกางเกงยีนส์

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

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

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

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

Different Countries Sold =
CALCULATE(
    DISTINCTCOUNT(Customer[Country-Region]),
    CROSSFILTER(
        Customer[CustomerCode],
        Sales[CustomerCode],
        BOTH
    )
)

ในระหว่างการประเมินผลของ นิพจน์หน่วยวัดยอดขายจากแต่ละประเทศ ความสัมพันธ์ระหว่าง ตารางลูกค้า และ ยอดขาย จะกรองทั้งสองทิศทาง

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

Diagram showing that two products are listed in a table visual. In the

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