แชร์ผ่าน


แก้ไขปัญหาแบบจําลอง DirectQuery ใน Power BI Desktop

บทความนี้ช่วยให้คุณวินิจฉัยปัญหาด้านประสิทธิภาพการทํางานกับแบบจําลองข้อมูล Power BI DirectQuery ที่คุณพัฒนาใน Power BI Desktop หรือบริการของ Power BI บทความนี้ยังอธิบายวิธีการรับข้อมูลรายละเอียดเพื่อช่วยให้คุณปรับรายงานให้เหมาะสม

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

ถ้าคุณไม่พบปัญหาด้านประสิทธิภาพการทํางานใน Power BI Desktop คุณสามารถเน้นการตรวจสอบของคุณกับข้อมูลเฉพาะของรายงานในบริการของ Power BI ได้

คุณควรพยายามแยกปัญหาให้กับแต่ละวิชวลก่อนที่คุณจะดูวิชวลจํานวนมากในหน้าเดียว

ตัววิเคราะห์ประสิทธิภาพ

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

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

แม้ว่าจะไม่มีการติดตามจากแหล่งข้อมูล คุณสามารถดูคิวรีที่ Power BI ส่งไป พร้อมกับเวลาการดําเนินการของคิวรีเหล่านั้นได้

หมายเหตุ

สําหรับแหล่งข้อมูลที่ใช้ DirectQuery SQL ตัววิเคราะห์ประสิทธิภาพแสดงคิวรีสําหรับ SQL Server, Oracle และแหล่งข้อมูล Teradata เท่านั้น

ไฟล์การติดตาม

ตามค่าเริ่มต้น เหตุการณ์บันทึก Power BI Desktop ในระหว่างเซสชันที่กําหนดให้กับไฟล์การติดตามที่เรียกว่า FlightRecorderCurrent.trc คุณสามารถค้นหาไฟล์การติดตามสําหรับเซสชันปัจจุบันในโฟลเดอร์ AppData สําหรับผู้ใช้ปัจจุบัน ที่ <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces

แหล่งข้อมูล DirectQuery ต่อไปนี้เขียนคิวรีทั้งหมดที่ Power BI ส่งไปยังไฟล์การติดตาม บันทึกอาจสนับสนุนแหล่งข้อมูล DirectQuery อื่นในอนาคต

  • SQL Server
  • ฐานข้อมูล Azure SQL
  • Azure Synapse Analytics (ชื่อเดิมคือ SQL Data Warehouse)
  • Oracle
  • Teradata
  • SAP HANA

เมื่อต้องการเข้าถึงโฟลเดอร์ของไฟล์การติดตามใน Power BI Desktop ได้อย่างง่ายดาย ให้เลือก ไฟล์>ตัวเลือกและการตั้งค่า>ตัวเลือก แล้วเลือก การวินิจฉัย

Screenshot of the Diagnostics section of the Power BI Desktop Options screen with the link to open the crash dump/traces folder.

ภายใต้คอลเลกชันบันทึกข้อมูลการหยุดทํางาน ให้เลือกลิงก์เปิดโฟลเดอร์บันทึกข้อมูลหยุดทํางาน/การติดตามเพื่อเปิด<โฟลเดอร์ User>\AppData\Local\Microsoft\Power BI Desktop\Traces

นําทางไปยังโฟลเดอร์หลักของโฟลเดอร์นั้น แล้วเปิด โฟลเดอร์ AnalysisServicesWorkspaces ซึ่งประกอบด้วยโฟลเดอร์ย่อยของพื้นที่ทํางานหนึ่งรายการสําหรับทุก ๆ อินสแตนซ์ที่เปิดของ Power BI Desktop ชื่อโฟลเดอร์ย่อยมีคําต่อท้ายจํานวนเต็ม เช่น AnalysisServicesWorkspace2058279583

แต่ละ โฟลเดอร์ AnalysisServicesWorkspace ประกอบด้วย โฟลเดอร์ย่อยข้อมูลที่ ประกอบด้วยไฟล์ การติดตาม FlightRecorderCurrent.trc สําหรับเซสชัน Power BI ปัจจุบัน โฟลเดอร์นี้จะหายไปเมื่อสิ้นสุดเซสชัน Power BI Desktop ที่เกี่ยวข้อง

คุณสามารถเปิดไฟล์การติดตามโดยใช้เครื่องมือตัวสร้างโพรไฟล์ของ SQL Server ซึ่งคุณสามารถรับเป็นส่วนหนึ่งของการดาวน์โหลดฟรีของ SQL Server Management Studio (SSMS) ได้ หลังจากที่คุณดาวน์โหลดและติดตั้ง SQL Server Management Studio แล้ว ให้เปิดตัวสร้างโพรไฟล์ของ SQL Server

Screenshot of SQL Server Profiler window with no highlighted traces.

วิธีการเปิดไฟล์การติดตาม

  1. ในตัวสร้างโพรไฟล์ของเซิร์ฟเวอร์ SQL เลือกไฟล์>เปิด>ไฟล์การติดตาม

  2. นําทางไปยังหรือใส่เส้นทางไปยังไฟล์การติดตามสําหรับเซสชัน Power BI ปัจจุบัน เช่น <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data และเปิด FlightRecorderCurrent.trc

