คําแนะนําความสัมพันธ์แบบหนึ่งต่อหนึ่ง
บทความนี้มุ่งเป้าหมายไปยังคุณในฐานะผู้สร้างแบบจําลองข้อมูลที่ทํางานกับ Power BI Desktop ซึ่งจะให้คําแนะนําเกี่ยวกับการทํางานกับความสัมพันธ์ของแบบจําลองหนึ่งต่อหนึ่ง สามารถสร้างความสัมพันธ์แบบหนึ่งต่อหนึ่งได้เมื่อทั้งสองตารางมีคอลัมน์ของค่าทั่วไปและไม่ซ้ํากัน
หมายเหตุ
บทนําสู่ความสัมพันธ์ของแบบจําลองนั้นไม่ครอบคลุมในบทความนี้ ถ้าคุณไม่คุ้นเคยกับความสัมพันธ์ คุณสมบัติหรือวิธีการกําหนดค่าทั้งหมด เราขอแนะนําให้คุณอ่านบทความ ความสัมพันธ์แบบจําลอง ใน Power BI Desktop ก่อน
นอกจากนี้ยังเป็นสิ่งสําคัญที่คุณต้องทําความเข้าใจเกี่ยวกับการออกแบบแบบจําลองข้อมูลรูปดาว สําหรับข้อมูลเพิ่มเติม โปรดดูทําความเข้าใจ Schema รูปดาวและความสําคัญของ Power BI
มีสองสถานการณ์ที่เกี่ยวข้องกับความสัมพันธ์แบบหนึ่งต่อหนึ่ง:
มิติลดรูป : คุณสามารถหา มิติลดรูปจากตารางข้อเท็จจริง ได้ ข้อมูลแถว ขยายข้ามตาราง: เอนทิตีธุรกิจเดี่ยวหรือหัวเรื่องถูกโหลดเป็นตารางแบบจําลองสองตาราง (หรือมากกว่า) ซึ่งอาจเนื่องมาจากข้อมูลเป็นที่มาจากร้านค้าข้อมูลที่แตกต่างกัน สถานการณ์นี้อาจเป็นเรื่องปกติสําหรับตารางมิติ ตัวอย่างเช่น รายละเอียดผลิตภัณฑ์หลักจะถูกจัดเก็บไว้ในระบบการขายการดําเนินงาน และรายละเอียดผลิตภัณฑ์เสริมจะถูกจัดเก็บไว้ในแหล่งข้อมูลอื่น
อย่างไรก็ตาม คุณจะต้องเชื่อมโยงตารางข้อเท็จจริงสองตารางกับความสัมพันธ์แบบหนึ่งต่อหนึ่ง นั่นเป็นเพราะตารางข้อเท็จจริงทั้งสองตารางจะต้องมีมิติและส่วนประกอบเดียวกัน นอกจากนี้ ตารางข้อเท็จจริงแต่ละตารางจะต้องมีคอลัมน์ที่ไม่ซ้ํากันเพื่อให้สามารถสร้างความสัมพันธ์แบบจําลองได้
มิติที่ลดลง
เมื่อมีการใช้คอลัมน์จากตารางข้อเท็จจริงสําหรับการกรองหรือการจัดกลุ่ม คุณสามารถทําให้คอลัมน์พร้อมใช้งานได้ในตารางแยกต่างหาก ด้วยวิธีนี้ คุณจะแยกคอลัมน์ที่ใช้สําหรับการกรองหรือการจัดกลุ่มจากคอลัมน์เหล่านั้นที่ใช้เพื่อสรุปแถวข้อเท็จจริงได้ การแยกนี้สามารถ:
- ลดพื้นที่เก็บข้อมูล
- ลดความซับซ้อนของการคํานวณแบบจําลอง
- มีส่วนร่วมในการปรับปรุงประสิทธิภาพการทํางานของคิวรี
- มอบประสบการณ์การใช้งานบานหน้าต่าง
ข้อมูลที่ใช้งานได้ง่ายยิ่งขึ้นให้กับผู้เขียนรายงานของคุณ
พิจารณาตารางต้นทางที่ชื่อ Sales
ที่จัดเก็บรายละเอียดการอ้างอิงบรรทัดใบสั่งขายในสองคอลัมน์
คอลัมน์ OrderNumber
จะจัดเก็บหมายเลขใบสั่ง และคอลัมน์ OrderLineNumber
จะจัดเก็บลําดับของบรรทัดภายในลําดับ
ในรูปต่อไปนี้ โปรดสังเกตว่าคอลัมน์หมายเลขลําดับและหมายเลขบรรทัดคําสั่งซื้อยังไม่ได้โหลดไปยังตาราง Sales
แต่ค่าเหล่านั้นถูกใช้เพื่อสร้างคีย์ตัวแทน คอลัมน์ที่ชื่อว่า OrderLineNumberID
(ค่าคีย์ถูกคํานวณโดยการคูณหมายเลขคําสั่งซื้อด้วย 1,000 จากนั้นเพิ่มหมายเลขบรรทัดคําสั่งซื้อ)
ตารางมิติ Sales Order
มอบประสบการณ์ที่หลากหลายสําหรับผู้เขียนรายงานที่มีสองคอลัมน์: Sales Order
และ Sales Order Line
คอลัมน์เฉพาะเหล่านี้สนับสนุนการออกแบบรายงานที่จําเป็นต้องกรอง จัดกลุ่ม หรือเจาะลึกรายละเอียดคําสั่งซื้อและบรรทัดคําสั่งซื้อ
เนื่องจากตาราง Sales Order
ได้รับมาจากข้อมูลยอดขาย จึงควรมีจํานวนแถวเท่ากันในแต่ละตาราง นอกจากนี้ ควรมีค่าที่ตรงกันระหว่างแต่ละคอลัมน์ OrderLineNumberID
ข้อมูลแถวที่ขยายข้ามตาราง
พิจารณาตัวอย่างที่เกี่ยวข้องกับตารางมิติข้อมูลที่เกี่ยวข้องแบบหนึ่งต่อหนึ่งสองตาราง: Product
และ Product Category
แต่ละตารางแสดงข้อมูลที่นําเข้าและมีคอลัมน์ SKU
(หน่วยเก็บสต็อก) ที่ประกอบด้วยค่าที่ไม่ซ้ํากัน
นี่คือไดอะแกรมแบบจําลองบางส่วนของสองตาราง
ตารางแรกที่มีชื่อว่า Product
ซึ่งมีสามคอลัมน์ Color
Product
และ 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
โปรดสังเกตว่าค่า Category
สําหรับผลิตภัณฑ์ SKU CL-02 เป็น BLANK นั่นเป็นเพราะไม่มีแถวที่สอดคล้องกันในตาราง Product Category
สําหรับผลิตภัณฑ์นี้
คำแนะนำ
เมื่อเป็นไปได้ เราขอแนะนําให้คุณหลีกเลี่ยงการสร้างความสัมพันธ์แบบจําลองหนึ่งต่อหนึ่งเมื่อข้อมูลแถวขยายข้ามตารางแบบจําลอง นั่นเป็นเพราะการออกแบบนี้สามารถ:
- มีส่วนร่วมกับ กองข้อความของบานหน้าต่างข้อมูล แสดงรายการตารางมากเกินความจําเป็น
- ทําให้เป็นเรื่องยากสําหรับผู้เขียนรายงานในการค้นหาเขตข้อมูลที่เกี่ยวข้องเนื่องจากมีการกระจายข้ามหลายตาราง
- จํากัดความสามารถในการสร้างลําดับชั้น เนื่องจากระดับของพวกเขาจะต้องยึดตามคอลัมน์จากตารางเดียวกัน
- สร้างผลลัพธ์ที่ไม่คาดคิดเมื่อไม่มีการจับคู่แถวระหว่างตารางทั้งหมด
คําแนะนําเฉพาะที่แตกต่างกันโดยขึ้นอยู่กับว่าความสัมพันธ์แบบหนึ่งต่อหนึ่งคือ แบบภายในกลุ่ม แหล่งข้อมูลหรือ แบบข้ามกลุ่มแหล่งข้อมูล สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการประเมินความสัมพันธ์ โปรดดู ความสัมพันธ์แบบจําลองใน Power BI Desktop
ความสัมพันธ์แบบหนึ่งต่อหนึ่งแบบภายในกลุ่มแหล่งข้อมูล
เมื่อมีความสัมพันธ์แบบภายในกลุ่มแหล่งข้อมูลแบบหนึ่งต่อหนึ่งที่มีอยู่ระหว่างตาราง เราขอแนะนําให้รวมข้อมูลลงในตารางแบบจําลองเดียว คุณสามารถทําได้โดยการผสานคิวรี Power Query
ขั้นตอนต่อไปนี้แสดงวิธีการรวมและจําลองข้อมูลที่เกี่ยวข้องแบบหนึ่งต่อหนึ่ง
ผสานคิวรี: เมื่อ รวมคิวรีสองคิวรีเข้าด้วยกัน ให้พิจารณาความสมบูรณ์ของข้อมูลในแต่ละคิวรี ถ้าคิวรีหนึ่งมีชุดของแถวทั้งหมด (เช่นรายการหลัก) ให้ผสานคิวรีอื่นเข้าด้วยกัน ตั้งค่าการแปลงแบบผสานเพื่อใช้การรวมภายนอกด้านซ้าย ซึ่งเป็นชนิดการรวมเริ่มต้น ชนิดการรวมนี้ช่วยให้แน่ใจว่าคุณจะเก็บแถวทั้งหมดของคิวรีแรกและเสริมให้กับแถวใดก็ตามที่ตรงกันของคิวรีที่สอง ขยายคอลัมน์ที่จําเป็นทั้งหมดของคิวรีที่สองลงในคิวรีแรก
ปิดใช้งานการโหลดคิวรี: ตรวจสอบให้แน่ใจว่า ได้ปิดใช้งานการโหลด คิวรีที่สอง ด้วยวิธีนี้ ระบบจะไม่โหลดผลลัพธ์เป็นตารางแบบจําลอง การกําหนดค่านี้จะช่วยลดขนาดการจัดเก็บแบบจําลองข้อมูลและช่วยในการลดกองข้อความบานหน้าต่างข้อมูล
ในตัวอย่างของเรา ตอนนี้ผู้เขียนรายงานค้นหาตารางเดียวที่ชื่อว่า
Product
ในบานหน้าต่าง Data ซึ่งประกอบด้วยเขตข้อมูลที่เกี่ยวข้องกับผลิตภัณฑ์ทั้งหมดแทนที่ค่าที่หายไป: ถ้าคิวรีที่สองมีแถวที่ไม่ตรงกัน ค่า null จะปรากฏในคอลัมน์ที่นํามาใช้จากคิวรีนั้น เมื่อเหมาะสม ให้พิจารณาแทนที่ค่า null ด้วยค่าโทเค็น การแทนที่ค่าที่หายไปเป็นสิ่งสําคัญโดยเฉพาะอย่างยิ่งเมื่อผู้สร้างรายงานกรองหรือจัดกลุ่มตามค่าของคอลัมน์เนื่องจากช่องว่างอาจปรากฏในภาพรายงาน
ในรูปต่อไปนี้ โปรดสังเกตว่า ประเภทสําหรับผลิตภัณฑ์ SKU CL-02 ตอนนี้อ่าน [ไม่ได้กําหนด] ในคิวรี ประเภท null ถูกแทนที่ด้วยค่าข้อความโทเค็นนี้
สร้างลําดับชั้น: ถ้ามีความสัมพันธ์อยู่ระหว่าง คอลัมน์ ของตารางที่รวมอยู่ในขณะนี้ ให้พิจารณาการสร้างลําดับชั้น ด้วยวิธีนี้ ผู้เขียนรายงานจะระบุโอกาสสําหรับการเจาะลึกภาพรายงานได้อย่างรวดเร็ว
ในตัวอย่างของเรา ตอนนี้ผู้เขียนรายงานสามารถใช้ลําดับชั้นที่มีสองระดับได้แล้วในขณะนี้:
Category
และProduct
ถ้าคุณต้องการให้ตารางที่แยกต่างหากช่วยจัดระเบียบเขตข้อมูลของคุณ เรายังคงแนะนําให้ทําการรวมบัญชีลงในตารางเดียว คุณยังคงสามารถจัดระเบียบเขตข้อมูลของคุณได้ แต่โดยใช้ การแสดงโฟลเดอร์ แทน
ในตัวอย่างของเรา ผู้เขียนรายงานสามารถค้นหาเขตข้อมูล Category
ภายในโฟลเดอร์การแสดงผล Marketing
ได้
คุณยังคงตัดสินใจที่จะกําหนดความสัมพันธ์แบบภายในกลุ่มแหล่งข้อมูลชนิดหนึ่งต่อหนึ่งในโมเดลของคุณ เมื่อเป็นไปได้ ให้ตรวจสอบให้แน่ใจว่ามีแถวที่ตรงกันในตารางที่เกี่ยวข้อง ในฐานะที่เป็นความสัมพันธ์แบบภายในกลุ่มแหล่งข้อมูลชนิดหนึ่งต่อหนึ่ง ความสัมพันธ์จะถูกประเมินเป็น ความสัมพันธ์แบบปกติ โดยปัญหาการทํางานของข้อมูลที่สามารถทําให้พื้นผิวในภาพรายงานของคุณเป็นช่องว่างได้ (คุณสามารถดูตัวอย่างของการจัดกลุ่ม BLANK ในตารางแรกที่แสดงในบทความนี้ได้)
ความสัมพันธ์แบบหนึ่งต่อหนึ่งแบบข้ามกลุ่มแหล่งข้อมูล
เมื่อมี แบบหนึ่งต่อหนึ่ง ความสัมพันธ์ระหว่างตาราง จะไม่มีการออกแบบแบบจําลองสํารองเว้นแต่ว่าคุณจะรวบรวมข้อมูลในแหล่งข้อมูลของคุณไว้ล่วงหน้า Power BI จะประเมินความสัมพันธ์ของแบบจําลองหนึ่งต่อหนึ่งเป็นความสัมพันธ์แบบจํากัด ดังนั้นการดูแลรักษาเพื่อให้แน่ใจว่ามีแถวที่ตรงกันในตารางที่เกี่ยวข้องเนื่องจากแถวที่ไม่ตรงกันจะถูกตัดออกจากผลลัพธ์คิวรี
มาดูกันว่าจะเกิดอะไรขึ้นเมื่อมีการเพิ่มเขตข้อมูลจากทั้งสองตารางลงในภาพตาราง และความสัมพันธ์แบบจํากัดอยู่ระหว่างตาราง
วิชวลตารางแรกซึ่งใช้ความสัมพันธ์แบบข้ามกลุ่มแหล่งข้อมูล จะแสดงสองแถวเท่านั้น ผลิตภัณฑ์ SKU CL-02 หายไปเนื่องจากไม่มีแถวที่ตรงกันในตาราง Product Category
วิชวลตารางที่สองซึ่งยึดตามตารางรวมเดียวในแบบจําลองจะแสดงสามแถว
เนื้อหาที่เกี่ยวข้อง
สําหรับข้อมูลเพิ่มเติมที่เกี่ยวข้องกับบทความนี้ โปรดดูทรัพยากรต่อไปนี้: