ตัวอย่างการพับคิวรี
บทความนี้มีตัวอย่างสถานการณ์สําหรับผลลัพธ์ที่เป็นไปได้สามอย่างสําหรับการพับคิวรี นอกจากนี้ยังมีคําแนะนําบางอย่างเกี่ยวกับวิธีการใช้ประโยชน์สูงสุดจากกลไกการพับคิวรี และผลที่เกิดขึ้นกับคิวรีของคุณ
สถานการณ์สมมติ
ลองนึกถึงสถานการณ์ที่ใช้ฐานข้อมูล Wide World Importers สําหรับฐานข้อมูล Azure Synapse Analytics SQL คุณได้รับมอบหมายให้สร้างคิวรีในPower Queryที่เชื่อมต่อกับfact_Saleตาราง และดึงข้อมูลยอดขาย 10 รายการล่าสุดที่มีเฉพาะเขตข้อมูลต่อไปนี้:
- คีย์การขาย
- คีย์ลูกค้า
- คีย์วันที่ในใบแจ้งหนี้
- คำอธิบาย
- ปริมาณ
หมายเหตุ
สําหรับวัตถุประสงค์ในการสาธิต บทความนี้ใช้ฐานข้อมูลที่แสดงในบทช่วยสอนเกี่ยวกับการโหลดฐานข้อมูล Wide World Importers ลงใน Azure Synapse Analytics ความแตกต่างหลักในบทความนี้คือ fact_Sale ตารางเก็บข้อมูลสําหรับปี 2000 เท่านั้น โดยมีทั้งหมด 3,644,356 แถว
ในขณะที่ผลลัพธ์อาจไม่ตรงกับผลลัพธ์ที่คุณได้รับโดยทําตามบทช่วยสอนจากเอกสาร Azure Synapse Analytics เป้าหมายของบทความนี้คือการแสดงแนวคิดหลักและผลกระทบที่การพับคิวรีสามารถมีได้ในคิวรีของคุณ

บทความนี้แสดงสามวิธีเพื่อให้ได้ผลลัพธ์เดียวกันโดยมีระดับที่แตกต่างกันของการพับคิวรี:
- ไม่มีการพับคิวรี
- การพับคิวรีบางส่วน
- การพับคิวรีแบบเต็มรูปแบบ
ไม่มีตัวอย่างการพับคิวรี
ข้อสำคัญ
คิวรีที่ขึ้นกับแหล่งข้อมูลที่ไม่มีโครงสร้างเท่านั้น หรือที่ไม่มีกลไกการคํานวณ เช่น ไฟล์ CSV หรือ Excel ไม่มีความสามารถในการพับคิวรี ซึ่งหมายความว่าPower Queryประเมินการแปลงข้อมูลที่จําเป็นทั้งหมดโดยใช้กลไกจัดการPower Query
หลังจากเชื่อมต่อกับฐานข้อมูลของคุณและนําทางไปยังfact_Saleตารางแล้ว ให้คุณเลือกการแปลง เก็บแถวล่างสุด ที่พบภายในกลุ่ม ลดแถว ของแท็บ หน้าแรก

หลังจากเลือกการแปลงนี้ แล้ว กล่องโต้ตอบใหม่จะปรากฏขึ้น ในกล่องโต้ตอบใหม่นี้ คุณสามารถป้อนจํานวนแถวที่คุณต้องการเก็บไว้ได้ สําหรับกรณีนี้ ให้ป้อนค่า 10 จากนั้นเลือก ตกลง

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

สุดท้าย ในกล่องโต้ตอบ เลือกคอลัมน์ ให้เลือกSale KeyCustomer KeyInvoice Date Keyคอลัมน์ , Description, และ Quantity จากนั้นเลือก ตกลง

ตัวอย่างโค้ดต่อไปนี้เป็นสคริปต์ M แบบเต็มสําหรับคิวรีที่คุณสร้างขึ้น:
let
Source = Sql.Database(ServerName, DatabaseName),
Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
#"Kept bottom rows" = Table.LastN(Navigation, 10),
#"Choose columns" = Table.SelectColumns(#"Kept bottom rows", {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"})
in
#"Choose columns""
ไม่มีการพับคิวรี: การทําความเข้าใจการประเมินคิวรี
ภายใต้ขั้นตอนที่นําไปใช้ในตัวแก้ไขPower Query คุณจะสังเกตเห็นว่าตัวบ่งชี้การพับคิวรีสําหรับแถวล่างสุดที่ Kept และ เลือก จะถูกทําเครื่องหมายเป็นขั้นตอนที่จะได้รับการประเมินภายนอกแหล่งข้อมูล หรือกล่าวอีกนัยหนึ่งคือ โดยกลไกPower Query

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