SQL Server Profiler แสดงเหตุการณ์ทั้งหมดจากเซสชันปัจจุบัน สกรีนช็อตต่อไปนี้เน้นกลุ่มของเหตุการณ์สําหรับคิวรี แต่ละกลุ่มคิวรีมีเหตุการณ์ต่อไปนี้:

  • Query Beginเหตุการณ์ และ Query End ซึ่งแสดงจุดเริ่มต้นและสิ้นสุดของคิวรี DAX ที่สร้างขึ้นโดยการเปลี่ยนแปลงวิชวลหรือตัวกรองใน UI ของ Power BI หรือจากการกรองหรือการแปลงข้อมูลในตัวแก้ไข Power Query

  • เหตุการณ์ และ DirectQuery End อย่างน้อยหนึ่งคู่ DirectQuery Begin ซึ่งแสดงคิวรีที่ถูกส่งไปยังแหล่งข้อมูลต้นแบบเป็นส่วนหนึ่งของการประเมินผลคิวรี DAX

Screenshot of SQL Server Profiler with highlighted Query Begin and Query End events.

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

คอลัมน์ต่อไปนี้ก็น่าสนใจเช่นกัน:

  • ข้อมูลข้อความ: รายละเอียดข้อความของเหตุการณ์ สําหรับ Query Begin เหตุการณ์ และ Query End รายละเอียดคือคิวรี DAX สําหรับ DirectQuery Begin เหตุการณ์ และ DirectQuery End รายละเอียดคือคิวรี SQL ที่ส่งไปยังแหล่งข้อมูลต้นแบบ ค่า TextData สําหรับเหตุการณ์ที่เลือกในปัจจุบันจะปรากฏขึ้นในบานหน้าต่างที่ด้านล่างของหน้าจอ
  • เวลาสิ้นสุด: เวลาเมื่อเหตุการณ์เสร็จสมบูรณ์
  • ระยะเวลาระยะเวลาใช้เวลาในการเรียกใช้คิวรี DAX หรือ SQL ในหน่วยมิลลิวินาที
  • ข้อผิดพลาด: ไม่ว่ามีข้อผิดพลาดเกิดขึ้นหรือไม่ ในกรณีนี้เหตุการณ์ที่แสดงเป็นสีแดง

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

ทําตามวิธีการนี้เพื่อจับภาพการติดตามเพื่อช่วยในการวินิจฉัยปัญหาด้านประสิทธิภาพการทํางานที่อาจเกิดขึ้น:

  1. เปิดเซสชัน Power BI Desktop เดียวเพื่อหลีกเลี่ยงความสับสนของโฟลเดอร์พื้นที่ทํางานหลายรายการ

  2. ทําชุดของการกระทําที่น่าสนใจใน Power BI Desktop รวมถึงการดําเนินการเพิ่มเติมบางอย่าง เพื่อให้แน่ใจว่าเหตุการณ์ที่น่าสนใจจะใส่ลงในไฟล์การติดตาม

  3. เปิด SQL Server Profiler และตรวจสอบการติดตาม โปรดทราบว่าการปิด Power BI Desktop จะลบไฟล์การติดตาม นอกจากนี้ การดําเนินการเพิ่มเติมใน Power BI Desktop จะไม่ปรากฏขึ้นทันที คุณต้องปิดและเปิดไฟล์การติดตามใหม่เพื่อดูเหตุการณ์ใหม่

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

รูปแบบคิวรีและคิวรี่ย่อย

รูปแบบทั่วไปของคิวรี Power BI Desktop คือการใช้การคิวรีย่อยสําหรับแต่ละตารางแบบจําลองที่การอ้างอิงคิวรี คิวรีตัวแก้ไข Power Query จะกําหนดคิวรีการเลือกย่อย ตัวอย่างเช่น สมมติว่าคุณมีตาราง TPC DS ต่อไปนี้ในฐานข้อมูลเชิงสัมพันธ์ของ SQL Server:

Screenshot of a Power BI Desktop model view diagram that shows the related Item, Web_Sales, Customer and Date-dim TPC-DS tables.

ในวิชวล Power BI นิพจน์ต่อไปนี้จะ SalesAmount กําหนดหน่วยวัด:


SalesAmount = SUMX(Web_Sales, [ws_sales_price] * [ws_quantity])

Screenshot of a Power BI Desktop stacked column chart that displays sales amount by category.

การรีเฟรชวิชวลจะสร้างคิวรี T-SQL ในรูปภาพต่อไปนี้ มีการคิวรีย่อยสามแบบWeb_Salesสําหรับตารางแบบจําลอง , ItemและDate_dim แต่ละคิวรีจะส่งกลับคอลัมน์ตารางแบบจําลองทั้งหมด แม้ว่าการอ้างอิงวิชวลจะอ้างอิงเพียงสี่คอลัมน์เท่านั้น

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

เหตุผลหนึ่งที่ Power BI ใช้รูปแบบนี้คือ เพื่อให้คุณสามารถกําหนดคิวรี Power Query เพื่อใช้คําสั่งคิวรีที่เฉพาะเจาะจงได้ Power BI ใช้คิวรีตามที่ระบุไว้ โดยไม่ต้องพยายามเขียนใหม่ รูปแบบนี้จะจํากัดการใช้คําสั่งคิวรีที่ใช้ Common Table Expressions (CTEs) และ Stored Procedure คุณไม่สามารถใช้คําสั่งเหล่านี้ในการคิวรีย่อย

Screenshot of a T-SQL query that shows embedded subqueries, one for each model table.

ประสิทธิภาพของเกตเวย์

สําหรับข้อมูลเกี่ยวกับการแก้ไขปัญหาประสิทธิภาพการทํางานของเกตเวย์ ดูแก้ไขปัญหาเกตเวย์ - Power BI

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับ DirectQuery โปรดดูทรัพยากรต่อไปนี้:

คำถาม ลองถามชุมชน Power BI