แชร์ผ่าน


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

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

โน้ต

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

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

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

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

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

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

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

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

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

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

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

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

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

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

แผนภาพที่แสดงหน้ารายงานมีสองตัวแบ่งส่วนข้อมูลและหนึ่งวิชวลตาราง ตัวแบ่งส่วนข้อมูลเป็นเดือนและสนามบินขาออก

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

โน้ต

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

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

วิธีการ Refactoring

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

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

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

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

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

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

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

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

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

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

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

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

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

แผนภาพที่แสดงแบบจําลองที่มีสองตาราง: ยอดขายและวันที่ ตารางยอดขายมีหน่วยวัดหกตัว

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

หน่วยวัดทั้งหก—ยกเว้นหนึ่งรายการ—ต้องกรองตามคอลัมน์ OrderDate อย่างไรก็ตาม หน่วยวัดที่ Orders Shipped จะต้องกรองตามคอลัมน์ ShipDate

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

Orders = COUNTROWS(Sales)

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

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

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

แผนภาพที่แสดงหน้ารายงานที่มีหนึ่งตัวแบ่งส่วนข้อมูลและหนึ่งวิชวลตาราง ตัวแบ่งส่วนข้อมูลคือ Quarter และตารางแสดงรายการสถิติยอดขายรายเดือน

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

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

โน้ต

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

คำ แนะ นำ

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

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

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

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