หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
บทความนี้แสดงสถานการณ์ตัวอย่างสําหรับผลลัพธ์ที่เป็นไปได้ทั้งสามสําหรับการพับคิวรี นอกจากนี้ยังมีคําแนะนําบางประการเกี่ยวกับวิธีใช้ประโยชน์สูงสุดจากกลไกการพับคิวรี และผลกระทบที่สามารถมีได้ในคิวรีของคุณ
สถานการณ์สมมติ
ลองนึกภาพสถานการณ์สมมติที่ใช้ ฐานข้อมูล Wide World Importers สําหรับฐานข้อมูล SQL Azure Synapse Analytics คุณได้รับมอบหมายให้สร้างคิวรีใน Power Query ที่เชื่อมต่อกับ fact_Sale ตารางและดึงยอดขาย 10 รายการล่าสุดด้วยเขตข้อมูลต่อไปนี้เท่านั้น:
- รหัสการขาย
- รหัสลูกค้า
- รหัสวันที่ของใบแจ้งหนี้
- คำอธิบาย
- ปริมาณ
Note
บทความนี้ใช้ฐานข้อมูลที่ระบุไว้ในบทช่วยสอนเกี่ยวกับการโหลดฐานข้อมูล Wide World Importers ลงใน Azure Synapse Analytics ความแตกต่างที่สําคัญในบทความนี้คือ fact_Sale ตารางเก็บเฉพาะข้อมูลสําหรับปี 2000 โดยมีทั้งหมด 3,644,356 แถว
แม้ว่าผลลัพธ์อาจไม่ตรงกับผลลัพธ์ที่คุณได้รับโดยทําตามบทช่วยสอนจากเอกสารประกอบ Azure Synapse Analytics เป้าหมายของบทความนี้คือการแสดงแนวคิดหลักและผลกระทบที่การพับคิวรีสามารถมีได้ในคิวรีของคุณ
บทความนี้แสดงสามวิธีในการบรรลุผลลัพธ์เดียวกันด้วยการพับคิวรีในระดับที่แตกต่างกัน:
- ไม่มีการพับคิวรี
- การพับคิวรีบางส่วน
- การพับคิวรีแบบเต็ม
ไม่มีตัวอย่างการพับคิวรี
สําคัญ
คิวรีที่อาศัยแหล่งข้อมูลที่ไม่มีโครงสร้างเพียงอย่างเดียว หรือที่ไม่มีกลไกการคํานวณ เช่น ไฟล์ CSV หรือ Excel ไม่มีความสามารถในการพับคิวรี ซึ่งหมายความว่า Power Query จะประเมินการแปลงข้อมูลที่จําเป็นทั้งหมดโดยใช้กลไกจัดการ Power Query
หลังจากเชื่อมต่อกับฐานข้อมูลของคุณและนําทางไปยังfact_Saleตารางแล้ว คุณเลือกการแปลง เก็บแถวล่างสุด ที่พบในกลุ่ม ลดแถว ของแท็บ หน้าแรก
หลังจากที่คุณเลือกการแปลงนี้ กล่องโต้ตอบใหม่จะปรากฏขึ้น ในกล่องโต้ตอบใหม่นี้ คุณสามารถป้อนจํานวนแถวที่คุณต้องการเก็บไว้ได้ สําหรับกรณีนี้ ให้ป้อนค่า 10 แล้วเลือก ตกลง
เคล็ดลับ
ในกรณีนี้ การดําเนินการนี้จะให้ผลลัพธ์ของยอดขาย 10 ครั้งล่าสุด ในสถานการณ์ส่วนใหญ่ เราขอแนะนําให้คุณระบุตรรกะที่ชัดเจนยิ่งขึ้นซึ่งกําหนดว่าแถวใดจะถือว่าเป็นแถวสุดท้ายโดยใช้การดําเนินการเรียงลําดับบนตาราง
จากนั้นเลือกการแปลง เลือกคอลัมน์ ที่พบในกลุ่ม จัดการคอลัมน์ ของแท็บ หน้าแรก จากนั้นคุณสามารถเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณและลบส่วนที่เหลือออก
สุดท้าย ภายในกล่องโต้ตอบ เลือกคอลัมน์ ให้เลือกSale Keyคอลัมน์ , Customer Key, , Invoice Date Keyและ DescriptionQuantity คอลัมน์ แล้วเลือก ตกลง
ตัวอย่างโค้ดต่อไปนี้เป็นสคริปต์ 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 เพื่อกรองตารางและเก็บเฉพาะ 10 แถวสุดท้าย -
Table.SelectColumns: Power Query ใช้ผลลัพธ์ของTable.LastNโหนดและใช้การแปลงใหม่ที่เรียกว่าTable.SelectColumnsซึ่งเลือกคอลัมน์เฉพาะที่คุณต้องการเก็บไว้จากตาราง
สําหรับการประเมิน แบบสอบถามนี้ต้องดาวน์โหลดแถวและเขตข้อมูลทั้งหมดจาก fact_Sale ตาราง คิวรีนี้ใช้เวลาเฉลี่ย 6 นาทีและ 1 วินาทีในการประมวลผลในอินสแตนซ์มาตรฐานของกระแสข้อมูล Power BI (ซึ่งพิจารณาสําหรับการประเมินและการโหลดข้อมูลไปยังกระแสข้อมูล)
ตัวอย่างการพับคิวรีบางส่วน
หลังจากเชื่อมต่อกับฐานข้อมูลและนําทางไปยัง fact_Sale ตารางแล้ว คุณจะเริ่มต้นด้วยการเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณ เลือกการแปลง เลือกคอลัมน์ ที่พบภายในกลุ่ม จัดการคอลัมน์ จากแท็บ หน้าแรก การแปลงนี้ช่วยให้คุณสามารถเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณและลบส่วนที่เหลือได้อย่างชัดเจน
ภายในกล่องโต้ตอบ เลือกคอลัมน์ ให้เลือกSale Keyคอลัมน์ , Customer Key, , Invoice Date Keyและ DescriptionQuantity แล้วเลือก ตกลง
ตอนนี้คุณสร้างตรรกะที่เรียงลําดับตารางให้มียอดขายล่าสุดที่ด้านล่างของตาราง เลือก 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 เพื่อกรองตารางและเก็บเฉพาะ 10 แถวสุดท้าย
สําหรับการประเมิน คิวรีนี้ต้องดาวน์โหลดแถวทั้งหมดและเฉพาะฟิลด์ที่จําเป็นจาก fact_Sale ตารางเท่านั้น ใช้เวลาเฉลี่ย 3 นาที 4 วินาทีในการประมวลผลในอินสแตนซ์มาตรฐานของกระแสข้อมูล Power BI (ซึ่งพิจารณาการประเมินและการโหลดข้อมูลไปยังกระแสข้อมูล)
ตัวอย่างการพับคิวรีแบบเต็ม
หลังจากที่คุณเชื่อมต่อกับฐานข้อมูลและนําทางไปยัง fact_Sale ตารางแล้ว ให้เริ่มต้นด้วยการเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณ เลือกการแปลง เลือกคอลัมน์ ที่พบภายในกลุ่ม จัดการคอลัมน์ จากแท็บ หน้าแรก การแปลงนี้ช่วยให้คุณสามารถเลือกคอลัมน์ที่คุณต้องการเก็บไว้จากตารางของคุณและลบส่วนที่เหลือได้อย่างชัดเจน
ใน เลือกคอลัมน์ ให้เลือกSale Keyคอลัมน์ , Customer Key, , Invoice Date Keyและ DescriptionQuantity คอลัมน์ แล้วเลือก ตกลง
ตอนนี้คุณสร้างตรรกะที่เรียงลําดับตารางเพื่อให้มียอดขายล่าสุดที่ด้านบนของตาราง เลือก 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"
ตัวอย่างการพับคิวรีแบบเต็ม: การทําความเข้าใจการประเมินคิวรี
เมื่อตรวจสอบบานหน้าต่างขั้นตอนที่ใช้ โปรดทราบว่าตัวบ่งชี้การพับคิวรีกําลังแสดงให้เห็นว่าการแปลงที่คุณเพิ่ม เลือกคอลัมน์แถวที่เรียงลําดับ และ เก็บไว้ แถวบนสุด จะถูกทําเครื่องหมายเป็นขั้นตอนที่ได้รับการประเมินที่แหล่งข้อมูล
คุณสามารถคลิกขวาที่ขั้นตอนสุดท้ายของแบบสอบถาม ซึ่งเป็นขั้นตอนที่ชื่อว่า เก็บแถวบนสุด แล้วเลือกตัวเลือกที่อ่านว่า แผนแบบสอบถาม
คําขอนี้เป็นภาษาแม่ของแหล่งข้อมูลของคุณ ในกรณีนี้ ภาษานั้นคือ SQL และคําสั่งนี้แสดงถึงการร้องขอสําหรับแถวและเขตข้อมูลทั้งหมดจาก fact_Sale ตาราง
การปรึกษาคิวรีแหล่งข้อมูลนี้สามารถช่วยให้คุณเข้าใจเรื่องราวที่แผนคิวรีแบบเต็มพยายามสื่อได้ดียิ่งขึ้น:
-
Sql.Database: เชื่อมต่อกับฐานข้อมูลและส่งคําขอข้อมูลเมตาเพื่อทําความเข้าใจความสามารถของฐานข้อมูล -
Value.NativeQuery: แสดงถึงคําขอที่สร้างโดย Power Query เพื่อเติมเต็มคิวรี Power Query ส่งคําขอข้อมูลในคําสั่ง SQL ดั้งเดิมไปยังแหล่งข้อมูล สําหรับกรณีนี้ นั่นแสดงถึงการร้องขอเฉพาะเรกคอร์ด 10 อันดับแรกของfact_Saleตาราง โดยมีเฉพาะฟิลด์ที่จําเป็นหลังจากเรียงลําดับจากมากไปหาน้อยโดยใช้Sale Keyฟิลด์
Note
แม้ว่าจะไม่มีส่วนคําสั่งที่สามารถใช้เพื่อเลือกแถวล่างสุดของตารางในภาษา T-SQL แต่ก็มีส่วนคําสั่ง TOP ที่ดึงแถวบนสุดของตาราง
สําหรับการประเมิน คิวรีนี้จะดาวน์โหลดเพียง 10 แถว โดยมีเฉพาะฟิลด์ที่คุณร้องขอจาก fact_Sale ตารางเท่านั้น คิวรีนี้ใช้เวลาเฉลี่ย 31 วินาทีในการประมวลผลอินสแตนซ์มาตรฐานของกระแสข้อมูล Power BI (ซึ่งพิจารณาการประเมินและการโหลดข้อมูลไปยังกระแสข้อมูล)
การเปรียบเทียบประสิทธิภาพ
เพื่อให้เข้าใจถึงผลกระทบที่การพับคิวรีมีในคิวรีเหล่านี้ได้ดียิ่งขึ้น คุณสามารถรีเฟรชคิวรีของคุณ บันทึกเวลาที่ใช้ในการรีเฟรชแต่ละคิวรีอย่างสมบูรณ์ และเปรียบเทียบได้ บทความนี้แสดงเวลาการรีเฟรชโดยเฉลี่ยที่บันทึกโดยใช้กลไกการรีเฟรชกระแสข้อมูล Power BI ในขณะที่เชื่อมต่อกับสภาพแวดล้อม Azure Synapse Analytics เฉพาะที่มี DW2000c เป็นระดับบริการ
เวลารีเฟรชสําหรับแต่ละคิวรีมีดังนี้:
| ตัวอย่าง | ฉลาก | เวลาเป็นวินาที |
|---|---|---|
| ไม่มีการพับคิวรี | ไม่มีใคร | 361 |
| การพับคิวรีบางส่วน | Partial | 184 |
| การพับคิวรีแบบเต็ม | เต็ม | 31 |
บ่อยครั้งที่คิวรีที่พับกลับไปยังแหล่งข้อมูลอย่างสมบูรณ์มีประสิทธิภาพดีกว่าคิวรีที่คล้ายกันซึ่งไม่ได้พับกลับไปยังแหล่งข้อมูลอย่างสมบูรณ์ อาจมีสาเหตุหลายประการที่ทําให้เป็นเช่นนั้น เหตุผลเหล่านี้มีตั้งแต่ความซับซ้อนของการแปลงที่คิวรีของคุณดําเนินการ ไปจนถึงการเพิ่มประสิทธิภาพคิวรีที่นํามาใช้ที่แหล่งข้อมูลของคุณ เช่น ดัชนีและการประมวลผลเฉพาะ และทรัพยากรเครือข่าย อย่างไรก็ตาม มีกระบวนการหลักเฉพาะสองกระบวนการที่การพับคิวรีพยายามใช้เพื่อลดผลกระทบที่กระบวนการทั้งสองนี้มีกับ Power Query:
- ข้อมูลระหว่างทาง
- การแปลงที่ดําเนินการโดยกลไกจัดการ Power Query
ส่วนต่อไปนี้จะอธิบายผลกระทบที่กระบวนการทั้งสองนี้มีในแบบสอบถามที่กล่าวถึงก่อนหน้านี้
ข้อมูลระหว่างทาง
เมื่อคิวรีถูกดําเนินการ คิวรีจะพยายามดึงข้อมูลจากแหล่งข้อมูลเป็นขั้นตอนแรก ข้อมูลที่ดึงมาจากแหล่งข้อมูลถูกกําหนดโดยกลไกการพับคิวรี กลไกนี้ระบุขั้นตอนจากคิวรีที่สามารถถ่ายโอนไปยังแหล่งข้อมูลได้
ตารางต่อไปนี้แสดงจํานวนแถวที่ร้องขอจาก fact_Sale ตารางของฐานข้อมูล ตารางนี้ยังมีคําอธิบายสั้น ๆ ของคําสั่ง SQL ที่ส่งเพื่อร้องขอข้อมูลดังกล่าวจากแหล่งข้อมูล
| ตัวอย่าง | ฉลาก | แถวที่ร้องขอ | คำอธิบาย |
|---|---|---|---|
| ไม่มีการพับคิวรี | ไม่มีใคร | 3644356 | ขอเขตข้อมูลทั้งหมดและระเบียนทั้งหมดจาก fact_Sale ตาราง |
| การพับคิวรีบางส่วน | Partial | 3644356 | ร้องขอเรกคอร์ดทั้งหมด แต่เฉพาะฟิลด์ที่จําเป็นจาก fact_Sale ตารางหลังจากที่เรียงลําดับตาม Sale Key ฟิลด์ |
| การพับคิวรีแบบเต็ม | เต็ม | 10 | ขอเฉพาะฟิลด์ที่จําเป็นและเรกคอร์ด 10 อันดับแรกของ fact_Sale ตารางหลังจากจัดเรียงตามลําดับจากมากไปหาน้อยตาม Sale Key ฟิลด์ |
เมื่อคุณร้องขอข้อมูลจากแหล่งข้อมูล แหล่งข้อมูลจําเป็นต้องคํานวณผลลัพธ์สําหรับคําขอ แล้วส่งข้อมูลไปยังผู้ร้องขอ ในขณะที่มีการกล่าวถึงทรัพยากรการประมวลผลแล้ว ทรัพยากรเครือข่ายของการย้ายข้อมูลจากแหล่งข้อมูลไปยัง Power Query จากนั้นให้ Power Query สามารถรับข้อมูลได้อย่างมีประสิทธิภาพและเตรียมพร้อมสําหรับการแปลงที่เกิดขึ้นภายในเครื่องอาจใช้เวลาสักครู่ขึ้นอยู่กับขนาดของข้อมูล
สําหรับตัวอย่างที่แสดง Power Query ต้องร้องขอมากกว่า 3.6 ล้านแถวจากแหล่งข้อมูลสําหรับตัวอย่างการพับคิวรีแบบไม่มีและการพับคิวรีบางส่วน สําหรับตัวอย่างการพับคิวรีแบบเต็ม จะร้องขอเพียง 10 แถวเท่านั้น สําหรับฟิลด์ที่ร้องขอตัวอย่างการพับแบบไม่มีคิวรีร้องขอฟิลด์ที่พร้อมใช้งานทั้งหมดจากตาราง ทั้งตัวอย่างการพับคิวรีบางส่วนและตัวอย่างการพับคิวรีแบบเต็มส่งคําขอสําหรับฟิลด์ที่ต้องการเท่านั้น
ข้อควรระวัง
เราขอแนะนําให้คุณใช้โซลูชันการรีเฟรชแบบเพิ่มหน่วยที่ใช้การพับคิวรีสําหรับคิวรีหรือตารางที่มีข้อมูลจํานวนมาก การรวมผลิตภัณฑ์ต่างๆ ของ Power Query ใช้การหมดเวลาเพื่อยุติคิวรีที่ทํางานเป็นเวลานาน แหล่งข้อมูลบางแห่งยังใช้การหมดเวลาในเซสชันที่ทํางานเป็นเวลานาน โดยพยายามดําเนินการสืบค้นที่มีราคาแพงกับเซิร์ฟเวอร์ของตน ข้อมูลเพิ่มเติม: การใช้การ รีเฟรชแบบเพิ่มหน่วยกับกระแสข้อมูล และการ รีเฟรชแบบเพิ่มหน่วยสําหรับแบบจําลองความหมาย
การแปลงที่ดําเนินการโดยกลไกจัดการ Power Query
บทความนี้แสดงวิธีที่คุณสามารถใช้ แผนคิวรี เพื่อทําความเข้าใจวิธีการประเมินคิวรีของคุณให้ดียิ่งขึ้น ภายในแผนคิวรี คุณสามารถดูโหนดที่แน่นอนของการดําเนินการแปลงที่ดําเนินการโดยกลไกจัดการ Power Query
ตารางต่อไปนี้แสดงโหนดจากแผนคิวรีของคิวรีก่อนหน้านี้ที่จะได้รับการประเมินโดยกลไกจัดการ Power Query
| ตัวอย่าง | ฉลาก | โหนดการแปลงกลไกจัดการ Power Query |
|---|---|---|
| ไม่มีการพับคิวรี | ไม่มีใคร |
Table.LastN, Table.SelectColumns |
| การพับคิวรีบางส่วน | Partial | 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 สําหรับขั้นตอนเฉพาะ พิจารณาปรับเปลี่ยนแบบสอบถามที่มีอยู่ของคุณโดยจัดเรียงขั้นตอนของคุณใหม่ จากนั้นตรวจสอบแผนคิวรีของขั้นตอนสุดท้ายของคิวรีของคุณอีกครั้ง และดูว่าแผนคิวรีดูดีกว่าแผนก่อนหน้าหรือไม่ ตัวอย่างเช่น แผนการสืบค้นใหม่มีโหนดน้อยกว่าแผนก่อนหน้า และโหนดส่วนใหญ่เป็นโหนด "สตรีมมิ่ง" ไม่ใช่ "การสแกนแบบเต็ม" สําหรับแหล่งข้อมูลที่สนับสนุนการพับ โหนดใดๆ ในแผนคิวรีนอกเหนือจาก
Value.NativeQueryโหนดการเข้าถึงแหล่งข้อมูลจะแสดงการแปลงที่ไม่ได้พับ - เมื่อพร้อมใช้งาน คุณสามารถใช้ตัวเลือก ดูคิวรีดั้งเดิม (หรือ ดูคิวรีแหล่งข้อมูล) เพื่อให้แน่ใจว่าคิวรีของคุณสามารถพับกลับไปยังแหล่งข้อมูลได้ ถ้าตัวเลือกนี้ถูกปิดใช้งานสําหรับขั้นตอนของคุณ และคุณกําลังใช้แหล่งข้อมูลที่เปิดใช้งานตามปกติ คุณได้สร้างขั้นตอนที่หยุดการพับคิวรี ถ้าคุณกําลังใช้แหล่งข้อมูลที่ไม่สนับสนุนตัวเลือกนี้ คุณสามารถพึ่งพาตัวบ่งชี้การพับคิวรีและแผนคิวรีได้
- ใช้เครื่องมือวินิจฉัยคิวรีเพื่อทําความเข้าใจคําขอที่ส่งไปยังแหล่งข้อมูลของคุณให้ดียิ่งขึ้นเมื่อความสามารถในการพับคิวรีพร้อมใช้งานสําหรับตัวเชื่อมต่อ
- เมื่อคุณรวมข้อมูลที่มาจากการใช้ตัวเชื่อมต่อหลายตัว Power Query จะพยายามผลักดันงานให้มากที่สุดเท่าที่จะเป็นไปได้ไปยังแหล่งข้อมูลทั้งสองในขณะที่สอดคล้องกับระดับความเป็นส่วนตัวที่กําหนดไว้สําหรับแต่ละแหล่งข้อมูล
- อ่านบทความเกี่ยวกับ ระดับความเป็นส่วนตัว เพื่อป้องกันการสืบค้นของคุณไม่ให้ทํางานกับข้อผิดพลาดของไฟร์วอลล์ความเป็นส่วนตัวของข้อมูล
- ใช้เครื่องมืออื่นๆ เพื่อตรวจสอบการพับคิวรีจากมุมมองของคําขอที่ได้รับจากแหล่งข้อมูล ตามตัวอย่างในบทความนี้ คุณสามารถใช้ Microsoft SQL Server Profiler เพื่อตรวจสอบคําขอที่ส่งโดย Power Query และได้รับโดย Microsoft SQL Server
- ถ้าคุณเพิ่มขั้นตอนใหม่ลงในคิวรีที่พับทั้งหมด และขั้นตอนใหม่จะพับด้วย Power Query อาจส่งคําขอใหม่ไปยังแหล่งข้อมูลแทนการใช้เวอร์ชันแคชของผลลัพธ์ก่อนหน้า ในทางปฏิบัติ กระบวนการนี้อาจส่งผลให้การดําเนินการที่ดูเหมือนง่ายกับข้อมูลจํานวนเล็กน้อยซึ่งใช้เวลาในการรีเฟรชในการแสดงตัวอย่างนานกว่าที่คาดไว้ การรีเฟรชที่นานขึ้นนี้เกิดจาก Power Query สอบถามแหล่งข้อมูลใหม่แทนที่จะทํางานกับสําเนาข้อมูลภายในเครื่อง