ตัวอย่างการพับคิวรี
บทความนี้มีตัวอย่างสถานการณ์บางอย่างสําหรับผลลัพธ์ที่เป็นไปได้สามแบบสําหรับการพับคิวรี นอกจากนี้ยังมีคําแนะนําบางอย่างเกี่ยวกับวิธีการใช้ประโยชน์สูงสุดจากกลไกการพับคิวรี และผลกระทบที่มีในคิวรีของคุณ
สถานการณ์สมมติ
ลองนึกภาพสถานการณ์สมมติเมื่อใช้ ฐานข้อมูลตัวนําเข้าเวิลด์ไวด์เวิลด์สําหรับฐานข้อมูล Azure Synapse Analytics SQL คุณได้รับมอบหมายให้สร้างคิวรีใน Power Query ที่เชื่อมต่อกับ fact_Sale
ตารางและดึงข้อมูลยอดขาย 10 รายการล่าสุดที่มีเฉพาะเขตข้อมูลต่อไปนี้:
- คีย์การขาย
- คีย์ลูกค้า
- คีย์วันที่ในใบแจ้งหนี้
- คำอธิบาย
- ปริมาณ
หมายเหตุ
เพื่อวัตถุประสงค์ในการสาธิต บทความนี้ใช้ฐานข้อมูลที่ระบุไว้ในบทช่วยสอนเกี่ยวกับการโหลดฐานข้อมูลตัวนําเข้าโลกกว้างลงใน Azure Synapse Analytics ความแตกต่างหลักในบทความนี้คือ fact_Sale
ตารางเก็บข้อมูลสําหรับปี 2000 เท่านั้น โดยมีทั้งหมด 3,644,356 แถว
ในขณะที่ผลลัพธ์อาจไม่ตรงกับผลลัพธ์ที่คุณได้รับโดยทําตามบทช่วยสอนจากเอกสาร Azure Synapse Analytics เป้าหมายของบทความนี้คือการแสดงแนวคิดหลักและผลกระทบที่การพับคิวรีสามารถมีได้ในคิวรีของคุณ
บทความนี้แสดงสามวิธีเพื่อให้ได้ผลลัพธ์เดียวกันโดยมีการพับคิวรีในระดับที่แตกต่างกัน:
- ไม่มีการพับคิวรี
- การพับคิวรีบางส่วน
- การพับคิวรีแบบเต็ม
ไม่มีตัวอย่างการพับคิวรี
สำคัญ
คิวรีที่ขึ้นอยู่กับแหล่งข้อมูลที่ไม่มีโครงสร้างเท่านั้นหรือไม่มีกลไกการคํานวณ เช่น ไฟล์ CSV หรือ Excel ไม่มีความสามารถในการพับคิวรี ซึ่งหมายความว่า Power Query จะประเมินการแปลงข้อมูลที่จําเป็นทั้งหมดโดยใช้เครื่องมือ Power Query
หลังจากเชื่อมต่อกับฐานข้อมูลของคุณและนําทางไปยังfact_Sale
ตารางแล้ว คุณเลือกการแปลง เก็บแถวล่างสุด ที่พบภายในกลุ่ม ลดแถว ของแท็บ หน้าแรก
หลังจากเลือกการแปลงนี้แล้ว กล่องโต้ตอบใหม่จะปรากฏขึ้น ในกล่องโต้ตอบใหม่นี้ คุณสามารถป้อนจํานวนแถวที่คุณต้องการเก็บไว้ได้ สําหรับกรณีนี้ ให้ใส่ค่า 10 จากนั้นเลือก ตกลง
เคล็ดลับ
สําหรับกรณีนี้ การดําเนินการนี้จะให้ผลลัพธ์ของยอดขายสิบครั้งล่าสุด ในสถานการณ์ส่วนใหญ่ เราขอแนะนําให้คุณระบุตรรกะที่ชัดเจนมากขึ้นซึ่งกําหนดแถวที่จะพิจารณาเป็นแถวสุดท้ายโดยใช้การดําเนินการเรียงลําดับบนตาราง
ถัดไป ให้เลือก การแปลง เลือกคอลัมน์ ที่พบภายใน กลุ่ม จัดการคอลัมน์ ของ แท็บ หน้าแรก จากนั้นคุณสามารถเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณ และลบส่วนที่เหลือออกได้
สุดท้าย ภายในกล่องโต้ตอบ เลือกคอลัมน์ เลือกInvoice Date Key
Description
Sale Key
Customer Key
คอลัมน์ เลือกคอลัมน์ , , และ 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 คุณจะสังเกตเห็นว่าตัวบ่งชี้การพับคิวรีสําหรับ แถว ล่างสุดที่เก็บไว้ และ เลือก คอลัมน์ ถูกทําเครื่องหมายเป็นขั้นตอนที่จะได้รับการประเมินภายนอกแหล่งข้อมูล หรือกล่าวอีกนัยหนึ่งคือ โดยกลไกจัดการ 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 จะใช้กลไกจัดการ Power Query เพื่อกรองตารางและเก็บเฉพาะ 10 แถวล่าสุดTable.SelectColumns
: Power Query จะใช้ผลลัพธ์ของTable.LastN
โหนดและใช้การแปลงใหม่ที่เรียกว่าTable.SelectColumns
ซึ่งจะเลือกคอลัมน์เฉพาะที่คุณต้องการเก็บไว้จากตาราง
สําหรับการประเมินคิวรีนี้ต้องดาวน์โหลดแถวและเขตข้อมูลทั้งหมดจาก fact_Sale
ตาราง คิวรีนี้ใช้เวลาเฉลี่ย 6 นาทีและ 1 วินาทีในการประมวลผลในอินสแตนซ์มาตรฐานของกระแสข้อมูล Power BI (ซึ่งเป็นบัญชีสําหรับการประเมินและการโหลดข้อมูลไปยังกระแสข้อมูล)
ตัวอย่างการพับคิวรีบางส่วน
หลังจากเชื่อมต่อกับฐานข้อมูลและนําทางไปยัง fact_Sale
ตารางแล้ว คุณเริ่มต้นโดยการเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณ เลือก การแปลง เลือกคอลัมน์ ที่พบภายใน กลุ่ม จัดการคอลัมน์ จากแท็บ หน้าแรก การแปลงนี้ช่วยให้คุณสามารถเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณและลบส่วนที่เหลือได้อย่างชัดเจน
ภายในกล่องโต้ตอบ เลือกคอลัมน์ ให้เลือกCustomer Key
Sale Key
คอลัมน์ , Description
Invoice Date Key
และ 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
ที่แสดงโดย ขั้นตอนแถว ล่างสุดที่เก็บไว้ จะได้รับการประเมินโดยใช้กลไกจัดการ 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 จะใช้กลไกจัดการ Power Query เพื่อกรองตารางและเก็บเฉพาะ 10 แถวล่าสุด
สําหรับการประเมินคิวรีนี้ต้องดาวน์โหลดแถวทั้งหมดและเฉพาะเขตข้อมูลที่จําเป็นจาก fact_Sale
ตารางเท่านั้น ใช้เวลาโดยเฉลี่ย 3 นาทีและ 4 วินาทีในการประมวลผลในอินสแตนซ์มาตรฐานของกระแสข้อมูล Power BI (ซึ่งเป็นบัญชีสําหรับการประเมินและการโหลดข้อมูลไปยังกระแสข้อมูล)
ตัวอย่างการพับคิวรีแบบเต็ม
หลังจากเชื่อมต่อกับฐานข้อมูลและนําทางไปยัง fact_Sale
ตารางแล้ว ให้เริ่มต้นโดยการเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณ เลือก การแปลง เลือกคอลัมน์ ที่พบภายใน กลุ่ม จัดการคอลัมน์ จากแท็บ หน้าแรก การแปลงนี้ช่วยให้คุณสามารถเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณและลบส่วนที่เหลือได้อย่างชัดเจน
ใน เลือกคอลัมน์ เลือกSale Key
Customer 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"
ตัวอย่างการพับคิวรีแบบเต็ม: ทําความเข้าใจเกี่ยวกับการประเมินคิวรี
เมื่อตรวจสอบบานหน้าต่างขั้นตอนที่นําไปใช้ คุณจะสังเกตเห็นว่าตัวบ่งชี้การพับคิวรีกําลังแสดงว่าการแปลงที่คุณเพิ่ม, เลือกคอลัมน์, แถวที่เรียงลําดับและ แถวบนสุดที่ถูกทําเครื่องหมายเป็นขั้นตอนที่จะถูกประเมินที่แหล่งข้อมูล
คุณสามารถคลิกขวาที่ขั้นตอนสุดท้ายของคิวรีของคุณ ขั้นตอนที่หนึ่งชื่อว่า Kept แถวบนสุด และเลือกตัวเลือกที่อ่าน แผนคิวรี
คําขอนี้อยู่ในภาษาแม่ของแหล่งข้อมูลของคุณ สําหรับกรณีนี้ ภาษานั้นคือ 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 |
ซึ่งมักจะเป็นกรณีที่คิวรีที่พับกลับไปยังแหล่งข้อมูลนั้นมีประสิทธิภาพเหนือกว่าคิวรีที่คล้ายกันซึ่งไม่สามารถพับกลับไปยังแหล่งข้อมูลได้อย่างสมบูรณ์ อาจมีหลายสาเหตุว่าทําไมจึงเป็นเช่นนั้น เหตุผลเหล่านี้มีตั้งแต่ความซับซ้อนของการแปลงที่คิวรีของคุณดําเนินการ ไปจนถึงการปรับคิวรีให้เหมาะสมที่นําไปใช้ในแหล่งข้อมูลของคุณ เช่น ดัชนีและการคํานวณเฉพาะ และทรัพยากรเครือข่าย ยังคงมีกระบวนการหลักเฉพาะสองอย่างที่ 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 |
สต รีม มิ่ง | ตัวดําเนินการเป็นตัวดําเนินการแบบพาส-ทรู ตัวอย่างเช่น 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 ร้องขอแหล่งข้อมูลอีกครั้งแทนที่จะทํางานจากสําเนาของข้อมูลภายในเครื่อง