แชร์ผ่าน


คําแนะนําความสัมพันธ์ที่ใช้งานอยู่และไม่ได้ใช้งาน

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

หมายเหตุ

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

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

ความสัมพันธ์ที่ใช้งานอยู่

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

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

นี่คือไดอะแกรมแบบจําลองบางส่วนของสองตาราง

Diagram showing a model containing two tables: Flight and Airport. The relationship design is described in the following paragraph.

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

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

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

นี่คือการออกแบบแบบจําลองที่ได้รับการปรับปรุงแล้ว

Diagram showing a model containing four tables: Date, Flight, Departure Airport, and Arrival Airport.

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

การออกแบบแบบจําลองที่ได้รับการปรับปรุงรองรับการสร้างการออกแบบรายงานต่อไปนี้

Diagram showing a report page has two slicers and a table visual. The slicers are Month and Departure Airport.

ตัวกรองหน้ารายงานโดยเมลเบิร์นเป็นสนามบินขาออกและกลุ่มวิชวลตารางโดยสนามบินขาเข้า

หมายเหตุ

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

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

วิธีการ Refactoring

นี่คือวิธีการปรับโครงสร้างแบบจําลองจากตารางชนิดมิติการเล่นตามบทบาทเดี่ยวให้เป็นการออกแบบที่มีหนึ่งตารางต่อบทบาท

  1. ลบความสัมพันธ์ที่ไม่ได้ใช้งาน

  2. พิจารณาเปลี่ยนชื่อตารางชนิดมิติการเล่นบทบาทเพื่ออธิบายบทบาทได้ดียิ่งขึ้น ในตัวอย่าง ตารางสนามบิน จะเกี่ยวข้องกับ คอลัมน์ ArrivalAirport ของ ตารางเที่ยวบิน ดังนั้นจึงถูกเปลี่ยนชื่อเป็น สนามบินขาเข้า

  3. สร้างสําเนาของตารางการเล่นบทบาทให้มีชื่อที่แสดงถึงบทบาท ถ้าเป็นตารางนําเข้า เราขอแนะนําให้กําหนดตารางที่มีการคํานวณ ถ้าเป็นตาราง DirectQuery คุณสามารถทําซ้ําคิวรี Power Query ได้

    ในตัวอย่าง ตารางสนามบิน ขาออกถูกสร้างขึ้นโดยใช้ข้อกําหนดตารางจากการคํานวณต่อไปนี้

    Departure Airport = 'Arrival Airport'
    
  4. สร้างความสัมพันธ์ที่ใช้งานอยู่เพื่อเชื่อมโยงตารางใหม่

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

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

ความสัมพันธ์ที่ไม่ได้ใช้งาน

ในบางสถานการณ์ ความสัมพันธ์ที่ไม่ได้ใช้งานสามารถตอบสนองความต้องการการรายงานพิเศษได้

ตอนนี้เรามาพิจารณาข้อกําหนดของแบบจําลองและการรายงานที่แตกต่างกัน:

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

นี่คือไดอะแกรมแบบจําลองบางส่วนของสองตาราง

Diagram showing a model containing two tables: Sales and Date. The Sales table includes six measures.

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

หน่วยวัดทั้งหก— ยกเว้นหนึ่งรายการจะต้องถูกกรองโดยคอลัมน์ OrderDate หน่วยวัดคําสั่งซื้อที่จัดส่งแล้ว อย่างไรก็ตามต้องกรองตามคอลัมน์ ShipDate

นี่คือคําสั่งซื้อของตัววัด เพียงแค่นับแถวของ ตารางยอดขาย ภายในบริบทตัวกรอง ตัวกรองใดๆ ที่นําไปใช้กับตารางวันที่จะเผยแพร่ไปยังคอลัมน์ OrderDate

Orders = COUNTROWS(Sales)

นี่คือคําสั่งซื้อที่จัดส่งแล้วของตัววัด ซึ่งใช้ ฟังก์ชัน USERELATIONSHIP ของ DAX ซึ่งจะเปิดใช้งานการเผยแพร่ตัวกรองสําหรับความสัมพันธ์เฉพาะในระหว่างการประเมินนิพจน์เท่านั้น ในตัวอย่างนี้ ความสัมพันธ์กับ คอลัมน์ ShipDate ถูกใช้

Orders Shipped =
CALCULATE(
    COUNTROWS(Sales)
    ,USERELATIONSHIP('Date'[Date], Sales[ShipDate])
)

การออกแบบแบบจําลองนี้รองรับการสร้างการออกแบบรายงานต่อไปนี้

Diagram showing a report page with one slicer and a table visual. The slicer is Quarter, and the table visual lists monthly sales statistics.

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

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

หมายเหตุ

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

การแนะนำ

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

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

  • ไม่มีข้อกําหนดสําหรับวิชวลรายงานเพื่อกรองตามบทบาทที่แตกต่างกันในเวลาเดียวกัน
  • คุณใช้ฟังก์ชัน DAX USERELATIONSHIP เพื่อเปิดใช้งานความสัมพันธ์เฉพาะสําหรับการคํานวณแบบจําลองที่เกี่ยวข้อง

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