แต่ละกล่องในรูปภาพก่อนหน้าจะเรียกว่าโหนด โหนดแสดงการแบ่งย่อยการดําเนินการเพื่อเติมเต็มคิวรีนี้ โหนดที่แสดงถึงแหล่งข้อมูล เช่น SQL Server ในตัวอย่างด้านบนและValue.NativeQueryโหนด แสดงว่าส่วนใดของคิวรีถูกโหลดไปยังแหล่งข้อมูล ส่วนที่เหลือของโหนดในกรณีนี้Table.LastNและTable.SelectColumnsเน้นในสี่เหลี่ยมผืนผ้าในภาพก่อนหน้าจะได้รับการประเมินโดยกลไกจัดการPower Query สองโหนดนี้แสดงการแปลงสองรายการที่คุณเพิ่ม โดยเก็บแถวล่างสุดและเลือกคอลัมน์ ส่วนที่เหลือของโหนดแสดงถึงการดําเนินการที่เกิดขึ้นในระดับแหล่งข้อมูลของคุณ
เมื่อต้องการดูคําขอที่แน่นอนที่ส่งไปยังแหล่งข้อมูลของคุณ เลือก ดูรายละเอียด ใน Value.NativeQuery โหนด

คําขอแหล่งข้อมูลนี้อยู่ในภาษาแม่ของแหล่งข้อมูลของคุณ สําหรับกรณีนี้ ภาษานั้นคือ SQL และคําสั่งนี้แสดงคําขอสําหรับแถวและเขตข้อมูลทั้งหมดจาก fact_Sale ตาราง
การปรึกษากับคําขอแหล่งข้อมูลนี้จะช่วยให้คุณเข้าใจเรื่องราวที่แผนคิวรีพยายามสื่อได้ดียิ่งขึ้น
Sql.Database: โหนดนี้แสดงการเข้าถึงแหล่งข้อมูล เชื่อมต่อไปยังฐานข้อมูลและส่งคําขอเมตาดาต้าเพื่อทําความเข้าใจความสามารถของฐานข้อมูลValue.NativeQuery: แสดงคําขอที่สร้างขึ้นโดยPower Query เพื่อเติมเต็มคิวรี Power Queryส่งคําขอข้อมูลในคําสั่ง SQL ดั้งเดิมไปยังแหล่งข้อมูล ในกรณีนี้ ซึ่งแสดงถึงเรกคอร์ดและเขตข้อมูลทั้งหมด (คอลัมน์) จากfact_Saleตาราง สําหรับสถานการณ์นี้ กรณีนี้ไม่เป็นที่พึงปรารถนา เนื่องจากตารางประกอบด้วยแถวนับล้านแถว และความสนใจจะอยู่ในช่วง 10 วันที่ผ่านมาเท่านั้นTable.LastN: เมื่อPower Queryได้รับระเบียนทั้งหมดจากfact_Saleตาราง แล้ว จะใช้กลไกจัดการPower Queryเพื่อกรองตารางและเก็บเฉพาะ 10 แถวล่าสุดเท่านั้นTable.SelectColumns: Power Queryจะใช้ผลลัพธ์ของTable.LastNโหนดและใช้การแปลงใหม่ที่เรียกว่าTable.SelectColumnsซึ่งเลือกคอลัมน์เฉพาะที่คุณต้องการเก็บไว้จากตาราง
สําหรับการประเมิน คิวรีนี้ต้องดาวน์โหลดแถวและเขตข้อมูลทั้งหมดจาก fact_Sale ตาราง คิวรีนี้ใช้เวลาเฉลี่ย 6 นาทีและ 1 วินาทีในการประมวลผลในอินสแตนซ์มาตรฐานของกระแสข้อมูล Power BI (ซึ่งเป็นบัญชีสําหรับการประเมินและการโหลดข้อมูลไปยังกระแสข้อมูล)
ตัวอย่างการพับคิวรีบางส่วน
หลังจากเชื่อมต่อไปยังฐานข้อมูลและการนําทางไปยัง fact_Sale ตารางแล้ว คุณเริ่มต้นโดยการเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณ เลือกการแปลง เลือกคอลัมน์ ที่พบภายในกลุ่ม จัดการคอลัมน์ จากแท็บ หน้าแรก การแปลงนี้ช่วยให้คุณสามารถเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณและลบส่วนที่เหลือออกได้อย่างชัดเจน

