ตัวอย่าง ความสัมพันธ์แบบ many-to-many

ข้ามไปยังเนื้อหาหลัก

เบราว์เซอร์นี้ไม่ได้รับการสนับสนุนอีกต่อไป

อัปเกรดเป็น Microsoft Edge เพื่อใช้ประโยชน์จากคุณลักษณะล่าสุด เช่น การอัปเดตความปลอดภัยและการสนับสนุนด้านเทคนิค

ใช้ความสัมพันธ์แบบกลุ่มต่อกลุ่มใน Power BI Desktop

  • บทความ
  • 09/23/2022
  • 2 นาทีในการอ่าน

ในบทความนี้

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

ตัวอย่าง ความสัมพันธ์แบบ many-to-many

คาร์ดินาลลิตี้ความสัมพันธ์แบบกลุ่มต่อกลุ่มใน Power BI Desktop ประกอบด้วยหนึ่งในสามคุณลักษณะที่เกี่ยวข้อง:

  • โมเดลแบบรวม: โมเดลแบบรวมอนุญาตให้รายงานมีการเชื่อมต่อข้อมูลตั้งแต่สองแบบขึ้นไป รวมถึงการเชื่อมต่อ DirectQuery หรือการนำเข้าในรูปแบบใด ๆ ก็ตาม สำหรับข้อมูลเพิ่มเติม โปรดดูการใช้โมเดลแบบรวมใน Power BI Desktop

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

  • โหมดการจัดเก็บข้อมูล: คุณสามารถระบุวิชวลที่ต้องการคิวรีไปยังแหล่งข้อมูลระบบ Back-end ได้ วิชวลที่ไม่ต้องใช้คิวรีจะถูกนำเข้าแม้ว่าจะมาจาก DirectQuery คุณลักษณะนี้จะช่วยปรับปรุงประสิทธิภาพ และลดการโหลดระบบ Back-end ก่อนหน้านี้ แม้กระทั่งวิชวลพื้นฐานอย่าง Slicers ก็เริ่มคิวรีที่ถูกส่งไปยังแหล่งระบบ Back-end สำหรับข้อมูลเพิ่มเติม โปรดดู โหมดการจัดเก็บข้อมูลใน Power BI Desktop

การแก้ไขปัญหาของคาร์ดินาลลิตี้ความสัมพันธ์แบบกลุ่มต่อกลุ่ม

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

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

ใช้ความสัมพันธ์กับคาร์ดินาลลิตี้แบบกลุ่มต่อกลุ่ม

เมื่อทำการกำหนดความสัมพันธ์ระหว่างตารางสองตารางใน Power BI คุณจะต้องกำหนดคาร์ดินาลลิตี้ของความสัมพันธ์ ตัวอย่างเช่น ความสัมพันธ์ระหว่าง ProductSales และผลิตภัณฑ์—โดยใช้คอลัมน์ ProductSales[ProductCode] และ Product[ProductCode] จะกําหนดให้เป็น Many-1 เรากำหนดความสัมพันธ์ด้วยวิธีนี้เพราะแต่ละผลิตภัณฑ์มียอดขายจำนวนมาก และคอลัมน์ในตารางผลิตภัณฑ์ (ProductCode) เป็นคอลัมน์เฉพาะ เมื่อคุณกำหนดคาร์ดินาลลิตี้ความสัมพันธ์เป็น Many-1, 1-Many หรือ 1-1 Power BI จะตรวจสอบ ดังนั้นคาร์ดินาลลิตี้ที่คุณเลือกจะตรงกับข้อมูลจริง

ตัวอย่างเช่น ลองดูโมเดลง่าย ๆ ในภาพนี้:

ตัวอย่าง ความสัมพันธ์แบบ many-to-many

สมมติว่าตาราง ผลิตภัณฑ์ แสดงเพียงสองแถวดังภาพ:

ตัวอย่าง ความสัมพันธ์แบบ many-to-many

