ปรับ Power Query ให้เหมาะสมเมื่อขยายคอลัมน์ตาราง

ความเรียบง่ายและใช้งานง่ายที่ช่วยให้ผู้ใช้ Power BI สามารถรวบรวมข้อมูลและสร้างรายงานที่น่าสนใจและมีประสิทธิภาพได้อย่างรวดเร็ว เพื่อการตัดสินใจทางธุรกิจอัจฉริยะยังช่วยให้ผู้ใช้สามารถสร้างคิวรีที่มีประสิทธิภาพไม่ดีได้อย่างง่ายดาย ซึ่งมักจะเกิดขึ้นเมื่อมีสองตารางที่เกี่ยวข้องกันในลักษณะที่ Foreign Key สัมพันธ์กับSQLตารางSharePointตาราง (จากระเบียน ปัญหานี้ไม่ใช่ปัญหาเฉพาะของ SQL หรือ SharePoint และเกิดขึ้นในสถานการณ์การคัดแยกข้อมูลหลังบ้านหลายๆ สถานการณ์ โดยเฉพาะอย่างยิ่งที่ Schema เป็นของไหลและสามารถปรับแต่งได้) ไม่มีอะไรผิดพลาดโดยธรรมชาติด้วยการจัดเก็บข้อมูลในตารางแยกต่างหาก ที่ใช้คีย์ทั่วไปร่วมกัน อันที่จริงแล้วนี่คือชุดพื้นฐานของการออกแบบฐานข้อมูลและการปรับ — มาตรฐาน แต่วิธีการนี้บ่งบอกถึงวิธีที่ดีกว่าในการขยายความสัมพันธ์

พิจารณาตัวอย่างต่อไปนี้ของรายการSharePointของลูกค้า

รายการSharePointลูกค้าหลัก

และรายการสถานที่ตั้งต่อไปนี้ที่อ้างถึง

รายการลูกค้าSharePointรอง

เมื่อเชื่อมต่อกับรายการครั้งแรก สถานที่จะแสดงเป็นระเบียน

ระเบียนที่ตั้งหลัก

ข้อมูลระดับบนสุดนี้รวบรวมผ่านการเรียกใช้ HTTP เดียวไปยัง SharePoint API (ละเว้นการเรียกใช้เมตาดาต้า) ซึ่งคุณสามารถดูได้ในการดีบักบักเว็บใด ๆ

เรียกใช้ HTTP เดียวในการดีบักเว็บ

เมื่อคุณขยายระเบียน คุณจะเห็นเขตข้อมูลที่เข้าร่วมจากตารางรอง

เขตข้อมูลที่รวมเข้าด้วยกันจากตารางรอง

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

การเรียกบุคคลไปยังตารางที่สอง

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

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

ก่อนอื่น เริ่มต้นด้วยตารางต้นฉบับ โดยระบุคอลัมน์ที่คุณต้องการขยาย และตรวจสอบให้แน่ใจว่าคุณมี ID ของรายการเพื่อให้คุณสามารถจับคู่ได้ โดยทั่วไปแล้ว Foreign Key จะมีชื่อคล้ายกับชื่อที่แสดงของคอลัมน์ที่มี Id ต่อท้าย ในตัวอย่างนี้ คือ LocationId

ชื่อคีย์ต่างชาติ

ขั้นที่สอง โหลดตารางรอง ตรวจสอบให้แน่ใจว่าได้รวม Id ซึ่งเป็น Foreign Key คลิกขวาบนแผง คิวรี เพื่อสร้างคิวรีใหม่

โหลดตารางรองด้วยรหัส foreign key

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

จับคู่คอลัมน์ในตัวอย่าง

ในตัวอย่างนี้ คุณจะเห็นว่า LocationId ในรายการหลักตรงกับ Id ในรายการรอง UI เปลี่ยนชื่อสิ่งนี้เป็น Location.Id ตั้งชื่อคอลัมน์เฉพาะ ตอนนี้เรามาใช้ข้อมูลนี้เพื่อผสานตารางกัน

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

ใช้ผสานคิวรีเป็นคิวรีใหม่เพื่อรวมคิวรี

เลือกแต่ละตารางจากรายการแบบเลื่อนลงเพื่อดูตัวอย่างของคิวรี

แสดงตัวอย่างคิวรีที่ผสาน

เมื่อคุณเลือกทั้งสองตารางแล้ว ให้เลือกคอลัมน์ที่รวมตารางเชิงตรรกะ (ในตัวอย่างนี้ คือ LocationId จากตารางหลักและ Id จากตารางรอง) กล่องโต้ตอบจะสอนคุณว่าแถวกี่แถวที่ตรงกันโดยใช้คีย์ Foreign นั้น คุณอาจต้องการใช้ชนิดการรวมเริ่มต้น (ภายนอกด้านซ้าย) กับข้อมูลชนิดนี้

ผสานชนิดการรวมภายนอกด้านซ้าย

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

ผลลัพธ์การรวมภายนอกด้านซ้าย

การรีเฟรชข้อมูลนี้จะส่งผลให้มีการเรียกแค่สองSharePoint — รายการต่อรายการหลักเท่านั้น และอีกรายการหนึ่งคือรายการที่สอง การรวมจะปฏิบัติการในหน่วยความจํา ซึ่งช่วยลดจํานวนการโทรSharePointมาก

วิธีการนี้สามารถใช้กับสองตารางใด ๆ ใน PowerQuery ที่มี Foreign Key ที่ตรงกัน

หมายเหตุ

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