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

ความเรียบง่ายและใช้งานง่ายที่ช่วยให้ผู้ใช้ Power BI รวบรวมข้อมูลได้อย่างรวดเร็วและสร้างรายงานที่น่าสนใจและมีประสิทธิภาพเพื่อทําการตัดสินใจทางธุรกิจอัจฉริยะยังช่วยให้ผู้ใช้สามารถสร้างคิวรีที่มีประสิทธิภาพต่ําได้อย่างง่ายดาย ซึ่งมักจะเกิดขึ้นเมื่อมีสองตารางที่เกี่ยวข้องในทางที่คีย์นอกเกี่ยวข้องกับตาราง 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 คลิกขวาบนแผง คิวรี เพื่อสร้างคิวรีใหม่

โหลดตารางรองด้วยคีย์นอกรหัส

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

คอลัมน์ที่ตรงกันในตัวอย่าง

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

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

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

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

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

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

ผสานประเภทการรวมภายนอกด้านซ้าย

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

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

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

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

หมายเหตุ

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