ภายในกล่องโต้ตอบ เลือกคอลัมน์ ให้เลือกSale KeyCustomer KeyInvoice Date Keyคอลัมน์ , , Descriptionและ Quantity จากนั้นเลือก ตกลง

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

ถัดไป เลือกเมนูบริบทตารางและเลือกแปลงเก็บแถวด้านล่าง

ใน เก็บแถวด้านล่าง ให้ใส่ค่า 10 จากนั้นเลือก ตกลง

ตัวอย่างโค้ดต่อไปนี้เป็นสคริปต์ M แบบเต็มสําหรับคิวรีที่คุณสร้างขึ้น:
let
Source = Sql.Database(ServerName, DatabaseName),
Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
#"Choose columns" = Table.SelectColumns(Navigation, {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"}),
#"Sorted rows" = Table.Sort(#"Choose columns", {{"Sale Key", Order.Ascending}}),
#"Kept bottom rows" = Table.LastN(#"Sorted rows", 10)
in
#"Kept bottom rows"
ตัวอย่างการพับคิวรีบางส่วน: การทําความเข้าใจการประเมินคิวรี
ตรวจสอบบานหน้าต่างขั้นตอนที่ใช้ คุณสังเกตเห็นว่าตัวบ่งชี้การพับคิวรีกําลังแสดงว่าการแปลงล่าสุดที่คุณเพิ่ม Kept bottom rowsมีการทําเครื่องหมายเป็นขั้นตอนที่จะได้รับการประเมินภายนอกแหล่งข้อมูล หรือกล่าวอีกนัยหนึ่งคือ โดยกลไกPower Query

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

แต่ละกล่องในรูปภาพก่อนหน้าจะเรียกว่าโหนด โหนดแสดงถึงทุกกระบวนการที่ต้องเกิดขึ้น (จากซ้ายไปขวา) เพื่อให้คิวรีของคุณได้รับการประเมิน โหนดเหล่านี้บางส่วนสามารถประเมินได้ที่แหล่งข้อมูลของคุณในขณะที่แหล่งข้อมูลอื่น เช่น โหนดสําหรับ Table.LastNที่แสดงโดยขั้นตอน แถวด้านล่างที่ Kept จะถูกประเมินโดยใช้กลไกจัดการPower Query
เมื่อต้องการดูคําขอที่แน่นอนที่ส่งไปยังแหล่งข้อมูลของคุณ เลือก ดูรายละเอียด ใน Value.NativeQuery โหนด

