ปรับ Power Query ให้เหมาะสมเมื่อขยายคอลัมน์ตาราง
ความเรียบง่ายและใช้งานง่ายที่ช่วยให้ผู้ใช้ Power BI รวบรวมข้อมูลได้อย่างรวดเร็วและสร้างรายงานที่น่าสนใจและมีประสิทธิภาพเพื่อทําการตัดสินใจทางธุรกิจอัจฉริยะยังช่วยให้ผู้ใช้สามารถสร้างคิวรีที่มีประสิทธิภาพต่ําได้อย่างง่ายดาย ซึ่งมักจะเกิดขึ้นเมื่อมีสองตารางที่เกี่ยวข้องในทางที่คีย์นอกเกี่ยวข้องกับตาราง SQL หรือรายการ SharePoint (สําหรับระเบียน ปัญหานี้ไม่ได้เฉพาะเจาะจงกับ SQL หรือ SharePoint และเกิดขึ้นในสถานการณ์การแยกข้อมูลหลังบ้านจํานวนมาก โดยเฉพาะในกรณีที่ schema มีความลื่นไหลและสามารถกําหนดเองได้) นอกจากนี้ยังมีสิ่งใดผิดปกติโดยแท้จริงในการจัดเก็บข้อมูลในตารางที่แยกต่างหากซึ่งใช้คีย์ทั่วไปร่วมกัน ในความเป็นจริงนี่คือผู้เช่าพื้นฐานของการออกแบบฐานข้อมูลและการทําให้เป็นมาตรฐาน แต่นั่นหมายความว่าเป็นวิธีที่ดีกว่าในการขยายความสัมพันธ์
พิจารณาตัวอย่างต่อไปนี้ของรายการลูกค้า SharePoint
และรายการตําแหน่งที่ตั้งต่อไปนี้ที่อ้างอิงถึง
เมื่อเชื่อมต่อกับรายการครั้งแรก ตําแหน่งที่ตั้งจะแสดงเป็นระเบียน
ข้อมูลระดับบนสุดนี้จะรวบรวมผ่านการเรียกใช้ HTTP เดียวไปยัง SharePoint API (ละเว้นการเรียกใช้เมตาดาต้า) ซึ่งคุณสามารถดูได้ในตัวแก้ไขจุดบกพร่องของเว็บใด ๆ
เมื่อคุณขยายเรกคอร์ด คุณจะเห็นเขตข้อมูลที่รวมจากตารางรอง
เมื่อขยายแถวที่เกี่ยวข้องจากตารางหนึ่งไปยังอีกตารางหนึ่ง ลักษณะการทํางานเริ่มต้นของ 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 และการจัดหมวดหมู่ยังสามารถเข้าถึงได้ในรูปแบบตาราง และสามารถเข้าร่วมได้ในลักษณะที่อธิบายไว้ข้างต้น หากผู้ใช้มีสิทธิ์เพียงพอในการเข้าถึงรายการเหล่านี้