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

คาร์ดินาลลิตี้ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม ใน Power BI Desktop ประกอบด้วยหนึ่งใน 3 คุณลักษณะที่เกี่ยวข้อง:
โมเดลแบบรวม: โมเดลแบบรวม อนุญาตให้รายงานมีการเชื่อมต่อข้อมูลตั้งแต่สองแบบขึ้นไป รวมถึงการเชื่อมต่อ DirectQuery หรือการนำเข้าในรูปแบบใด ๆ ก็ตาม สำหรับข้อมูลเพิ่มเติม โปรดดูการใช้โมเดลแบบรวมใน Power BI Desktop
ความสัมพันธ์แบบกลุ่ม-กลุ่มคาร์ดิลิตี้: ด้วยโมเดลแบบรวม คุณสามารถสร้าง คาร์ดินาลลิตี้ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม ระหว่างตารางได้ วิธีการนี้จะลบขอคำสำหรับค่าเฉพาะในตาราง นอกจากนี้ยังลบการแก้ปัญหาชั่วคราวก่อนหน้า เช่น การเริ่มตารางใหม่เพียงเพื่อสร้างความสัมพันธ์ จะอธิบายคุณลักษณะต่อไปในบทความนี้
โหมดการจัดเก็บข้อมูล: คุณสามารถระบุวิชวลที่ต้องการคิวรีไปยังแหล่งข้อมูลระบบ Back-end ได้ วิชวลที่ไม่ต้องใช้คิวรีจะถูกนำเข้าแม้ว่าจะมาจาก DirectQuery คุณลักษณะนี้จะช่วยปรับปรุงประสิทธิภาพ และลดการโหลดระบบ Back-end ก่อนหน้านี้ แม้กระทั่งวิชวลพื้นฐานอย่าง Slicers ก็เริ่มคิวรีที่ถูกส่งไปยังแหล่งระบบ Back-end สำหรับข้อมูลเพิ่มเติม โปรดดู โหมดการจัดเก็บข้อมูลใน Power BI Desktop
การแก้ไขปัญหาของคาร์ดินาลลิตี้ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม
ก่อนที่จะมี คาร์ดินาลลิตี้ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม ความสัมพันธ์ระหว่างสองตารางถูกกำหนดไว้ใน Power BI อย่างน้อยหนึ่งในคอลัมน์ของตารางที่อยู่ในความสัมพันธ์ต้องมีค่าเฉพาะ แต่บ่อยครั้งที่ไม่มีคอลัมน์ที่มีค่าเฉพาะ
ตัวอย่างเช่น สองตารางอาจมีคอลัมน์ที่มีชื่อว่า Country ค่าของ Country ไม่ได้เฉพาะเจาะจงในตารางแต่อย่างใด ในการรวมตารางดังกล่าว คุณจะต้องสร้างการแก้ปัญหาชั่วคราว การแก้ปัญหาชั่วคราวอย่างหนึ่งอาจจะเป็นการแนะนำตารางเพิ่มเติมที่มีค่าที่ไม่ซ้ำกันที่จำเป็น ด้วย คาร์ดินาลลิตี้ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม คุณสามารถรวมตารางดังกล่าวได้โดยตรงได้หากคุณใช้คาร์ดินาลลิตี้ความสัมพันธ์ของ กลุ่ม-ต่อ-กลุ่ม
ใช้คาร์ดินาลลิตี้ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม
เมื่อทำการกำหนดความสัมพันธ์ระหว่างตารางสองตารางใน Power BI คุณจะต้องกำหนดคาร์ดินาลลิตี้ของความสัมพันธ์ ตัวอย่างเช่น ความสัมพันธ์ระหว่าง ProductSales และ Product—โดยใช้คอลัมน์ ProductSales[ProductCode] และ Product[ProductCode]—จะได้รับการกำหนดเป็น Many-1 เรากำหนดความสัมพันธ์ด้วยวิธีนี้เพราะแต่ละผลิตภัณฑ์มียอดขายจำนวนมาก และคอลัมน์ในตารางผลิตภัณฑ์ (ProductCode) เป็นคอลัมน์เฉพาะ เมื่อคุณกำหนดคาร์ดินาลลิตี้ความสัมพันธ์เป็น Many-1, 1-Many หรือ 1-1 Power BI จะตรวจสอบ ดังนั้นคาร์ดินาลลิตี้ที่คุณเลือกจะตรงกับข้อมูลจริง
ตัวอย่างเช่น ลองดูโมเดลง่าย ๆ ในภาพนี้:

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

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

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