คําขอนี้อยู่ในภาษาแม่ของแหล่งข้อมูลของคุณ สําหรับกรณีนี้ ภาษานั้นคือ SQL และคําสั่งนี้แสดงคําขอสําหรับแถวทั้งหมด โดยมีเฉพาะเขตข้อมูลที่ร้องขอจาก fact_Sale ตารางที่เรียงลําดับตาม Sale Key เขตข้อมูล
การปรึกษากับคําขอแหล่งข้อมูลนี้จะช่วยให้คุณเข้าใจเรื่องราวที่แผนการคิวรี่เต็มรูปแบบพยายามสื่อได้ดียิ่งขึ้น ลําดับของโหนดเป็นกระบวนการตามลําดับที่เริ่มต้นโดยการร้องขอข้อมูลจากแหล่งข้อมูลของคุณ:
Sql.Database: เชื่อมต่อกับฐานข้อมูล และส่งคําขอเมตาดาต้าเพื่อทําความเข้าใจความสามารถของฐานข้อมูลValue.NativeQuery: แสดงคําขอที่สร้างขึ้นโดยPower Query เพื่อเติมเต็มคิวรี Power Queryส่งคําขอข้อมูลในคําสั่ง SQL ดั้งเดิมไปยังแหล่งข้อมูล สําหรับกรณีนี้ ซึ่งแสดงถึงระเบียนทั้งหมด โดยมีเพียงเขตข้อมูลที่ร้องขอจากfact_Saleตารางในฐานข้อมูลที่เรียงลําดับจากน้อยไปหามากตามSales Keyเขตข้อมูลนั้นTable.LastN: เมื่อPower Queryได้รับระเบียนทั้งหมดจากfact_Saleตารางแล้ว จะใช้กลไกจัดการPower Queryเพื่อกรองตารางและเก็บเฉพาะ 10 แถวล่าสุดเท่านั้น
สําหรับการประเมิน คิวรีนี้ต้องดาวน์โหลดแถวทั้งหมดและเฉพาะเขตข้อมูลที่จําเป็นจาก fact_Sale ตารางเท่านั้น ใช้เวลาเฉลี่ย 3 นาทีและ 4 วินาทีในการประมวลผลตัวอย่างมาตรฐานของกระแสข้อมูล Power BI (ซึ่งบัญชีสําหรับการประเมินและการโหลดข้อมูลไปยังกระแสข้อมูล)
ตัวอย่างการพับคิวรีแบบเต็ม
หลังจากเชื่อมต่อกับฐานข้อมูลและการนําทางไปยัง fact_Sale ตารางแล้ว ให้เริ่มต้นโดยการเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณ เลือกการแปลง เลือกคอลัมน์ ที่พบภายในกลุ่ม จัดการคอลัมน์ จากแท็บ หน้าแรก การแปลงนี้ช่วยให้คุณสามารถเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณอย่างชัดเจนและลบส่วนที่เหลือออก

ใน เลือกคอลัมน์ เลือกSale KeyCustomer Keyคอลัมน์ , Invoice Date Key, Description, และ Quantity จากนั้นเลือก ตกลง

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

ถัดไป ให้เลือกเมนูบริบทตารางและเลือกคงการแปลงแถวบนสุดไว้

ใน เก็บแถวบนสุด ให้ใส่ค่า 10 จากนั้นเลือก ตกลง

ตัวอย่างโค้ดต่อไปนี้คือสคริปต์ M แบบเต็มสําหรับคิวรีที่คุณสร้างขึ้น:
let
Source = Sql.Database(ServerName, DatabaseName),
Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
#"Choose columns" = Table.SelectColumns(Navigation, {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"}),
#"Sorted rows" = Table.Sort(#"Choose columns", {{"Sale Key", Order.Descending}}),
#"Kept top rows" = Table.FirstN(#"Sorted rows", 10)
in
#"Kept top rows"
ตัวอย่างการพับคิวรีแบบเต็ม: การทําความเข้าใจการประเมินคิวรี
เมื่อตรวจสอบบานหน้าต่างขั้นตอนที่นําไปใช้ คุณจะสังเกตเห็นว่าตัวบ่งชี้ Query Folding กําลังแสดงว่าการแปลงที่คุณเพิ่ม เลือกคอลัมน์เรียงลําดับแถว และ รักษาแถวบนสุด ได้รับการทําเครื่องหมายเป็นขั้นตอนที่จะถูกประเมินที่แหล่งข้อมูล

คุณสามารถคลิกขวาที่ขั้นตอนสุดท้ายของคิวรีของคุณ แถวที่ชื่อว่าเก็บแถวบนสุดไว้และเลือกตัวเลือกที่อ่านแผนคิวรี

คําขอนี้อยู่ในภาษาแม่ของแหล่งข้อมูลของคุณ สําหรับกรณีนี้ ภาษาดังกล่าวคือ SQL และคําสั่งนี้แสดงคําขอสําหรับแถวและเขตข้อมูลทั้งหมดจาก fact_Sale ตาราง
การดูคิวรีแหล่งข้อมูลนี้จะช่วยให้คุณเข้าใจเรื่องราวที่แผนคิวรีเต็มรูปแบบพยายามสื่อความหมายได้ดียิ่งขึ้น:
Sql.Database: เชื่อมต่อกับฐานข้อมูลและส่งคําขอเมตาดาต้าเพื่อทําความเข้าใจความสามารถของฐานข้อมูลValue.NativeQuery: แสดงคําขอที่สร้างขึ้นโดยPower Queryเพื่อเติมเต็มคิวรี Power Queryส่งคําขอข้อมูลในคําสั่ง SQL แบบเนทีฟไปยังแหล่งข้อมูล สําหรับกรณีนี้ ซึ่งแสดงการร้องขอเฉพาะระเบียน 10 อันดับแรกของfact_Saleตาราง โดยมีเพียงเขตข้อมูลที่จําเป็นเท่านั้นหลังจากเรียงลําดับจากมากไปหาน้อยโดยใช้Sale Keyเขตข้อมูล
หมายเหตุ
ในขณะที่ไม่มีส่วนคําสั่งที่สามารถใช้เพื่อเลือกแถวล่างสุดของตารางในภาษา T-SQL จะมีส่วนคําสั่ง TOP ที่ดึงแถวบนสุดของตาราง
สําหรับการประเมิน คิวรีนี้จะดาวน์โหลดเฉพาะ 10 แถวโดยมีเฉพาะเขตข้อมูลที่คุณร้องขอจาก fact_Sale ตารางเท่านั้น คิวรีนี้ใช้เวลาเฉลี่ย 31 วินาทีในการประมวลผลในอินสแตนซ์มาตรฐานของกระแสข้อมูล Power BI (ซึ่งเป็นบัญชีสําหรับการประเมินและการโหลดข้อมูลไปยังกระแสข้อมูล)
การเปรียบเทียบประสิทธิภาพการทํางาน
เพื่อให้เข้าใจถึงผลกระทบของ Query Folding ในคิวรีเหล่านี้ได้ดียิ่งขึ้น คุณสามารถรีเฟรชคิวรีของคุณ บันทึกเวลาที่ใช้ในการรีเฟรชคิวรีแต่ละรายการได้อย่างเต็มที่ และเปรียบเทียบคิวรีเหล่านั้น เพื่อความง่าย บทความนี้ให้ช่วงเวลาการรีเฟรชโดยเฉลี่ยที่จับภาพไว้โดยใช้กลไกการรีเฟรชกระแสข้อมูล Power BI ในขณะที่เชื่อมต่อกับสภาพแวดล้อม Azure Synapse Analytics เฉพาะกับ DW2000c เป็นระดับบริการ
เวลาการรีเฟรชสําหรับแต่ละคิวรีมีดังนี้:
| ตัวอย่าง | ป้ายกำกับ | เวลาเป็นวินาที |
|---|---|---|
| ไม่มีการพับคิวรี | ไม่มี | 361 |
| การพับคิวรีบางส่วน | บางส่วน | 184 |
| การพับคิวรีแบบเต็ม | แบบเต็ม | 31 |

