แชร์ผ่าน


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

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

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

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

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

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

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

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

สําคัญ

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

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

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

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

สกรีนช็อตของบานหน้าต่าง เก็บแถวล่างสุด ที่คุณป้อนค่า 10 ภายในกล่องโต้ตอบ เก็บแถวล่างสุด

เคล็ดลับ

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

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

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

สุดท้าย ภายในกล่องโต้ตอบ เลือกคอลัมน์ ให้เลือก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

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

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

สกรีนช็อตของแผนคิวรีสําหรับคิวรีที่สร้างขึ้นด้วยหลายโหนด ซึ่งสองโหนดอยู่ในสี่เหลี่ยมผืนผ้าที่แสดงถึงโหนดที่ประเมินโดยกลไกจัดการ 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 เพื่อกรองตารางและเก็บเฉพาะ 10 แถวสุดท้าย
  • Table.SelectColumns: Power Query ใช้ผลลัพธ์ของ Table.LastN โหนดและใช้การแปลงใหม่ที่เรียกว่า Table.SelectColumnsซึ่งเลือกคอลัมน์เฉพาะที่คุณต้องการเก็บไว้จากตาราง

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

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

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

สกรีนช็อตของ Ribbon หน้าแรก ที่คุณเลือกการแปลง เลือกคอลัมน์ สําหรับตัวอย่างการพับคิวรีบางส่วน

ภายในกล่องโต้ตอบ เลือกคอลัมน์ ให้เลือกSale Keyคอลัมน์ , Customer Key, , Invoice Date Keyและ DescriptionQuantity แล้วเลือก ตกลง

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

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

สกรีนช็อตของเมนูตามบริบทที่คุณจัดเรียงฟิลด์ 'Sale Key' ของตารางตามลําดับจากน้อยไปมาก

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

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

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

สกรีนช็อตของกล่องโต้ตอบเก็บแถวล่างสุดโดยป้อนค่า 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 โหนด

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

ภาพหน้าจอของเมนูบริบทของฟิลด์ 'Sale Key' โดยเน้นตัวเลือกเรียงลําดับจากมากไปหาน้อย

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

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

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

สกรีนช็อตของกล่องโต้ตอบเก็บแถวบนสุดโดยป้อนค่า 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.Descending}}),
    #"Kept top rows" = Table.FirstN(#"Sorted rows", 10)
in
    #"Kept top rows"

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

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

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

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

สกรีนช็อตของแผนคิวรีที่แสดงเนื้อหาของ Value.NativeQuery

คําขอนี้เป็นภาษาแม่ของแหล่งข้อมูลของคุณ ในกรณีนี้ ภาษานั้นคือ 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

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

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

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