และสมมติว่าตารางยอดขายมีเพียงสี่แถว ซึ่งรวมถึงแถวสำหรับผลิตภัณฑ์ C เนื่องจากข้อผิดพลาดของ Referential Integrity จึงไม่มีแถวของผลิตภัณฑ์ C ในตาราง ผลิตภัณฑ์

ตัวอย่าง ความสัมพันธ์แบบ many-to-many

ProductName และ ราคา (จากตาราง ผลิตภัณฑ์) พร้อมกับ จำนวนรวมสำหรับแต่ละผลิตภัณฑ์ (จากตาราง ProductSales) จะแสดงดังภาพ:

ตัวอย่าง ความสัมพันธ์แบบ many-to-many

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

  • แถวใดๆ ในตาราง ProductSales ที่ไม่สอดคล้องกับแถวอยู่ในตาราง ผลิตภัณฑ์ มีปัญหา Referential Integrity ตามที่เราเห็นสำหรับผลิตภัณฑ์ C ในตัวอย่างนี้

  • แถวใดๆ ในตาราง ProductSales ที่คอลัมน์คีย์นอกเป็น Null

เนื่องด้วยเหตุผลดังกล่าว ในทั้งสองกรณีแถวที่เว้นว่างมีสาเหตุมาจากการขายที่ไม่ทราบ ProductName และ ราคา

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

  • ตาราง การขาย แสดงข้อมูลการขายตาม รัฐ และแต่ละแถวมีจำนวนการขายของประเภทการขายในรัฐนั้นๆ รัฐรวมถึง CA, WA และ TX

    ตัวอย่าง ความสัมพันธ์แบบ many-to-many

  • ตาราง CityData แสดงข้อมูลเกี่ยวกับเมืองต่าง ๆ รวมทั้งประชากรและรัฐ (เช่น CA, WA และนิวยอร์ก)

    ตัวอย่าง ความสัมพันธ์แบบ many-to-many

ตอนนี้คอลัมน์สำหรับรัฐมีอยู่ทั้งสองตาราง ซึ่งเหมาะสมที่จะต้องการรายงานทั้งยอดขายรวมตามรัฐและจำนวนประชากรทั้งหมดของแต่ละรัฐ อย่างไรก็ตาม มีปัญหา: คอลัมน์รัฐไม่มีค่าเฉพาะในตารางทั้งสอง

การแก้ปัญหาชั่วคราวก่อนหน้านี้

ก่อนหน้าเวอร์ชัน Power BI Desktop ที่เปิดตัวในเดือนกรกฎาคม 2018 คุณไม่สามารถสร้างความสัมพันธ์โดยตรงระหว่างตารางเหล่านี้ได้ การแก้ปัญหาชั่วคราวทั่วไปคือ:

  • สร้างตารางที่สามที่มีเพียง ID รัฐเฉพาะเท่านั้น อาจเป็นตารางทั้งหมดหรือตารางใดตารางหนึ่งจาก:

    • ตารางการคำนวณ (กำหนดโดยการใช้ Data Analysis Expressions [DAX])
    • ตารางที่ยึดตามคิวรีที่กําหนดไว้ในตัวแก้ไข Power Query ซึ่งอาจแสดง ID เฉพาะที่ดึงมาจากตารางใดตารางหนึ่ง
    • ชุดรวมต็มรูปแบบ
  • จากนั้นเชื่อมโยงสองตารางเดิมเข้ากับตารางใหม่ โดยใช้ความสัมพันธ์แบบ Many-1 ทั่วไป

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

ตัวอย่าง ความสัมพันธ์แบบ many-to-many

วิชวลที่แสดง รัฐ (จากตาราง CityData) กับจำนวน ประชากร ทั้งหมด และ การขาย ทั้งหมด จะปรากฏดังนี้:

ตัวอย่าง ความสัมพันธ์แบบ many-to-many

หมายเหตุ