ซึ่งมักจะเป็นกรณีที่คิวรีที่พับกลับไปยังแหล่งข้อมูลได้อย่างมีประสิทธิภาพคิวรีที่คล้ายกันที่ไม่ได้พับกลับไปยังแหล่งข้อมูลโดยสมบูรณ์ อาจมีหลายสาเหตุที่เป็นในกรณีนี้ เหตุผลเหล่านี้มีตั้งแต่ความซับซ้อนของการแปลงที่คิวรีของคุณดําเนินการ ไปจนถึงการปรับคิวรีให้เหมาะสมที่แหล่งข้อมูลของคุณ เช่น ดัชนีและการคํานวณเฉพาะ และทรัพยากรเครือข่าย ยังมีกระบวนการหลักเฉพาะสองกระบวนการที่ Query Folding พยายามใช้ เพื่อลดผลกระทบที่กระบวนการทั้งสองเหล่านี้มีต่อPower Query:
- ข้อมูลในการส่งต่อ
- การแปลงที่ดําเนินการโดยกลไกจัดการPower Query
ส่วนต่อไปนี้อธิบายผลกระทบที่กระบวนการทั้งสองนี้มีในคิวรีที่กล่าวถึงก่อนหน้านี้
ข้อมูลในการส่งต่อ
เมื่อคิวรีได้รับการดําเนินการ ระบบจะพยายามดึงข้อมูลจากแหล่งข้อมูลเป็นหนึ่งในขั้นตอนแรก ข้อมูลที่ดึงมาจากแหล่งข้อมูลจะถูกกําหนดโดยกลไก Query Folding กลไกนี้ระบุขั้นตอนจากคิวรีที่สามารถโหลดไปยังแหล่งข้อมูลได้
ตารางต่อไปนี้แสดงรายการของจํานวนแถวที่ fact_Sale ร้องขอจากตารางของฐานข้อมูล ตารางยังรวมถึงคําอธิบายโดยย่อของคําสั่ง SQL ที่ส่งเพื่อร้องขอข้อมูลดังกล่าวจากแหล่งข้อมูล
| ตัวอย่าง | ป้ายกำกับ | แถวที่ร้องขอ | คำอธิบาย |
|---|---|---|---|
| ไม่มีการพับคิวรี | ไม่มี | 3644356 | ร้องขอสําหรับเขตข้อมูลทั้งหมดและระเบียนทั้งหมดจาก fact_Sale ตาราง |
| การพับคิวรีบางส่วน | บางส่วน | 3644356 | ร้องขอสําหรับทุกระเบียน แต่จําเป็นต้องมีเขตข้อมูลจาก fact_Sale ตารางหลังจากที่เรียงลําดับตาม Sale Key เขตข้อมูลแล้วเท่านั้น |
| การพับคิวรีแบบเต็ม | แบบเต็ม | 10 | คําขอสําหรับเฉพาะเขตข้อมูลที่จําเป็นและระเบียน TOP 10 ของ fact_Sale ตารางหลังจากเรียงลําดับจากมากไปหาน้อยตาม Sale Key เขตข้อมูล |

เมื่อร้องขอข้อมูลจากแหล่งข้อมูล แหล่งข้อมูลจําเป็นต้องคํานวณผลลัพธ์สําหรับคําขอ แล้วส่งข้อมูลไปยังผู้ร้องขอ ในขณะที่ทรัพยากรการประมวลผลได้รับการกล่าวถึงแล้ว ทรัพยากรเครือข่ายในการย้ายข้อมูลจากแหล่งข้อมูลไปยังPower Queryแล้ว และมีPower Queryสามารถรับข้อมูลได้อย่างมีประสิทธิภาพ และเตรียมพร้อมสําหรับการแปลงข้อมูลจะเกิดขึ้นภายในเครื่องอาจใช้เวลาสักครู่ ขึ้นอยู่กับขนาดของข้อมูล
สําหรับตัวอย่างที่แสดงนั้น Power Queryต้องร้องขอแถวมากกว่า 3.6 ล้านแถวจากแหล่งข้อมูลสําหรับการไม่มี Query Folding และตัวอย่างการพับคิวรีบางส่วน สําหรับตัวอย่างการพับคิวรีแบบเต็ม ระบบร้องขอเฉพาะ 10 แถวเท่านั้น สําหรับเขตข้อมูลที่ร้องขอ ตัวอย่าง Query Folding ไม่ได้ร้องขอเขตข้อมูลที่พร้อมใช้งานทั้งหมดจากตาราง ทั้งการพับคิวรีบางส่วนและตัวอย่างการพับคิวรีแบบเต็มส่งคําขอสําหรับเขตข้อมูลที่จําเป็นเท่านั้น
ข้อควรระวัง
เราขอแนะนําให้คุณใช้โซลูชันการรีเฟรชแบบเพิ่มหน่วยที่ใช้ประโยชน์จากการพับคิวรีสําหรับคิวรีหรือเอนทิตีที่มีข้อมูลจํานวนมาก การรวมผลิตภัณฑ์ที่แตกต่างกันของ Power Queryใช้การหมดเวลาเพื่อยุติการคิวรีการเรียกใช้ที่นาน แหล่งข้อมูลบางแหล่งยังใช้การหมดเวลาในเซสชันการเรียกใช้ที่นาน พยายามดําเนินการคิวรีที่มีราคาแพงกับเซิร์ฟเวอร์ของพวกเขา ข้อมูลเพิ่มเติม: การใช้การรีเฟรชแบบเพิ่มหน่วยกับกระแสข้อมูล และการ รีเฟรชแบบเพิ่มหน่วยสําหรับชุดข้อมูล
การแปลงที่ดําเนินการโดยกลไกจัดการPower Query
บทความนี้แสดงให้เห็นว่าคุณสามารถใช้ แผนคิวรี ได้อย่างไรเพื่อให้เข้าใจว่าคิวรีของคุณอาจได้รับการประเมินอย่างไร ภายในแผนคิวรี คุณสามารถดูโหนดที่แน่นอนของการดําเนินการแปลงที่จะดําเนินการโดยกลไกจัดการPower Query
ตารางต่อไปนี้แสดงโหนดจากแผนคิวรีของคิวรีก่อนหน้าที่จะได้รับการประเมินโดยกลไกจัดการPower Query
| ตัวอย่าง | ป้ายกำกับ | โหนดการแปลงกลไกจัดการPower Query |
|---|---|---|
| ไม่มีการพับคิวรี | ไม่มี | Table.LastN, Table.SelectColumns |
| การพับคิวรีบางส่วน | บางส่วน | Table.LastN |
| การพับคิวรีแบบเต็ม | แบบเต็ม | — |