ดังที่เห็นในภาพก่อน แถว ProductName ที่ว่างจะสัมพันธ์กับยอดขายสำหรับผลิตภัณฑ์ C แถวว่างนี้สามารถอธิบายได้ดังต่อไปนี้:
แถวใดๆ ในตาราง ProductSales ที่ไม่สอดคล้องกับแถวอยู่ในตาราง ผลิตภัณฑ์ มีปัญหา Referential Integrity ตามที่เราเห็นสำหรับผลิตภัณฑ์ C ในตัวอย่างนี้
แถวใดๆ ในตาราง ProductSales ที่คอลัมน์คีย์นอกเป็น Null
เนื่องด้วยเหตุผลดังกล่าว ในทั้งสองกรณีแถวที่เว้นว่างมีสาเหตุมาจากการขายที่ไม่ทราบ ProductName และ ราคา
บางครั้งที่ตารางถูกรวมเข้าด้วยกันโดยคอลัมน์สองคอลัมน์ แต่ไม่มีคอลมน์ใดที่เป็นค่าเฉพาะเลย ตัวอย่างเช่น ลองพิจารณาตารางสองตารางเหล่านี้:
ตาราง การขาย แสดงข้อมูลการขายตาม รัฐ และแต่ละแถวมีจำนวนการขายของประเภทการขายในรัฐนั้นๆ รัฐรวมถึง CA, WA และ TX

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

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

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

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

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

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

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

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

ด้วยการคำนึงถึงความแตกต่างก่อนหน้านี้ ตรวจสอบให้แน่ใจว่าการคำนวณที่ใช้ ALL(<Table>) เช่น % ของยอดรวม จะแสดงค่าผลลัพธ์ที่เจาะจง
ข้อควรพิจารณาและข้อจำกัด
มีข้อจำกัดบางอย่างสำหรับการวางจำหน่าย ความสัมพันธ์กับจำนวนนับแบบกลุ่มคาร์ดินัลลิตี้ และโมเดลแบบรวม
แหล่งที่มา Live Connect (หลายมิติ) ดังต่อไปนี้ไม่สามารถใช้กับโมเดลแบบรวมได้:
- SAP HANA
- SAP Business Warehouse
- SQL Server Analysis Services
- ชุดข้อมูล Power BI
- Azure Analysis Services
เมื่อทำการเชื่อมต่อกับแหล่งที่มาหลายมิติเหล่านี้โดยใช้ DirectQuery คุณจะไม่สามารถเชื่อมต่อกับแหล่งที่มา DirectQuery อีกแห่ง หรือรวมเข้ากับข้อมูลที่นำเข้าได้
ข้อจำกัดในการใช้ DirectQuery ที่ยังมีอยู่จะยังคงมีผลเมื่อใช้ ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่มคาร์ดินัลลิตี้ ข้อจำกัดจำนวนมากเป็นข้อจำกัดต่อตาราง โดยขึ้นอยู่กับโหมดที่เก็บข้อมูลของตาราง ตัวอย่างเช่น คอลัมน์ที่ได้รับการคำนวณบนตารางที่นำเข้าสามารถอ้างอิงไปยังตารางอื่น แต่คอลัมน์ที่ได้รับการคำนวณบนตาราง DirectQuery จะยังคงถูกอ้างอิงไปยังคอลัมน์บนตารางเดียวกันเท่านั้น ข้อจำกัดอื่น ๆ มีผลกับโมเดลทั้งหมดหากมีตารางใดภายในโมเดลที่เป็น DirectQuery ตัวอย่างเช่น คุณลักษณะ QuickInsights และถามตอบจะไม่สามารถใช้งานได้บนโมเดลหากมีตารางใดภายในโมเดลมีโหมดที่เก็บข้อมูลของ DirectQuery
ขั้นตอนถัดไป
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโมเดลแบบรวมและ DirectQuery โปรดดูบทความต่อไปนี้: