ภาพรวมของการประเมินผลคิวรีและการพับคิวรีใน Power Query
บทความนี้ให้ภาพรวมพื้นฐานของวิธีการประมวลผลคิวรี M และเปลี่ยนเป็นคําขอแหล่งข้อมูล
สคริปต์ Power Query M
คิวรีใด ๆ ไม่ว่าจะสร้างโดย Power Query คุณเป็นผู้เขียนด้วยตนเองในตัวแก้ไขขั้นสูง หรือป้อนโดยใช้เอกสารเปล่า ซึ่งประกอบด้วยฟังก์ชันและไวยากรณ์จาก ภาษาสูตร Power Query M คิวรีนี้ได้รับการแปลและประเมินโดยกลไกจัดการ Power Query เพื่อแสดงผลลัพธ์ สคริปต์ M ทําหน้าที่เป็นชุดคําแนะนําที่จําเป็นในการประเมินคิวรี
เคล็ดลับ
คุณสามารถนึกภาพสคริปต์ M เป็นสูตรที่อธิบายวิธีการเตรียมข้อมูลของคุณ
วิธีทั่วไปในการสร้างสคริปต์ M คือการใช้ตัวแก้ไข Power Query ตัวอย่างเช่น เมื่อคุณเชื่อมต่อกับแหล่งข้อมูล เช่น ฐานข้อมูล SQL Server โปรดสังเกตทางด้านขวาของหน้าจอที่มีส่วนที่เรียกว่า ขั้นตอนที่ใช้ ส่วนนี้จะแสดงขั้นตอนหรือการแปลงทั้งหมดที่ใช้ในคิวรีของคุณ ในกรณีนี้ ตัวแก้ไข Power Query ทําหน้าที่เป็นอินเทอร์เฟซเพื่อช่วยให้คุณสร้างสคริปต์ M ที่เหมาะสมสําหรับการแปลงที่คุณอยู่หลังจากนั้น และทําให้แน่ใจว่าโค้ดที่คุณใช้ถูกต้อง
หมายเหตุ
สคริปต์ M ถูกใช้ในตัวแก้ไข Power Query เพื่อ:
- แสดงคิวรีเป็นชุดของขั้นตอนและอนุญาตให้สร้างหรือปรับเปลี่ยนขั้นตอนใหม่
- แสดงมุมมองไดอะแกรม
รูปภาพก่อนหน้านี้เน้นส่วนขั้นตอนที่นําไปใช้ ซึ่งประกอบด้วยขั้นตอนต่อไปนี้:
- แหล่งข้อมูล: ทําการเชื่อมต่อไปยังแหล่งข้อมูล ในกรณีนี้ เป็นการเชื่อมต่อกับฐานข้อมูล SQL Server
- การนําทาง: นําทางไปยังตารางที่ระบุในฐานข้อมูล
- ลบคอลัมน์อื่นออก: เลือกคอลัมน์จากตารางที่จะเก็บไว้
- เรียงลําดับแถว: เรียงลําดับตารางโดยใช้คอลัมน์อย่างน้อยหนึ่งคอลัมน์
- เก็บแถวบนสุดไว้: กรองตารางเพื่อเก็บเฉพาะบางแถวจากด้านบนของตาราง
ชุดของชื่อขั้นตอนที่เรียกง่ายนี้เป็นวิธีที่เป็นมิตรในการดูสคริปต์ M ที่ Power Query สร้างขึ้นสําหรับคุณ มีหลายวิธีในการดูสคริปต์ M แบบเต็ม ใน Power Query คุณสามารถเลือกเครื่องมือแก้ไขขั้นสูงในแท็บ มุมมอง คุณยังสามารถเลือกเครื่องมือแก้ไขขั้นสูงจากกลุ่ม คิวรี ในแท็บ หน้าแรก ใน Power Query บางเวอร์ชัน คุณยังสามารถเปลี่ยนมุมมองของแถบสูตรเพื่อแสดงสคริปต์ของคิวรี ได้โดยไปที่แท็บ มุมมอง และจากกลุ่ม เค้าโครง เลือก สคริปต์มุมมองสคริปต์ของ>คิวรี
ชื่อส่วนใหญ่ที่พบ ในบานหน้าต่างขั้นตอนที่ นําไปใช้จะถูกใช้เช่นเดียวกับในสคริปต์ M ขั้นตอนของคิวรีจะได้รับการตั้งชื่อโดยใช้สิ่งที่เรียกว่า ตัว ระบุ ในภาษา M บางครั้งอักขระเพิ่มเติมจะถูกตัดคํารอบชื่อขั้นตอนใน M แต่อักขระเหล่านี้จะไม่แสดงในขั้นตอนที่นําไปใช้ ตัวอย่างคือ #"Kept top rows"
ซึ่งจัดประเภทเป็น ตัวระบุ ที่อ้างอิงเนื่องจากอักขระพิเศษเหล่านี้ สามารถใช้ตัวระบุที่มีการอ้างอิงเพื่อให้สามารถใช้ลําดับของอักขระ Unicode ศูนย์หรืออื่นๆ เป็นตัวระบุได้ รวมถึงคําสําคัญ Whitespace ข้อคิดเห็น ตัวดําเนินการ และตัวคั่นเครื่องหมายวรรคตอน หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ ตัว ระบุในภาษา M ให้ไปที่ โครงสร้างเลกซิคัล
การเปลี่ยนแปลงใด ๆ ที่คุณทํากับคิวรีของคุณผ่านตัวแก้ไข Power Query จะอัปเดตสคริปต์ M สําหรับคิวรีของคุณโดยอัตโนมัติ ตัวอย่างเช่น การใช้รูปภาพก่อนหน้าเป็นจุดเริ่มต้น หากคุณเปลี่ยนชื่อ ขั้นตอน แถว บนสุดที่ Kept เป็น 20 แถวยอดนิยม การเปลี่ยนแปลงนี้จะได้รับการอัปเดตโดยอัตโนมัติในมุมมองสคริปต์
ในขณะที่เราขอแนะนําให้คุณใช้ตัวแก้ไข Power Query เพื่อสร้างสคริปต์ M ทั้งหมดหรือส่วนใหญ่สําหรับคุณ คุณสามารถเพิ่มหรือปรับเปลี่ยนส่วนของสคริปต์ M ของคุณด้วยตนเองได้ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับภาษา M ให้ไปที่ เว็บไซต์เอกสารอย่างเป็นทางการสําหรับภาษา M
หมายเหตุ
สคริปต์ M ยังเรียกว่ารหัส M เป็นคําที่ใช้สําหรับโค้ดใด ๆ ที่ใช้ภาษา Power Query M ในบริบทของบทความนี้ สคริปต์ M ยังอ้างอิงถึงรหัสที่พบภายในคิวรี Power Query และสามารถเข้าถึงได้ผ่านหน้าต่างตัวแก้ไขขั้นสูงหรือผ่านมุมมองสคริปต์ในแถบสูตร
การประเมินคิวรีใน Power Query
แผนภาพต่อไปนี้จะสํารวจกระบวนการที่เกิดขึ้นเมื่อมีการประเมินคิวรีใน Power Query
- สคริปต์ M ที่พบภายในตัวแก้ไขขั้นสูงจะถูกส่งไปยังเครื่องมือจัดการ Power Query นอกจากนี้ยังมีข้อมูลสําคัญอื่น ๆ เช่น ข้อมูลประจําตัวและระดับความเป็นส่วนตัวของแหล่งข้อมูล
- Power Query จะกําหนดว่าข้อมูลใดที่ต้องแยกจากแหล่งข้อมูลและส่งคําขอไปยังแหล่งข้อมูล
- แหล่งข้อมูลตอบสนองต่อคําขอจาก Power Query โดยการถ่ายโอนข้อมูลที่ร้องขอไปยัง Power Query
- Power Query ได้รับข้อมูลขาเข้าจากแหล่งข้อมูล และทําการแปลงใดก็ตามโดยใช้กลไกจัดการ Power Query หากจําเป็น
- ผลลัพธ์ที่ได้มาจากจุดก่อนหน้าจะถูกโหลดไปยังปลายทาง
หมายเหตุ
ในขณะที่ตัวอย่างนี้แสดงคิวรีที่มีฐานข้อมูล SQL เป็นแหล่งข้อมูล แนวคิดจะนําไปใช้กับคิวรีที่มีหรือไม่มีแหล่งข้อมูล
เมื่อ Power Query อ่านสคริปต์ M ของคุณ จะเรียกใช้สคริปต์ผ่านกระบวนการปรับให้เหมาะสมเพื่อประเมินคิวรีของคุณอย่างมีประสิทธิภาพมากขึ้น ในกระบวนการนี้ จะกําหนดว่าขั้นตอนใด (แปลง) จากคิวรีของคุณสามารถยกเลิกการโหลดไปยังแหล่งข้อมูลของคุณได้ นอกจากนี้ยังกําหนดว่าขั้นตอนอื่นใดที่ต้องประเมินโดยใช้กลไกจัดการ Power Query กระบวนการปรับให้เหมาะสมนี้เรียกว่า Query Folding ซึ่ง Power Query จะพยายามส่งการดําเนินการไปยังแหล่งข้อมูลมากที่สุดเท่าที่เป็นไปได้เพื่อปรับการดําเนินการคิวรีของคุณให้เหมาะสม
สำคัญ
กฎทั้งหมดจาก ภาษาสูตร Power Query M (หรือที่เรียกว่าภาษา M) จะตามมา โดยเฉพาะอย่างยิ่ง การประเมิน ขี้เกียจมีบทบาทสําคัญในระหว่างกระบวนการปรับให้เหมาะสม ในกระบวนการนี้ Power Query เข้าใจสิ่งที่ต้องประเมินการแปลงเฉพาะจากคิวรีของคุณ Power Query ยังเข้าใจสิ่งที่การแปลงอื่น ๆ ไม่จําเป็นต้องได้รับการประเมิน เนื่องจากไม่จําเป็นในผลลัพธ์ของคิวรีของคุณ
นอกจากนี้ เมื่อมีหลายแหล่งข้อมูลเกี่ยวข้อง ระดับความเป็นส่วนตัวของข้อมูลของแต่ละแหล่งข้อมูลจะถูกนํามาพิจารณาเมื่อประเมินคิวรี ข้อมูลเพิ่มเติม: เบื้องหลังฉากของไฟร์วอลล์ความเป็นส่วนตัวของข้อมูล
แผนภาพต่อไปนี้แสดงให้เห็นถึงขั้นตอนที่เกิดขึ้นในกระบวนการปรับให้เหมาะสมนี้
- สคริปต์ M ที่พบภายในตัวแก้ไขขั้นสูงจะถูกส่งไปยังเครื่องมือจัดการ Power Query นอกจากนี้ยังมีข้อมูลสําคัญอื่น ๆ เช่น ข้อมูลประจําตัวและระดับความเป็นส่วนตัวของแหล่งข้อมูล
- กลไกการพับคิวรีจะส่งคําขอเมตาดาต้าไปยังแหล่งข้อมูลเพื่อกําหนดความสามารถของแหล่งข้อมูล สคีมาของตาราง ความสัมพันธ์ระหว่างตารางที่แตกต่างกันในแหล่งข้อมูล และอื่น ๆ
- กลไกการพับคิวรีจะกําหนดข้อมูลที่จะแยกจากแหล่งข้อมูลและชุดของการแปลงที่จําเป็นที่เกิดขึ้นภายในโปรแกรม Power Query โดยยึดตามเมตาดาต้าที่ได้รับ ซึ่งจะส่งคําแนะนําไปยังคอมโพเนนต์อื่นสองส่วนซึ่งดูแลการดึงข้อมูลจากแหล่งข้อมูล และแปลงข้อมูลขาเข้าในกลไกจัดการ Power Query หากจําเป็น
- เมื่อคอมโพเนนต์ภายในของ Power Query ได้รับคําแนะนําแล้ว Power Query จะส่งคําขอไปยังแหล่งข้อมูลโดยใช้คิวรีแหล่งข้อมูล
- แหล่งข้อมูลได้รับคําขอจาก Power Query และถ่ายโอนข้อมูลไปยังกลไกจัดการ Power Query
- เมื่อข้อมูลอยู่ภายใน Power Query กลไกการแปลงข้อมูลภายใน Power Query (หรือที่เรียกว่ากลไกจัดการผสมเข้าด้วยกัน) จะทําการแปลงข้อมูลที่ไม่สามารถพับกลับหรือออฟโหลดไปยังแหล่งข้อมูลได้
- ผลลัพธ์ที่ได้มาจากจุดก่อนหน้าจะถูกโหลดไปยังปลายทาง
หมายเหตุ
Power Query จะกําหนดว่าสตรีมหรือบัฟเฟอร์ข้อมูลขาเข้าหรือไม่ โดยขึ้นอยู่กับการแปลงและแหล่งข้อมูลที่ใช้ในสคริปต์ M
ภาพรวมการพับคิวรี
เป้าหมายของ Query Folding คือการถ่ายโหลด หรือส่งการประเมินคิวรีไปยังแหล่งข้อมูลจํานวนมากที่สามารถคํานวณการแปลงคิวรีของคุณได้
กลไกการพับคิวรีช่วยให้เป้าหมายนี้ทําได้โดยการแปลสคริปต์ M ของคุณเป็นภาษาที่สามารถแปลและดําเนินการโดยแหล่งข้อมูลของคุณ จากนั้นจะส่งการประเมินไปยังแหล่งข้อมูลของคุณและส่งผลลัพธ์ของการประเมินนั้นไปยัง Power Query
การดําเนินการนี้มักจะมีการดําเนินการคิวรีที่รวดเร็วกว่าการดึงข้อมูลที่จําเป็นทั้งหมดจากแหล่งข้อมูลของคุณ และเรียกใช้การแปลงทั้งหมดที่จําเป็นในกลไกจัดการ Power Query
เมื่อคุณใช้ประสบการณ์การรับข้อมูล Power Query จะแนะนําคุณเกี่ยวกับกระบวนการที่ช่วยให้คุณเชื่อมต่อกับแหล่งข้อมูลของคุณในท้ายที่สุด เมื่อทําเช่นนั้น Power Query จะใช้ชุดฟังก์ชันในภาษา M ที่จัดประเภทเป็น ฟังก์ชันการเข้าถึงข้อมูล ฟังก์ชันเฉพาะเหล่านี้ใช้กลไกและโพรโทคอลเพื่อเชื่อมต่อกับแหล่งข้อมูลของคุณโดยใช้ภาษาที่แหล่งข้อมูลของคุณสามารถเข้าใจได้
อย่างไรก็ตาม ขั้นตอนที่ตามมาในคิวรีของคุณคือขั้นตอนหรือการแปลงข้อมูลที่กลไก Query Folding พยายามปรับให้เหมาะสม จากนั้นจะตรวจสอบว่าสามารถถ่ายข้อมูลไปยังแหล่งข้อมูลของคุณแทนการประมวลผลโดยใช้กลไกจัดการ Power Query ได้หรือไม่
สำคัญ
ฟังก์ชันแหล่งข้อมูลทั้งหมด ซึ่งมักจะแสดงเป็น ขั้นตอนแหล่งข้อมูล ของคิวรี คิวรีข้อมูลที่แหล่งข้อมูลในภาษาแม่ กลไกการพับคิวรีจะถูกนําไปใช้กับการแปลงทั้งหมดที่นําไปใช้กับคิวรีของคุณหลังจากฟังก์ชันแหล่งข้อมูลของคุณเพื่อให้สามารถแปลและรวมเป็นคิวรีแหล่งข้อมูลเดียวหรือเป็นการแปลงจํานวนมากที่สามารถถ่ายข้อมูลไปยังแหล่งข้อมูลได้
ทั้งนี้ขึ้นอยู่กับวิธีการจัดโครงสร้างของคิวรี อาจมีผลลัพธ์ที่เป็นไปได้สามประการสําหรับกลไก Query Folding:
- การพับคิวรีแบบเต็ม: เมื่อการแปลงคิวรีทั้งหมดของคุณถูกผลักกลับไปยังแหล่งข้อมูล และการประมวลผลที่น้อยที่สุดเกิดขึ้นที่กลไกจัดการ Power Query
- การพับคิวรีบางส่วน: เมื่อมีการแปลงเพียงเล็กน้อยในคิวรีของคุณ และไม่สามารถผลักกลับไปยังแหล่งข้อมูลได้ ในกรณีนี้ เฉพาะชุดย่อยของการแปลงของคุณเท่านั้นที่แหล่งข้อมูลของคุณ และส่วนที่เหลือของการแปลงคิวรีของคุณจะเกิดขึ้นในกลไกจัดการ Power Query
- ไม่มี Query Folding: เมื่อคิวรีมีการแปลงที่ไม่สามารถแปลเป็นภาษาคิวรีดั้งเดิมของแหล่งข้อมูลของคุณได้ เนื่องจากไม่สนับสนุนการแปลงหรือตัวเชื่อมต่อไม่สนับสนุน Query Folding สําหรับกรณีนี้ Power Query จะได้รับข้อมูลดิบจากแหล่งข้อมูลของคุณ และใช้เครื่องมือ Power Query เพื่อให้ได้ผลลัพธ์ที่คุณต้องการโดยการประมวลผลการแปลงที่จําเป็นในระดับกลไกจัดการ Power Query
หมายเหตุ
กลไกการพับคิวรีจะพร้อมใช้งานในตัวเชื่อมต่อสําหรับแหล่งข้อมูลที่มีโครงสร้างเช่น แต่ไม่จํากัดเพียง Microsoft SQL Server และ OData Feed ในระหว่างระยะการปรับให้เหมาะสม กลไกอาจจัดลําดับขั้นตอนในคิวรีใหม่ในบางครั้ง
การใช้ประโยชน์จากแหล่งข้อมูลที่มีทรัพยากรการประมวลผลมากขึ้นและมีความสามารถในการพับคิวรีสามารถเร่งเวลาการโหลดคิวรีของคุณได้เมื่อการประมวลผลเกิดขึ้นที่แหล่งข้อมูลและไม่ใช่ที่กลไกจัดการ Power Query
เนื้อหาที่เกี่ยวข้อง
สําหรับตัวอย่างโดยละเอียดของผลลัพธ์ที่เป็นไปได้สามอย่างของกลไกการพับคิวรี ให้ไปที่ ตัวอย่างการพับคิวรี
สําหรับข้อมูลเกี่ยวกับตัวบ่งชี้การพับคิวรีที่พบในบานหน้าต่าง ขั้นตอนที่ นําไปใช้ ไปที่ ตัวบ่งชี้การพับคิวรี