คําแนะนําความสัมพันธ์แบบหนึ่งต่อหนึ่ง
บทความนี้มุ่งเป้าหมายไปยังคุณในฐานะผู้สร้างแบบจําลองข้อมูลที่ทํางานกับ Power BI Desktop ซึ่งจะให้คําแนะนําเกี่ยวกับการทํางานกับความสัมพันธ์ของแบบจําลองหนึ่งต่อหนึ่ง สามารถสร้างความสัมพันธ์แบบหนึ่งต่อหนึ่งได้เมื่อทั้งสองตารางมีคอลัมน์ของค่าทั่วไปและไม่ซ้ํากัน
หมายเหตุ
บทนําสู่ความสัมพันธ์ของแบบจําลองนั้นไม่ครอบคลุมในบทความนี้ ถ้าคุณไม่คุ้นเคยกับความสัมพันธ์ คุณสมบัติหรือวิธีการกําหนดค่าทั้งหมด เราขอแนะนําให้คุณอ่านบทความ ความสัมพันธ์แบบจําลอง ใน Power BI Desktop ก่อน
นอกจากนี้ยังเป็นสิ่งสําคัญที่คุณต้องทําความเข้าใจเกี่ยวกับการออกแบบแบบจําลองข้อมูลรูปดาว สําหรับข้อมูลเพิ่มเติม โปรดดูทําความเข้าใจ Schema รูปดาวและความสําคัญของ Power BI
มีสองสถานการณ์ที่เกี่ยวข้องกับความสัมพันธ์แบบหนึ่งต่อหนึ่ง:
ข้อมูลแถวที่ขยายข้ามตาราง: เอนทิตีธุรกิจเดี่ยวหรือหัวเรื่องถูกโหลดเป็นตารางแบบจําลองสองตาราง (หรือมากกว่า) ซึ่งอาจเนื่องมาจากข้อมูลเป็นที่มาจากร้านค้าข้อมูลที่แตกต่างกัน สถานการณ์นี้อาจเป็นเรื่องปกติสําหรับตารางชนิดมิติ ตัวอย่างเช่น รายละเอียดผลิตภัณฑ์หลักจะถูกจัดเก็บไว้ในระบบการขายการดําเนินงาน และรายละเอียดผลิตภัณฑ์เสริมจะถูกจัดเก็บไว้ในแหล่งข้อมูลอื่น
อย่างไรก็ตาม คุณจะต้องเชื่อมโยงตารางชนิดข้อเท็จจริงสองตารางกับความสัมพันธ์แบบหนึ่งต่อหนึ่ง เนื่องจากตารางชนิดข้อเท็จจริงทั้งสองตารางจะต้องมีมิติและส่วนประกอบเดียวกัน นอกจากนี้ ตารางชนิดข้อเท็จจริงแต่ละตารางจะต้องมีคอลัมน์ที่ไม่ซ้ํากันเพื่อให้สามารถสร้างความสัมพันธ์แบบจําลองได้
มิติที่ลดลง
เมื่อคอลัมน์จากตารางชนิดข้อเท็จจริงถูกใช้สําหรับการกรองหรือการจัดกลุ่ม คุณสามารถทําให้พร้อมใช้งานได้ในตารางแยกต่างหาก ด้วยวิธีนี้ คุณจะแยกคอลัมน์ที่ใช้สําหรับการกรองหรือการจัดกลุ่มจากคอลัมน์เหล่านั้นที่ใช้เพื่อสรุปแถวข้อเท็จจริงได้ การแยกนี้สามารถ:
- ลดพื้นที่เก็บข้อมูล
- ลดความซับซ้อนของการคํานวณแบบจําลอง
- มีส่วนร่วมในการปรับปรุงประสิทธิภาพการทํางานของคิวรี
- ส่งมอบประสบการณ์การใช้งานบานหน้าต่างข้อมูลที่ใช้งานได้ง่ายยิ่งขึ้นให้กับผู้เขียนรายงานของคุณ
พิจารณาตารางยอดขายต้นทางที่จัดเก็บรายละเอียดคําสั่งซื้อในสองคอลัมน์
คอลัมน์ OrderNumber จะจัดเก็บหมายเลขลําดับ และ คอลัมน์ OrderLineNumber จะจัดเก็บลําดับของบรรทัดภายในลําดับ
ในไดอะแกรมแบบจําลองต่อไปนี้ โปรดสังเกตว่าคอลัมน์หมายเลขคําสั่งซื้อและหมายเลขบรรทัดคําสั่งซื้อไม่ได้โหลดไปยังตารางยอดขาย แต่ค่าเหล่านั้นถูกใช้เพื่อสร้างคีย์ตัวแทนคอลัมน์ที่ชื่อว่า SalesOrderLineID (ค่าคีย์ถูกคํานวณโดยการคูณหมายเลขคําสั่งซื้อด้วย 1,000 จากนั้นเพิ่มหมายเลขบรรทัดคําสั่งซื้อ)
ตารางคําสั่งซื้อให้ประสบการณ์การใช้งานที่หลากหลายสําหรับผู้เขียนรายงานที่มีสามคอลัมน์: คําสั่งซื้อ บรรทัดคําสั่งซื้อ และหมายเลขบรรทัด นอกจากนี้ยังมีลําดับชั้นอีกด้วย ทรัพยากรตารางเหล่านี้สนับสนุนการออกแบบรายงานที่ต้องการกรอง จัดกลุ่ม หรือเจาะลึกรายละเอียดคําสั่งซื้อและบรรทัดคําสั่งซื้อ
เนื่องจากตารางคําสั่งซื้อได้รับมาจากข้อมูลยอดขาย ดังนั้นควรมีจํานวนแถวเท่ากันในแต่ละตาราง นอกจากนี้ ควรมีค่าที่ตรงกันในแต่ละคอลัมน์ SalesOrderLineID
ข้อมูลแถวที่ขยายข้ามตาราง
พิจารณาตัวอย่างที่เกี่ยวข้องกับตารางมิติข้อมูลที่เกี่ยวข้องแบบหนึ่งต่อหนึ่งสองตาราง: ผลิตภัณฑ์ และ ประเภทผลิตภัณฑ์ แต่ละตารางแสดงข้อมูลที่นําเข้าและมี คอลัมน์ SKU (หน่วยเก็บรักษาสต็อค) ที่มีค่าที่ไม่ซ้ํากัน
นี่คือไดอะแกรมแบบจําลองบางส่วนของสองตาราง
ตารางแรกที่มีชื่อว่าผลิตภัณฑ์ ซึ่งมีสามคอลัมน์ดังต่อไปนี้: สี ผลิตภัณฑ์ และ SKU ตารางที่สองที่มีชื่อว่าประเภทผลิตภัณฑ์ ซึ่งมีสองคอลัมน์ดังต่อไปนี้: ประเภท และ SKU ความสัมพันธ์แบบหนึ่งต่อหนึ่งเกี่ยวข้องกับคอลัมน์ SKU สองคอลัมน์ ตัวกรองความสัมพันธ์ทั้งสองทิศทาง ซึ่งเป็นกรณีสําหรับความสัมพันธ์แบบหนึ่งต่อหนึ่งเสมอ
เพื่อช่วยอธิบายวิธีการทํางานของการเผยแพร่ตัวกรองความสัมพันธ์ ไดอะแกรมแบบจําลองได้รับการแก้ไขเพื่อแสดงแถวของตาราง ตัวอย่างทั้งหมดในบทความนี้เป็นไปตามข้อมูลนี้
หมายเหตุ
ไม่สามารถแสดงแถวตารางในไดอะแกรมแบบจําลอง Power BI Desktop ได้ การดําเนินการนี้จะทําในบทความนี้เพื่อสนับสนุนการสนทนาด้วยตัวอย่างที่ชัดเจน
รายละเอียดแถวสําหรับสองตารางอธิบายไว้ในหัวข้อย่อยต่อไปนี้:
- ตาราง ผลิตภัณฑ์ มีสามแถว:
- SKU CL-01 ผลิตภัณฑ์ เสื้อยืด สี เขียว
- SKU CL-02 ผลิตภัณฑ์ กางเกงยีนส์ สีน้ําเงิน
- SKU AC-01 ผลิตภัณฑ์ หมวก สีน้ําเงิน
- ตาราง หมวดหมู่ ผลิตภัณฑ์มีสองแถว:
- SKU CL-01 ประเภท เสื้อผ้า
- SKU AC-01 ประเภท อุปกรณ์
โปรดสังเกตว่า ตารางประเภท ผลิตภัณฑ์ไม่มีแถวสําหรับผลิตภัณฑ์ SKU CL-02 เราจะกล่าวถึงผลกระทบของแถวที่หายไปนี้ในบทความนี้ในภายหลัง
ในบานหน้าต่าง ข้อมูล ผู้เขียนรายงานจะพบเขตข้อมูลที่เกี่ยวข้องกับผลิตภัณฑ์ในสองตาราง: ผลิตภัณฑ์ และ ประเภทผลิตภัณฑ์
มาดูกันว่าจะเกิดอะไรขึ้นเมื่อมีการเพิ่มเขตข้อมูลจากทั้งสองตารางลงในภาพตาราง ในตัวอย่างนี้ คอลัมน์ SKU มาจากตารางผลิตภัณฑ์
โปรดสังเกตว่าค่า ประเภท สําหรับผลิตภัณฑ์ SKU CL-02 ว่างเปล่า เนื่องจากไม่มีแถวในตาราง หมวดหมู่ ผลิตภัณฑ์สําหรับผลิตภัณฑ์นี้
คำแนะนำ
เมื่อเป็นไปได้ เราขอแนะนําให้คุณหลีกเลี่ยงการสร้างความสัมพันธ์แบบจําลองหนึ่งต่อหนึ่งเมื่อข้อมูลแถวขยายข้ามตารางแบบจําลอง เนื่องจากการออกแบบนี้สามารถ:
- มีส่วนร่วมกับ กองข้อความของบานหน้าต่างข้อมูล แสดงรายการตารางมากเกินความจําเป็น
- ทําให้เป็นเรื่องยากสําหรับผู้เขียนรายงานในการค้นหาเขตข้อมูลที่เกี่ยวข้องเนื่องจากมีการกระจายข้ามหลายตาราง
- จํากัดความสามารถในการสร้างลําดับชั้น เนื่องจากระดับของพวกเขาจะต้องยึดตามคอลัมน์จาก ตารางเดียวกัน
- สร้างผลลัพธ์ที่ไม่คาดคิดเมื่อไม่มีการจับคู่แถวระหว่างตารางทั้งหมด
คําแนะนําเฉพาะที่แตกต่างกันโดยขึ้นอยู่กับว่าความสัมพันธ์แบบหนึ่งต่อหนึ่งคือ แบบภายในกลุ่ม แหล่งข้อมูลหรือ แบบข้ามกลุ่มแหล่งข้อมูล สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการประเมินผลความสัมพันธ์ โปรดดู ความสัมพันธ์แบบจําลองใน Power BI Desktop (การประเมินผลความสัมพันธ์)
ความสัมพันธ์แบบหนึ่งต่อหนึ่งแบบภายในกลุ่มแหล่งข้อมูล
เมื่อมีความสัมพันธ์แบบภายในกลุ่มแหล่งข้อมูลแบบหนึ่งต่อหนึ่งที่มีอยู่ระหว่างตาราง เราขอแนะนําให้รวมข้อมูลลงในตารางแบบจําลองเดียว ซึ่งทําได้โดยการผสานคิวรี Power Query
ขั้นตอนต่อไปนี้แสดงวิธีการรวมและแบบจําลองข้อมูลที่เกี่ยวข้องแบบหนึ่งต่อหนึ่ง:
ผสานคิวรี: เมื่อ รวมคิวรีสองคิวรีเข้าด้วยกัน ให้พิจารณาความสมบูรณ์ของข้อมูลในแต่ละคิวรี ถ้าคิวรีหนึ่งมีชุดของแถวทั้งหมด (เช่นรายการหลัก) ให้ผสานคิวรีอื่นเข้าด้วยกัน กําหนดค่าการแปลงแบบผสานเพื่อใช้ การรวมภายนอกด้านซ้าย ซึ่งเป็นชนิดการเข้าร่วมเริ่มต้น ชนิดการรวมนี้ช่วยให้แน่ใจว่าคุณจะเก็บแถวทั้งหมดของคิวรีแรกและเสริมให้กับแถวใดก็ตามที่ตรงกันของคิวรีที่สอง ขยายคอลัมน์ที่จําเป็นทั้งหมดของคิวรีที่สองลงในคิวรีแรก
ปิดใช้งานการโหลดคิวรี: ตรวจสอบให้แน่ใจว่า ได้ปิดใช้งานการโหลด คิวรีที่สอง ด้วยวิธีนี้ ระบบจะไม่โหลดผลลัพธ์เป็นตารางแบบจําลอง การกําหนดค่านี้จะช่วยลดขนาดการจัดเก็บแบบจําลองข้อมูลและช่วยในการลดกองข้อความบานหน้าต่างข้อมูล
ในตัวอย่างของเรา ตอนนี้ผู้เขียนรายงานค้นหาตารางเดียวที่ชื่อว่า ผลิตภัณฑ์ ในบานหน้าต่าง ข้อมูล ซึ่งประกอบด้วยเขตข้อมูลที่เกี่ยวข้องกับผลิตภัณฑ์ทั้งหมด
แทนที่ค่าที่หายไป: ถ้าคิวรีที่สองมีแถวที่ไม่ตรงกัน ค่า null จะปรากฏในคอลัมน์ที่นํามาใช้จากคิวรีนั้น เมื่อเหมาะสม ให้พิจารณาแทนที่ค่า null ด้วยค่าโทเค็น การแทนที่ค่าที่หายไปเป็นสิ่งสําคัญโดยเฉพาะอย่างยิ่งเมื่อผู้สร้างรายงานกรองหรือจัดกลุ่มตามค่าของคอลัมน์เนื่องจากช่องว่างอาจปรากฏในภาพรายงาน
ในวิชวลตารางต่อไปนี้ โปรดสังเกตว่าประเภทสําหรับผลิตภัณฑ์ SKU CL-02 อ่าน [ไม่ได้กําหนด] ในคิวรี ประเภท null ถูกแทนที่ด้วยค่าข้อความโทเค็นนี้
สร้างลําดับชั้น: ถ้ามีความสัมพันธ์อยู่ระหว่าง คอลัมน์ ของตารางที่รวมอยู่ในขณะนี้ ให้พิจารณาการสร้างลําดับชั้น ด้วยวิธีนี้ ผู้เขียนรายงานจะระบุโอกาสสําหรับการเจาะลึกภาพรายงานได้อย่างรวดเร็ว
ในตัวอย่างของเรา ผู้เขียนรายงานสามารถใช้ลําดับชั้นที่มีสองระดับได้แล้วในขณะนี้: ประเภทและผลิตภัณฑ์
ถ้าคุณต้องการให้ตารางที่แยกต่างหากช่วยจัดระเบียบเขตข้อมูลของคุณ เรายังคงแนะนําให้ทําการรวมบัญชีลงในตารางเดียว คุณยังคงสามารถจัดระเบียบเขตข้อมูลของคุณได้ แต่โดยใช้ การแสดงโฟลเดอร์ แทน
ในตัวอย่างของเรา ผู้เขียนรายงานสามารถค้นหา เขตข้อมูลประเภท ภายใน โฟลเดอร์การแสดงผลการตลาด ได้
คุณยังคงตัดสินใจที่จะกําหนดความสัมพันธ์แบบภายในกลุ่มแหล่งข้อมูลชนิดหนึ่งต่อหนึ่งในโมเดลของคุณ เมื่อเป็นไปได้ ให้ตรวจสอบให้แน่ใจว่ามีแถวที่ตรงกันในตารางที่เกี่ยวข้อง ในฐานะที่เป็นความสัมพันธ์แบบภายในกลุ่มแหล่งข้อมูลชนิดหนึ่งต่อหนึ่ง ความสัมพันธ์จะถูกประเมินเป็น ความสัมพันธ์แบบปกติ โดยปัญหาการทํางานของข้อมูลที่สามารถทําให้พื้นผิวในภาพรายงานของคุณเป็นช่องว่างได้ (คุณสามารถดูตัวอย่างของการจัดกลุ่ม BLANK ในตารางแรกที่แสดงในบทความนี้ได้)
ความสัมพันธ์แบบหนึ่งต่อหนึ่งแบบข้ามกลุ่มแหล่งข้อมูล
เมื่อมีความสัมพันธ์แบบข้ามกลุ่มแหล่งข้อมูลแบบหนึ่งต่อหนึ่งที่มีอยู่ระหว่างตาราง จะไม่มีการออกแบบแบบจําลองสํารองไว้ เว้นแต่ว่าคุณจะรวบรวมข้อมูลในแหล่งข้อมูลของคุณไว้ล่วงหน้า Power BI จะประเมินความสัมพันธ์ของแบบจําลองหนึ่งต่อหนึ่งเป็นความสัมพันธ์แบบจํากัด ดังนั้นการดูแลรักษาเพื่อให้แน่ใจว่ามีแถวที่ตรงกันในตารางที่เกี่ยวข้องเนื่องจากแถวที่ไม่ตรงกันจะถูกตัดออกจากผลลัพธ์คิวรี
มาดูกันว่าจะเกิดอะไรขึ้นเมื่อมีการเพิ่มเขตข้อมูลจากทั้งสองตารางลงในภาพตาราง และความสัมพันธ์แบบจํากัดอยู่ระหว่างตาราง
ตารางแสดงสองแถวเท่านั้น ผลิตภัณฑ์ SKU CL-02 หายไปเนื่องจากไม่มีแถว ที่ตรงกันในตารางประเภท ผลิตภัณฑ์
เนื้อหาที่เกี่ยวข้อง
สําหรับข้อมูลเพิ่มเติมที่เกี่ยวข้องกับบทความนี้ โปรดดูทรัพยากรต่อไปนี้: