ตัวอย่างการพับคิวรี

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

สถานการณ์สมมติ

ลองนึกภาพสถานการณ์สมมติเมื่อใช้ ฐานข้อมูลตัวนําเข้าเวิลด์ไวด์เวิลด์สําหรับฐานข้อมูล Azure Synapse Analytics SQL คุณได้รับมอบหมายให้สร้างคิวรีใน Power Query ที่เชื่อมต่อกับ fact_Sale ตารางและดึงข้อมูลยอดขาย 10 รายการล่าสุดที่มีเฉพาะเขตข้อมูลต่อไปนี้:

  • คีย์การขาย
  • คีย์ลูกค้า
  • คีย์วันที่ในใบแจ้งหนี้
  • คำอธิบาย
  • ปริมาณ

หมายเหตุ

เพื่อวัตถุประสงค์ในการสาธิต บทความนี้ใช้ฐานข้อมูลที่ระบุไว้ในบทช่วยสอนเกี่ยวกับการโหลดฐานข้อมูลตัวนําเข้าโลกกว้างลงใน Azure Synapse Analytics ความแตกต่างหลักในบทความนี้คือ fact_Sale ตารางเก็บข้อมูลสําหรับปี 2000 เท่านั้น โดยมีทั้งหมด 3,644,356 แถว

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

ตารางผลลัพธ์ตัวอย่างที่ได้มาจากตาราง fact_Sale ของฐานข้อมูล Wide World Importers Azure Synapse Analytics

บทความนี้แสดงสามวิธีเพื่อให้ได้ผลลัพธ์เดียวกันโดยมีการพับคิวรีในระดับที่แตกต่างกัน:

  • ไม่มีการพับคิวรี
  • การพับคิวรีบางส่วน
  • การพับคิวรีแบบเต็ม

ไม่มีตัวอย่างการพับคิวรี

สำคัญ

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

หลังจากเชื่อมต่อกับฐานข้อมูลของคุณและนําทางไปยังfact_Saleตารางแล้ว คุณเลือกการแปลง เก็บแถวล่างสุด ที่พบภายในกลุ่ม ลดแถว ของแท็บ หน้าแรก

เก็บการแปลงแถวด้านล่างที่พบภายในกลุ่มลดแถวของแท็บหน้าแรก

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

การป้อนค่า 10 ภายในกล่องโต้ตอบเก็บแถวด้านล่าง

เคล็ดลับ

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

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

การเลือกการแปลงเลือกคอลัมน์สําหรับตัวอย่างไม่มี Query Folding

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

การเลือกคอลัมน์ Sale Key, Customer Key, Invoice Date Key, Description และ Quantity สําหรับตัวอย่างไม่มี Query Folding

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

บานหน้าต่างขั้นตอนที่นําไปใช้สําหรับคิวรีที่มีตัวบ่งชี้การพับคิวรีแสดงแถวด้านล่างที่เก็บไว้และขั้นตอนลบคอลัมน์อื่น ๆ ออก

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

แผนคิวรีสําหรับคิวรีที่สร้างขึ้นที่มีหลายโหนด สองรายการอยู่ในสี่เหลี่ยมผืนผ้าที่แสดงถึงโหนดที่จะประเมินโดยกลไก Power Query

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

เมื่อต้องการดูคําขอที่แน่นอนที่ส่งไปยังแหล่งข้อมูลของคุณ ให้เลือก ดูรายละเอียด ใน Value.NativeQuery โหนด

คําสั่ง SQL พบภายใน Value.NativeQuery ที่แสดงคําขอของเขตข้อมูลและเรกคอร์ดทั้งหมดจากตาราง fact_Sale ในฐานข้อมูล

คําขอแหล่งข้อมูลนี้อยู่ในภาษาแม่ของแหล่งข้อมูลของคุณ สําหรับกรณีนี้ ภาษานั้นคือ SQL และคําสั่งนี้แสดงคําขอสําหรับแถวและเขตข้อมูลทั้งหมดจาก fact_Sale ตาราง

การดูคําขอแหล่งข้อมูลนี้จะช่วยให้คุณเข้าใจเรื่องราวที่แผนคิวรีพยายามสื่อได้ดียิ่งขึ้น:

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

สําหรับการประเมินคิวรีนี้ต้องดาวน์โหลดแถวและเขตข้อมูลทั้งหมดจาก fact_Sale ตาราง คิวรีนี้ใช้เวลาเฉลี่ย 6 นาทีและ 1 วินาทีในการประมวลผลในอินสแตนซ์มาตรฐานของกระแสข้อมูล Power BI (ซึ่งเป็นบัญชีสําหรับการประเมินและการโหลดข้อมูลไปยังกระแสข้อมูล)

ตัวอย่างการพับคิวรีบางส่วน

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

การเลือกการแปลงเลือกคอลัมน์สําหรับตัวอย่างการพับคิวรีบางส่วน

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

การเลือกคอลัมน์ Sale Key, Customer Key, Invoice Date Key, Description และ Quantity สําหรับตัวอย่างการพับคิวรีบางส่วน

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

เรียงลําดับเขตข้อมูล Sale Key ของตารางจากน้อยไปหามากโดยใช้เมนูบริบทเขตข้อมูลตัวกรองอัตโนมัติ

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

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

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

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

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

เมื่อต้องการดูคําขอที่แน่นอนที่ส่งไปยังแหล่งข้อมูลของคุณ ให้เลือก ดูรายละเอียด ใน Value.NativeQuery โหนด

คําสั่ง SQL ภายใน Value.NativeQuery แสดงคําขอสําหรับเรกคอร์ดทั้งหมด โดยมีเฉพาะเขตข้อมูลที่ร้องขอจากตาราง fact_Sales ในฐานข้อมูลที่เรียงลําดับจากน้อยไปหามากตามเขตข้อมูล Sale Key

คําขอนี้อยู่ในภาษาแม่ของแหล่งข้อมูลของคุณ สําหรับกรณีนี้ ภาษานั้นคือ 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 จะใช้กลไกจัดการ Power Query เพื่อกรองตารางและเก็บเฉพาะ 10 แถวล่าสุด

สําหรับการประเมินคิวรีนี้ต้องดาวน์โหลดแถวทั้งหมดและเฉพาะเขตข้อมูลที่จําเป็นจาก fact_Sale ตารางเท่านั้น ใช้เวลาโดยเฉลี่ย 3 นาทีและ 4 วินาทีในการประมวลผลในอินสแตนซ์มาตรฐานของกระแสข้อมูล Power BI (ซึ่งเป็นบัญชีสําหรับการประเมินและการโหลดข้อมูลไปยังกระแสข้อมูล)

ตัวอย่างการพับคิวรีแบบเต็ม

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

การเลือกการแปลงเลือกคอลัมน์สําหรับตัวอย่างการพับคิวรีแบบเต็ม

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

การเลือกคอลัมน์ Sale Key, Customer Key, Invoice Date Key, Description และ Quantity สําหรับตัวอย่างการพับคิวรีแบบเต็ม

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

เรียงลําดับเขตข้อมูล 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"

ตัวอย่างการพับคิวรีแบบเต็ม: ทําความเข้าใจเกี่ยวกับการประเมินคิวรี

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

ขั้นตอนคิวรีทั้งหมดมีไอคอนที่แสดงว่าสามารถพับกลับไปยังแหล่งข้อมูลได้

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

คําสั่ง SQL ที่พบภายใน Value.NativeQuery ที่แสดงคําขอสิบระเบียนบนสุดของตาราง fact_Sale ที่เรียงลําดับโดยใช้เขตข้อมูล คีย์การขาย และที่มีเฉพาะเขตข้อมูล Sales Key, คีย์ลูกค้า, คีย์วันที่ในใบแจ้งหนี้, คําอธิบาย และ ปริมาณ

คําขอนี้อยู่ในภาษาแม่ของแหล่งข้อมูลของคุณ สําหรับกรณีนี้ ภาษานั้นคือ 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 (ซึ่งเป็นบัญชีสําหรับการประเมินและการโหลดข้อมูลไปยังกระแสข้อมูล)

การเปรียบเทียบประสิทธิภาพ

เพื่อให้เข้าใจถึงผลกระทบที่มีการพับคิวรีได้ดียิ่งขึ้น คุณสามารถรีเฟรชคิวรีของคุณ บันทึกเวลาที่ใช้ในการรีเฟรชคิวรีแต่ละรายการทั้งหมด และเปรียบเทียบคิวรีเหล่านั้น เพื่อความง่าย บทความนี้ให้เวลาการรีเฟรชโดยเฉลี่ยที่จับภาพได้โดยใช้กลไกการรีเฟรชกระแสข้อมูล Power BI ในขณะที่เชื่อมต่อกับสภาพแวดล้อม Azure Synapse Analytics เฉพาะด้วย DW2000c เป็นระดับบริการ

เวลาการรีเฟรชสําหรับแต่ละคิวรีมีดังนี้:

ตัวอย่าง ป้ายชื่อ เวลาเป็นวินาที
ไม่มีการพับคิวรี None 361
การพับคิวรีบางส่วน บางส่วน 184
การพับคิวรีแบบเต็ม เต็ม 31

แผนภูมิที่เปรียบเทียบเวลาการรีเฟรชของคิวรีแบบพับไม่มีที่ 361 วินาที คิวรีบางส่วนจะถูกพับด้วย 184 วินาที และคิวรีแบบพับทั้งหมดด้วย 31 วินาที

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

  • ข้อมูลระหว่างทาง
  • แปลงข้อมูลที่ดําเนินการโดยกลไกจัดการ Power Query

ส่วนต่อไปนี้อธิบายผลกระทบที่กระบวนการทั้งสองนี้มีอยู่ในคิวรีที่กล่าวถึงก่อนหน้านี้

ข้อมูลระหว่างทาง

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

ตารางต่อไปนี้แสดงรายการจํานวนแถวที่ fact_Sale ร้องขอจากตารางของฐานข้อมูล ตารางยังรวมถึงคําอธิบายโดยย่อของคําสั่ง SQL ที่ส่งเพื่อร้องขอข้อมูลดังกล่าวจากแหล่งข้อมูล

ตัวอย่าง ป้ายชื่อ แถวที่ร้องขอ คำอธิบาย
ไม่มีการพับคิวรี None 3644356 การร้องขอเขตข้อมูลทั้งหมดและระเบียนทั้งหมดจาก fact_Sale ตาราง
การพับคิวรีบางส่วน บางส่วน 3644356 ร้องขอสําหรับระเบียนทั้งหมด แต่เฉพาะเขตข้อมูลที่จําเป็นจาก fact_Sale ตารางหลังจากที่เรียงลําดับตาม Sale Key เขตข้อมูล
การพับคิวรีแบบเต็ม เต็ม 10 คําขอเฉพาะเขตข้อมูลที่จําเป็นและระเบียน TOP 10 ของ fact_Sale ตารางหลังจากเรียงลําดับจากมากไปหาน้อยตาม Sale Key เขตข้อมูล

แผนภูมิที่มีจํานวนแถวที่รวบรวมจากฐานข้อมูลสําหรับการไม่มีการพับคิวรี การพับคิวรีบางส่วน และการพับคิวรีเต็มรูปแบบ

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

สําหรับตัวอย่างที่แสดงนั้น Power Query ต้องร้องขอแถวมากกว่า 3.6 ล้านแถวจากแหล่งข้อมูลสําหรับการพับคิวรีและตัวอย่างการพับคิวรีบางส่วน สําหรับตัวอย่างการพับคิวรีแบบเต็ม จะมีการร้องขอเพียง 10 แถวเท่านั้น สําหรับเขตข้อมูลที่ร้องขอ ตัวอย่างไม่มี Query Folding ร้องขอเขตข้อมูลที่พร้อมใช้งานทั้งหมดจากตาราง ทั้งการพับคิวรีบางส่วนและตัวอย่างการพับคิวรีแบบเต็มส่งคําขอสําหรับเขตข้อมูลที่จําเป็นเท่านั้น

ข้อควรระวัง