เนื่องจากรัฐจากตาราง CityData ถูกใช้ในการแก้ปัญหาชั่วคราว จึงมีเพียงรัฐในตารางนั้นเท่านั้นที่แสดงในรายการ เพราะฉะนั้นจะไม่มี TX นอกจากนี้ สิ่งที่ไม่เหมือนกับความสัมพันธ์แบบ Many-1 ก็คือในขณะที่แถวทั้งหมดประกอบด้วย ยอดขายรวม (รวมถึงของ TX) รายละเอียดจะไม่รวมแถวที่เว้นว่าง ซึ่งครอบคลุมแถวที่ไม่ตรงกันดังกล่าว เช่นเดียวกัน จะไม่มีแถวที่เว้นว่างที่ครอบคลุม ยอดขาย ใดๆ ซึ่งมีค่า Null สำหรับ รัฐ

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

ตัวอย่าง ความสัมพันธ์แบบ many-to-many

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

ตัวอย่าง ความสัมพันธ์แบบ many-to-many

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

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้การแก้ไขปัญหาชั่วคราวนี้ โปรดดู คําแนะนําความสัมพันธ์แบบกลุ่มต่อกลุ่ม

ใช้คาร์ดินาลลิตี้ความสัมพันธ์แบบกลุ่มต่อกลุ่มแทนการแก้ปัญหาชั่วคราว

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

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

ตัวอย่างเช่น เมื่อคุณสร้างความสัมพันธ์โดยตรงระหว่าง CityData และ ยอดขาย ซึ่งตัวกรองควรไหลจาก CityData ไปยัง การขาย Power BI Desktopแสดงกล่องโต้ตอบ แก้ไขความสัมพันธ์:

ตัวอย่าง ความสัมพันธ์แบบ many-to-many

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

ตัวอย่าง ความสัมพันธ์แบบ many-to-many

ความแตกต่างที่สําคัญระหว่าง ความสัมพันธ์แบบกลุ่มต่อกลุ่มคาร์ดินัลลิตี้ กับความสัมพันธ์ แบบ Many-1 ทั่วไปมีดังนี้:

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

  • คุณไม่สามารถใช้ฟังก์ชัน RELATED()ได้เนื่องจากมีแถวมากกว่าหนึ่งแถวที่อาจเกี่ยวข้อง

  • การใช้ ALL() ฟังก์ชันบนตารางไม่ได้เป็นการลบตัวกรองที่ใช้กับตารางอื่นๆ ที่เชื่อมโยงโดยความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม ในตัวอย่างก่อนหน้า หน่วยวัดที่กำหนดดังแสดงในที่นี่จะไม่ลบตัวกรองบนคอลัมน์ในตาราง CityData ที่เชื่อมโยง:

    ตัวอย่าง ความสัมพันธ์แบบ many-to-many

    วิชวลที่แสดงข้อมูล รัฐยอดขาย และยอดขายรวม จะเป็นดังภาพนี้:

    ตัวอย่าง ความสัมพันธ์แบบ many-to-many

ด้วยการคำนึงถึงความแตกต่างก่อนหน้านี้ ตรวจสอบให้แน่ใจว่าการคำนวณที่ใช้ ALL(<Table>) เช่น % ของยอดรวม จะแสดงค่าผลลัพธ์ที่เจาะจง

ข้อควรพิจารณาและข้อจำกัด

มีข้อจํากัดบางอย่างสําหรับ การวางจําหน่ายความสัมพันธ์กับคาร์ดินาลลิตี้แบบกลุ่มต่อ กลุ่มและโมเดลแบบรวม

แหล่งที่มา Live Connect (หลายมิติ) ดังต่อไปนี้ไม่สามารถใช้กับโมเดลแบบรวมได้:

  • SAP HANA
  • SAP Business Warehouse
  • SQL Server Analysis Services
  • ชุดข้อมูล Power BI
  • Azure Analysis Services

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