ตัวอย่างที่แสดงในบทความนี้ ตัวอย่างการพับคิวรีแบบเต็มรูปแบบไม่จําเป็นต้องมีการแปลงใด ๆ เกิดขึ้นภายในกลไกPower Queryเนื่องจากตารางเอาต์พุตที่ต้องการจะมาจากแหล่งข้อมูลโดยตรง ในทางตรงกันข้าม คิวรีอีกสองคิวรีจําเป็นต้องมีการคํานวณบางอย่างเกิดขึ้นที่เครื่องมือ Power Query เนื่องจากจํานวนข้อมูลที่จําเป็นต้องประมวลผลโดยคิวรีทั้งสองนี้ กระบวนการสําหรับตัวอย่างเหล่านี้จะใช้เวลามากกว่าตัวอย่างการพับคิวรีแบบเต็ม
การแปลงสามารถถูกจัดกลุ่มเป็นประเภทดังต่อไปนี้:
| ชนิดของตัวดําเนินการ | คำอธิบาย |
|---|---|
| ระยะ ไกล | ตัวดําเนินการที่เป็นโหนดแหล่งข้อมูล การประเมินของตัวดําเนินการเหล่านี้เกิดขึ้นภายนอกPower Query |
| การสตรีม | ตัวดําเนินการเป็นตัวดําเนินการแบบพาส-ทรู ตัวอย่างเช่น Table.SelectRows ด้วยตัวกรองอย่างง่ายมักจะสามารถกรองผลลัพธ์ได้เมื่อผ่านตัวดําเนินการ และไม่จําเป็นต้องรวบรวมแถวทั้งหมดก่อนที่จะย้ายข้อมูล Table.SelectColumns และ Table.ReorderColumns เป็นตัวอย่างอื่น ๆ ของการเรียงลําดับของตัวดําเนินการเหล่านี้ |
| การสแกนแบบเต็ม | ตัวดําเนินการที่จําเป็นต้องรวบรวมแถวทั้งหมดก่อนที่ข้อมูลสามารถย้ายไปยังตัวดําเนินการถัดไปในห่วงโซ่ ตัวอย่างเช่น หากต้องการเรียงลําดับข้อมูล Power Queryจําเป็นต้องรวบรวมข้อมูลทั้งหมด ตัวอย่างอื่น ๆ ของตัวดําเนินการสแกนแบบเต็มคือ Table.Group, Table.NestedJoinและTable.Pivot |
เคล็ดลับ
แม้ว่าการแปลงทุกครั้งจะเหมือนกันจากมุมมองด้านประสิทธิภาพ แต่ในกรณีส่วนใหญ่การมีการแปลงน้อยลงมักจะดีกว่า
ข้อควรพิจารณาและคําแนะนํา
- ทําตามแนวทางปฏิบัติที่ดีที่สุดเมื่อสร้างคิวรีใหม่ ตามที่ระบุไว้ใน แนวทางปฏิบัติที่ดีที่สุดในPower Query
- ใช้ ตัวบ่งชี้การพับคิวรี เพื่อตรวจสอบว่าขั้นตอนใดที่ทําให้คิวรีของคุณไม่สามารถพับได้ จัดลําดับใหม่หากจําเป็นที่จะเพิ่มการพับ
- ใช้แผนคิวรีเพื่อกําหนดว่าการแปลงใดกําลังเกิดขึ้นที่กลไกจัดการPower Queryสําหรับขั้นตอนเฉพาะ พิจารณาปรับเปลี่ยนคิวรีที่มีอยู่โดยจัดเรียงขั้นตอนของคุณใหม่ จากนั้นตรวจสอบแผนคิวรีของขั้นตอนสุดท้ายของคิวรีคุณอีกครั้ง และดูว่าแผนคิวรีดูดีกว่าแผนก่อนหน้าหรือไม่ ตัวอย่างเช่น แผนคิวรีใหม่มีโหนดน้อยกว่าแผนก่อนหน้า และโหนดส่วนใหญ่เป็นโหนด "Streaming" และไม่ใช่ "การสแกนแบบเต็ม" สําหรับแหล่งข้อมูลที่สนับสนุนการพับ โหนดใด ๆ ในแผนคิวรีอื่นนอกเหนือจาก
Value.NativeQueryและโหนดการเข้าถึงแหล่งข้อมูลแสดงการแปลงที่ไม่ได้พับ - เมื่อพร้อมใช้งาน คุณสามารถใช้ตัวเลือก ดูคิวรีในระบบของฐานข้อมูล (หรือ ดูคิวรีแหล่งข้อมูล) เพื่อให้แน่ใจว่าคิวรีของคุณสามารถพับกลับไปยังแหล่งข้อมูลได้ หากตัวเลือกนี้ถูกปิดใช้งานสําหรับขั้นตอนของคุณ และคุณกําลังใช้แหล่งข้อมูลที่เปิดใช้งานตามปกติ คุณได้สร้างขั้นตอนที่หยุดการพับคิวรี ถ้าคุณกําลังใช้แหล่งข้อมูลที่ไม่รองรับตัวเลือกนี้ คุณสามารถพึ่งพาตัวบ่งชี้การพับคิวรีและแผนคิวรีได้
- ใช้เครื่องมือการวินิจฉัยคิวรีเพื่อทําความเข้าใจคําขอที่ถูกส่งไปยังแหล่งข้อมูลของคุณได้ดียิ่งขึ้นเมื่อสามารถทําการพับคิวรีสําหรับตัวเชื่อมต่อได้
- เมื่อรวมข้อมูลที่มาจากการใช้ตัวเชื่อมต่อหลายตัว Power Queryพยายามส่งงานให้มากที่สุดเท่าที่จะทําได้กับแหล่งข้อมูลทั้งสองแหล่ง ในขณะที่สอดคล้องกับระดับความเป็นส่วนตัวที่กําหนดไว้สําหรับแต่ละแหล่งข้อมูล
- อ่านบทความ ในระดับความเป็นส่วนตัว เพื่อปกป้องคิวรีของคุณจากการเรียกใช้กับข้อผิดพลาดของไฟร์วอลล์ความเป็นส่วนตัวของข้อมูล
- ใช้เครื่องมืออื่นเพื่อตรวจสอบการพับคิวรีจากมุมมองของคําขอที่ได้รับโดยแหล่งข้อมูล จากตัวอย่างในบทความนี้ คุณสามารถใช้ Microsoft SQL Server Profiler เพื่อตรวจสอบคําขอที่ส่งโดยPower Queryและได้รับโดย Microsoft SQL Server
- ถ้าคุณเพิ่มขั้นตอนใหม่ลงในคิวรีแบบพับอย่างสมบูรณ์และขั้นตอนใหม่นี้ก็ถูกพับด้วย Power Queryอาจส่งคําขอใหม่ไปยังแหล่งข้อมูลแทนการใช้ผลลัพธ์ก่อนหน้าเวอร์ชันที่แคชไว้ ในทางปฏิบัติ กระบวนการนี้อาจส่งผลให้การดําเนินการเป็นเรื่องง่ายในข้อมูลปริมาณน้อยที่ใช้เวลานานในการรีเฟรชในการแสดงตัวอย่างมากกว่าที่คาดไว้ การรีเฟรชที่ยาวขึ้นนี้เกิดขึ้นเนื่องจากPower Queryการร้องขอแหล่งข้อมูลแทนที่จะทํางานจากสําเนาข้อมูลในเครื่อง