เราขอแนะนําให้คุณใช้โซลูชันการรีเฟรชแบบเพิ่มหน่วยที่ใช้ประโยชน์จาก Query Folding สําหรับคิวรีหรือตารางที่มีข้อมูลจํานวนมาก การรวมผลิตภัณฑ์ที่แตกต่างกันของ Power Query จะดําเนินการหมดเวลาเพื่อยุติคิวรีการเรียกใช้ที่นาน แหล่งข้อมูลบางแหล่งยังใช้การหมดเวลาในเซสชันการเรียกใช้ที่นาน พยายามดําเนินการคิวรีราคาแพงกับเซิร์ฟเวอร์ของตน ข้อมูลเพิ่มเติม: การใช้การรีเฟรชแบบเพิ่มหน่วยกับกระแส ข้อมูลและการ รีเฟรชแบบเพิ่มหน่วยสําหรับแบบจําลองความหมาย

แปลงข้อมูลที่ดําเนินการโดยกลไกจัดการ Power Query

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

ตารางต่อไปนี้แสดงโหนดจากแผนคิวรีของคิวรีก่อนหน้าที่จะได้รับการประเมินโดยกลไกจัดการ Power Query

ตัวอย่าง ป้ายชื่อ โหนดการแปลงกลไกจัดการ Power Query
ไม่มีการพับคิวรี None Table.LastN, Table.SelectColumns
การพับคิวรีบางส่วน บางส่วน Table.LastN
การพับคิวรีแบบเต็ม เต็ม

แผนภูมิที่มีการแปลงข้อมูลทั้งหมดทํางานโดยกลไกจัดการ Power Query สําหรับการไม่มีการพับคิวรี การพับคิวรีบางส่วน และการพับคิวรีเต็มรูปแบบ

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

การแปลงสามารถถูกจัดกลุ่มเป็นประเภทต่อไปนี้:

ชนิดของตัวดําเนินการ คำอธิบาย
ระยะ ไกล ตัวดําเนินการที่เป็นโหนดแหล่งข้อมูล การประเมินตัวดําเนินการเหล่านี้เกิดขึ้นภายนอก Power Query
สต รีม มิ่ง ตัวดําเนินการเป็นตัวดําเนินการแบบพาส-ทรู ตัวอย่างเช่น Table.SelectRows ด้วยตัวกรองอย่างง่ายมักจะสามารถกรองผลลัพธ์ขณะที่ผ่านตัวดําเนินการ และไม่จําเป็นต้องรวบรวมแถวทั้งหมดก่อนที่จะย้ายข้อมูล Table.SelectColumns และ Table.ReorderColumns เป็นตัวอย่างอื่น ๆ ของการเรียงลําดับของตัวดําเนินการเหล่านี้
การสแกนแบบเต็มรูปแบบ ตัวดําเนินการที่จําเป็นต้องรวบรวมแถวทั้งหมดก่อนที่ข้อมูลสามารถย้ายไปยังตัวดําเนินการถัดไปในสายโซ่ ตัวอย่างเช่น ในการเรียงลําดับข้อมูล Power Query จําเป็นต้องรวบรวมข้อมูลทั้งหมด ตัวอย่างอื่นๆ ของตัวดําเนินการสแกนเต็มรูปแบบคือ Table.Group, Table.NestedJoinและTable.Pivot

เคล็ดลับ

แม้ว่าทุกการแปลงจะเหมือนกันจากจุดยืนด้านประสิทธิภาพ แต่ในกรณีส่วนใหญ่การมีการแปลงที่น้อยลงมักจะดีขึ้น