ข้อจํากัดในการใช้ DirectQuery ที่ยังมีอยู่จะยังคงมีผลเมื่อใช้ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่มคาร์ดินัลลิตี้ ข้อจำกัดจำนวนมากเป็นข้อจำกัดต่อตาราง โดยขึ้นอยู่กับโหมดที่เก็บข้อมูลของตาราง ตัวอย่างเช่น คอลัมน์ที่ได้รับการคำนวณบนตารางที่นำเข้าสามารถอ้างอิงไปยังตารางอื่น แต่คอลัมน์ที่ได้รับการคำนวณบนตาราง DirectQuery จะยังคงถูกอ้างอิงไปยังคอลัมน์บนตารางเดียวกันเท่านั้น ข้อจำกัดอื่น ๆ มีผลกับโมเดลทั้งหมดหากมีตารางใดภายในโมเดลที่เป็น DirectQuery ตัวอย่างเช่น คุณลักษณะ QuickInsights และ QA& จะไม่สามารถใช้งานได้บนโมเดลหากมีตารางใดภายในโมเดลมีโหมดที่เก็บข้อมูลของ DirectQuery

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

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

  • ใช้แบบจำลองแบบรวมใน Power BI Desktop
  • โหมดที่เก็บข้อมูลใน Power BI Desktop
  • ใช้ DirectQuery ใน Power BI
  • แหล่งข้อมูล Power BI

Many to Many คือความสัมพันธ์แบบใด

ความสัมพันธ์ของข้อมูล M:M เป็นความสัมพันธ์แบบ Many to many Relationships (เมนู ทู เมนู รีเรชั่นชิพ) หมายความว่ามีความสัมพันธ์ แบบกลุ่ม ต่อ กลุ่ม เช่น รถเมล์ 1 คัน สามารถมีผู้โดยสารได้หลายคน และ ผู้โดยสาร 1 คนสามารถนั่งรถเมล์ได้หลายคัน

ความสัมพันธ์คู่ใดเป็นแบบ One – to – many

2) ความสัมพันธ์แบบหนึ่งต่อกลุ่ม (One to Many Relationships ;1 : N หรือ 1 : M ) เป็นความสัมพันธ์ระหว่างเอนทิตีหนึ่ง ไปมี ความสัมพันธ์กับอีกเอนทิตีหนึ่งได้มากกว่าหนึ่งรายการ ในลักษณะหนึ่งต่อกลุ่ม (ข้อมูลหนึ่งข้อมูลของเอนทิตีที่หนึ่งมีความสัมพันธ์กับข้อมูลในเอนทิตีที่สองหลาย ข้อมูล) เช่นข้อมูล “A” มีความสัมพันธ์กับข้อมูล ...

ความสัมพันธ์ แบบหนึ่งต่อกลุ่ม มีอะไรบ้าง

ความสัมพันธ์แบบหนึ่งต่อกลุ่ม หมายถึง ความสัมพันธ์ที่แต่ละสมาชิกในเอนทิตีหนึ่งมี ความสัมพันธ์กับสมาชิกในอีกหนึ่งเอนทิตีมากกว่าหนึ่งสมาชิก หรือกล่าวได้ว่า ความสัมพันธ์ดังกล่าวเป็นแบบหนึ่งต่อกลุ่ม เช่น เอนทิตีคณะและเอนทิตีนักศึกษามีความสัมพันธ์กันแบบหนึ่งต่อกลุ่ม กล่าวคือ นักศึกษาแต่ละคนมีสังกัดเพียงคณะเดียว และหนึ่งคณะ ...

ความสัมพันธ์ relationships มีกี่ลักษณะ อะไรบ้าง

ความสัมพันธ์ (Relationships) ของระบบฐานข้อมูล.
ความสัมพันธ์แบบ หนึ่งต่อหนึ่ง ( One to one Relationships) ... .
ความสัมพันธ์แบบ หนึ่งต่อกลุ่ม ( One to many Relationships) ... .
ความสัมพันธ์แบบ กลุ่มต่อกลุ่ม ( Many to Many Relationships).