แชร์ผ่าน


คําแนะนําความสัมพันธ์แบบหนึ่งต่อหนึ่ง

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

หมายเหตุ

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

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

มีสองสถานการณ์ที่เกี่ยวข้องกับความสัมพันธ์แบบหนึ่งต่อหนึ่ง:

  • มิติลดรูป : คุณสามารถหา มิติลดรูป จากตารางข้อเท็จจริง ได้

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

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

มิติที่ลดลง

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

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

พิจารณาตารางต้นทางที่ชื่อ Sales ที่จัดเก็บรายละเอียดการอ้างอิงบรรทัดใบสั่งขายในสองคอลัมน์

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

คอลัมน์ OrderNumber จะจัดเก็บหมายเลขใบสั่ง และคอลัมน์ OrderLineNumber จะจัดเก็บลําดับของบรรทัดภายในลําดับ

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

แผนภาพที่แสดงสองตาราง: ยอดขายและใบสั่งขาย ความสัมพันธ์แบบหนึ่งต่อหนึ่งเกี่ยวข้องกับคอลัมน์ ID หมายเลขบรรทัดคําสั่งซื้อ

ตารางมิติ Sales Order มอบประสบการณ์ที่หลากหลายสําหรับผู้เขียนรายงานที่มีสองคอลัมน์: Sales Order และ Sales Order Line คอลัมน์เฉพาะเหล่านี้สนับสนุนการออกแบบรายงานที่จําเป็นต้องกรอง จัดกลุ่ม หรือเจาะลึกรายละเอียดคําสั่งซื้อและบรรทัดคําสั่งซื้อ

เนื่องจากตาราง Sales Order ได้รับมาจากข้อมูลยอดขาย จึงควรมีจํานวนแถวเท่ากันในแต่ละตาราง นอกจากนี้ ควรมีค่าที่ตรงกันระหว่างแต่ละคอลัมน์ OrderLineNumberID

ข้อมูลแถวที่ขยายข้ามตาราง

พิจารณาตัวอย่างที่เกี่ยวข้องกับตารางมิติข้อมูลที่เกี่ยวข้องแบบหนึ่งต่อหนึ่งสองตาราง: Product และ Product Category แต่ละตารางแสดงข้อมูลที่นําเข้าและมีคอลัมน์ SKU (หน่วยเก็บสต็อก) ที่ประกอบด้วยค่าที่ไม่ซ้ํากัน

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

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

ตารางแรกที่มีชื่อว่า Productซึ่งมีสามคอลัมน์ ColorProductและ SKU ตารางที่สองชื่อว่า Product Categoryซึ่งมีสองคอลัมน์ Category และ SKU ความสัมพันธ์แบบหนึ่งต่อหนึ่งเกี่ยวข้องกับสองคอลัมน์ SKU ตัวกรองความสัมพันธ์ทั้งสองทิศทาง ซึ่งเป็นกรณีสําหรับความสัมพันธ์แบบหนึ่งต่อหนึ่งเสมอ

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

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

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

  • ตาราง Product มีสามแถว:
    • CL-01เสื้อยืด Green
    • CL-02กางเกงยีนส์ Blue
    • AC-01หมวก สีน้ําเงิน
  • ตาราง Product Category มีสองแถว:
    • CL-01 เสื้อผ้า
    • อุปกรณ์เสริม AC-01 AC-01

โปรดสังเกตว่าตาราง Product Category ไม่มีแถวสําหรับผลิตภัณฑ์ SKU CL-02 เราจะกล่าวถึงผลกระทบของแถวที่หายไปนี้ในบทความนี้ในภายหลัง

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

แผนภาพที่แสดงบานหน้าต่างข้อมูลที่มีสองตารางและวิชวลตารางที่มีสี่คอลัมน์ ค่าประเภทสําหรับผลิตภัณฑ์ SKU CL-02 ว่างเปล่า

โปรดสังเกตว่าค่า Category สําหรับผลิตภัณฑ์ SKU CL-02 เป็น BLANK นั่นเป็นเพราะไม่มีแถวที่สอดคล้องกันในตาราง Product Category สําหรับผลิตภัณฑ์นี้

คำแนะนำ

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

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

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

ความสัมพันธ์แบบหนึ่งต่อหนึ่งแบบภายในกลุ่มแหล่งข้อมูล

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

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

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

    แผนภาพที่แสดงข้อมูลรวมเป็นตารางมิติผลิตภัณฑ์เดียว

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

    ในตัวอย่างของเรา ตอนนี้ผู้เขียนรายงานค้นหาตารางเดียวที่ชื่อว่า Product ในบานหน้าต่าง Data ซึ่งประกอบด้วยเขตข้อมูลที่เกี่ยวข้องกับผลิตภัณฑ์ทั้งหมด

  3. แทนที่ค่าที่หายไป: ถ้าคิวรีที่สองมีแถวที่ไม่ตรงกัน ค่า null จะปรากฏในคอลัมน์ที่นํามาใช้จากคิวรีนั้น เมื่อเหมาะสม ให้พิจารณาแทนที่ค่า null ด้วยค่าโทเค็น การแทนที่ค่าที่หายไปเป็นสิ่งสําคัญโดยเฉพาะอย่างยิ่งเมื่อผู้สร้างรายงานกรองหรือจัดกลุ่มตามค่าของคอลัมน์เนื่องจากช่องว่างอาจปรากฏในภาพรายงาน

    ในรูปต่อไปนี้ โปรดสังเกตว่า ประเภทสําหรับผลิตภัณฑ์ SKU CL-02 ตอนนี้อ่าน [ไม่ได้กําหนด] ในคิวรี ประเภท null ถูกแทนที่ด้วยค่าข้อความโทเค็นนี้

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

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

    ในตัวอย่างของเรา ตอนนี้ผู้เขียนรายงานสามารถใช้ลําดับชั้นที่มีสองระดับได้แล้วในขณะนี้: Category และ Product

    ไดอะแกรมที่แสดงบานหน้าต่างข้อมูล ตาราง ผลิตภัณฑ์ มีลําดับชั้น ผลิตภัณฑ์

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

ในตัวอย่างของเรา ผู้เขียนรายงานสามารถค้นหาเขตข้อมูล Category ภายในโฟลเดอร์การแสดงผล Marketing ได้

แผนภาพที่แสดงบานหน้าต่างข้อมูลซึ่งเขตข้อมูลประเภทอยู่ภายในโฟลเดอร์การแสดงผลที่ชื่อว่าการตลาด

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

ความสัมพันธ์แบบหนึ่งต่อหนึ่งแบบข้ามกลุ่มแหล่งข้อมูล

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

แผนภาพที่แสดงความสัมพันธ์แบบหนึ่งต่อหนึ่งแบบข้ามกลุ่มแหล่งข้อมูล ซึ่งเป็นความสัมพันธ์แบบจํากัด

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

แผนภาพที่แสดงวิชวลตารางสองภาพ ซึ่งอธิบายไว้ในย่อหน้าต่อไปนี้

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

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