ข้อควรพิจารณาและคําแนะนํา

  • ทําตามแนวทางปฏิบัติที่ดีที่สุดเมื่อสร้างคิวรีใหม่ ตามที่ระบุไว้ใน แนวทางปฏิบัติที่ดีที่สุดใน Power Query
  • ใช้ตัวบ่งชี้ Query Folding เพื่อตรวจสอบว่าขั้นตอนใดที่ทําให้คิวรีของคุณไม่สามารถพับได้ จัดลําดับใหม่หากจําเป็นที่จะเพิ่มการพับ
  • ใช้แผนคิวรีเพื่อพิจารณาว่าการแปลงใดที่เกิดขึ้นในกลไกจัดการ Power Query สําหรับขั้นตอนเฉพาะ พิจารณาปรับเปลี่ยนคิวรีที่มีอยู่ของคุณ โดยจัดเรียงขั้นตอนของคุณใหม่ จากนั้นตรวจสอบแผนคิวรีของขั้นตอนสุดท้ายของคิวรีคุณอีกครั้งและดูว่าแผนคิวรีมีลักษณะดีกว่าแผนคิวรีก่อนหน้านี้หรือไม่ ตัวอย่างเช่น แผนคิวรีใหม่มีโหนดน้อยกว่าโหนดก่อนหน้า และโหนดส่วนใหญ่เป็นโหนด "สตรีมมิ่ง" และไม่ใช่ "สแกนเต็มรูปแบบ" สําหรับแหล่งข้อมูลที่สนับสนุนการพับโหนดใด ๆ ในแผนคิวรีอื่นนอกเหนือจาก Value.NativeQuery และโหนดการเข้าถึงแหล่งข้อมูลแสดงการแปลงที่ไม่ได้พับ
  • เมื่อพร้อมใช้งาน คุณสามารถใช้ตัวเลือก ดูคิวรีในระบบของฐานข้อมูล (หรือ ดูคิวรีแหล่งข้อมูล) เพื่อให้แน่ใจว่าสามารถพับคิวรีของคุณกลับไปยังแหล่งข้อมูลได้ หากปิดใช้งานตัวเลือกนี้สําหรับขั้นตอนของคุณ และคุณกําลังใช้แหล่งข้อมูลที่เปิดใช้งานตามปกติ คุณได้สร้างขั้นตอนที่หยุดการพับคิวรี ถ้าคุณกําลังใช้แหล่งข้อมูลที่ไม่สนับสนุนตัวเลือกนี้ คุณสามารถพึ่งพาตัวบ่งชี้การพับคิวรีและแผนคิวรีได้
  • ใช้เครื่องมือการวินิจฉัยคิวรีเพื่อทําความเข้าใจคําขอที่ถูกส่งไปยังแหล่งข้อมูลของคุณได้ดียิ่งขึ้นเมื่อความสามารถในการพับคิวรีพร้อมใช้งานสําหรับตัวเชื่อมต่อ
  • เมื่อรวมข้อมูลที่มาจากการใช้ตัวเชื่อมต่อหลายตัว Power Query จะพยายามส่งงานให้มากที่สุดเท่าที่เป็นไปได้สําหรับแหล่งข้อมูลทั้งสองในขณะที่สอดคล้องกับระดับความเป็นส่วนตัวที่กําหนดไว้สําหรับแต่ละแหล่งข้อมูล
  • อ่านบทความ ในระดับ ความเป็นส่วนตัวเพื่อปกป้องคิวรีของคุณจากการเรียกใช้จากข้อผิดพลาดไฟร์วอลล์ความเป็นส่วนตัวของข้อมูล
  • ใช้เครื่องมืออื่นๆ เพื่อตรวจสอบ Query Folding จากมุมมองของคําขอที่ได้รับจากแหล่งข้อมูล ตามตัวอย่างในบทความนี้ คุณสามารถใช้ตัวสร้างโพรไฟล์ของ Microsoft SQL Server เพื่อตรวจสอบคําขอที่ Power Query และได้รับโดย Microsoft SQL Server
  • ถ้าคุณเพิ่มขั้นตอนใหม่ลงในคิวรีแบบพับทั้งหมดและขั้นตอนใหม่ยังพับขึ้น Power Query อาจส่งคําขอใหม่ไปยังแหล่งข้อมูลแทนที่จะใช้เวอร์ชันที่แคชไว้ของผลลัพธ์ก่อนหน้านี้ ในทางปฏิบัติ กระบวนการนี้อาจส่งผลให้เกิดการดําเนินการที่ง่ายมากกับข้อมูลจํานวนน้อยที่ใช้เวลานานในการรีเฟรชในการแสดงตัวอย่างมากกว่าที่คาดไว้ การรีเฟรชที่ยาวขึ้นนี้เกิดขึ้นเนื่องจาก Power Query ร้องขอแหล่งข้อมูลอีกครั้งแทนที่จะทํางานจากสําเนาของข้อมูลภายในเครื่อง