แชร์ผ่าน


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

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

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

รายชื่อลูกค้า SharePoint หลัก

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

รายชื่อลูกค้ารอง SharePoint

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

เรกคอร์ดตําแหน่งที่ตั้งหลัก

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

การเรียก HTTP เดียวในดีบักเกอร์เว็บ

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

ฟิลด์ที่รวมจากตารางรอง

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

การเรียกแต่ละรายการไปยังตารางที่สอง

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

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

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

ชื่อคีย์ต่างประเทศ

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

โหลดตารางรองด้วยคีย์ต่างประเทศ Id

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

การจับคู่คอลัมน์ในการแสดงตัวอย่าง

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

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

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

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

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

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

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

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

ผลการรวมด้านนอกด้านซ้าย

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

วิธีการนี้สามารถใช้กับสองตารางใดก็ได้ใน PowerQuery ที่มีคีย์นอกที่ตรงกัน

Note

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