แชร์ผ่าน


การจัดการกับข้อผิดพลาดใน Power Query

ใน Power Query คุณสามารถพบข้อผิดพลาดสองชนิด:

  • ข้อผิดพลาดระดับขั้นตอน
  • ข้อผิดพลาดระดับเซลล์

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

ข้อผิดพลาดระดับขั้นตอน

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

ภาพหน้าจอของข้อผิดพลาดระดับขั้นตอนซึ่งไม่พบคอลัมน์

  • เหตุผลของข้อผิดพลาด: ส่วนแรกก่อนเครื่องหมายทวิภาค ในตัวอย่างก่อนหน้านี้ เหตุผลของข้อผิดพลาดคือ Expression.Error
  • ข้อความแสดงข้อผิดพลาด: ส่วนที่อยู่หลังจากเหตุผลโดยตรง ในตัวอย่างก่อนหน้านี้ ข้อผิดพลาดคือไม่พบคอลัมน์ 'คอลัมน์' ของตาราง
  • รายละเอียดข้อผิดพลาด: ส่วนที่อยู่หลังรายละเอียด: สตริงโดยตรง ในตัวอย่างก่อนหน้านี้ รายละเอียดของข้อผิดพลาดคือ คอลัมน์

Power Query Online แสดงรายละเอียดที่แตกต่างกันเล็กน้อย รายละเอียดของข้อผิดพลาดยังคงเป็น คอลัมน์ แต่ข้อความแสดงข้อผิดพลาดออนไลน์ยังประกอบด้วยเหตุผลของข้อผิดพลาด (Expression.Error) และรหัสข้อผิดพลาด (10224)

สกรีนช็อตของข้อผิดพลาดในระดับขั้นตอนออนไลน์ที่ไม่พบคอลัมน์

ข้อผิดพลาดในระดับขั้นตอนทั่วไป

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

ภาพหน้าจอของข้อความแสดงข้อผิดพลาดที่มีปุ่มแสดงรายละเอียดที่เน้น

ไม่พบแหล่งข้อมูล - DataSource.NotFound

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

ตัวอย่าง: คุณมีคิวรีจากไทล์ข้อความที่อยู่ในไดรฟ์ D และสร้างขึ้นโดยผู้ใช้ A ผู้ใช้ A แชร์คิวรีกับผู้ใช้ B ซึ่งไม่มีการเข้าถึงไดรฟ์ D เมื่อบุคคลนี้พยายามดําเนินการคิวรี พวกเขาได้รับ DataSource.NotFound เนื่องจากไม่มีไดรฟ์ D ในสภาพแวดล้อมของพวกเขา

สกรีนช็อตของข้อผิดพลาดแหล่งข้อมูลที่ไม่พบไฟล์เนื่องจากไม่มีไดรฟ์ D ในสภาพแวดล้อมปัจจุบัน

วิธีแก้ไขที่เป็นไปได้: คุณสามารถเปลี่ยนเส้นทางไฟล์ของไฟล์ข้อความเป็นเส้นทางที่ผู้ใช้ทั้งสองมีสิทธิ์เข้าถึงได้ ในฐานะที่เป็นผู้ใช้ B คุณสามารถเปลี่ยนเส้นทางของไฟล์เป็นสําเนาภายในเครื่องของไฟล์ข้อความเดียวกัน

ไม่พบคอลัมน์ของตาราง

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

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

ภาพหน้าจอของข้อผิดพลาดนิพจน์ที่ไม่พบคอลัมน์ของตารางเนื่องจากมีการเปลี่ยนแปลงชื่อคอลัมน์ด้วยตนเอง

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

ข้อผิดพลาดในระดับขั้นตอนทั่วไปอื่น ๆ

เมื่อรวมหรือผสานข้อมูลระหว่างแหล่งข้อมูลหลายแหล่ง คุณอาจได้รับข้อผิดพลาด Formula.Firewall เช่นรายการที่แสดงในรูปภาพต่อไปนี้

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

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

ข้อผิดพลาดระดับเซลล์

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

สกรีนช็อตกําลังแสดงข้อความแสดงข้อผิดพลาดโดยการเลือกช่องว่างในเซลล์ตารางที่มีข้อผิดพลาด

หมายเหตุ

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

การจัดการข้อผิดพลาดในระดับเซลล์

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

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

สกรีนช็อตที่แสดงข้อผิดพลาดของรูปแบบข้อมูลที่มีข้อผิดพลาดไม่สามารถแปลงเป็นชนิดข้อมูลในบานหน้าต่างข้อผิดพลาดได้

ลบข้อผิดพลาด

หากต้องการลบแถวที่มีข้อผิดพลาดใน Power Query ก่อนอื่นให้เลือกคอลัมน์ที่มีข้อผิดพลาด บนแท็บ หน้าแรก ในกลุ่ม ลดแถว ให้เลือก ลบแถว จากเมนูดรอปดาวน์ เลือกลบข้อผิดพลาด

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

ผลลัพธ์ของการดําเนินการดังกล่าวจะให้ตารางต่อไปนี้แก่คุณ

สกรีนช็อตของตารางที่มีห้าแถวก่อนหน้านี้มีแถวที่มีข้อผิดพลาดที่ลบออก โดยทิ้งแถวสี่แถวในตารางไว้

แทนที่ข้อผิดพลาด

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

สกรีนช็อตของปุ่มแทนที่ข้อผิดพลาดบนแท็บแปลง

ในกล่องโต้ตอบ แทนที่ข้อผิดพลาด ให้ใส่ค่า 10 เนื่องจากคุณต้องการแทนที่ข้อผิดพลาดทั้งหมดด้วยค่า 10

สกรีนช็อตของกล่องโต้ตอบแทนที่ข้อผิดพลาดด้วยค่าที่ตั้งค่าเป็น 10

ผลลัพธ์ของการดําเนินการดังกล่าวจะให้ตารางต่อไปนี้แก่คุณ

สกรีนช็อตของตารางที่แถวที่สามมีข้อผิดพลาดในคอลัมน์ยอดขายในขณะนี้มีข้อผิดพลาดถูกแทนที่ด้วยค่า 10

เก็บข้อผิดพลาด

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

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

ผลลัพธ์ของการดําเนินการดังกล่าวจะให้ตารางต่อไปนี้แก่คุณ

สกรีนช็อตของตารางสุดท้ายที่เก็บเฉพาะแถวที่มีข้อผิดพลาด

ข้อผิดพลาดระดับเซลล์ทั่วไป

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

ข้อผิดพลาดในการแปลงชนิดข้อมูล

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

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

สกรีนช็อตที่แสดงรายละเอียดข้อผิดพลาดไม่สามารถแปลงเป็นชนิดข้อมูลได้

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

ข้อผิดพลาดในการดําเนินการ

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

ตัวอย่าง: คุณต้องการสร้างคอลัมน์แบบกําหนดเองสําหรับคิวรีของคุณโดยการสร้างสตริงข้อความที่มีวลี "Total Sales: " เชื่อมเข้าด้วยกันกับค่าจากคอลัมน์ Sales ข้อผิดพลาดเกิดขึ้นเนื่องจากการดําเนินการเรียงต่อกันสนับสนุนเฉพาะคอลัมน์ข้อความและไม่รองรับตัวเลขเท่านั้น

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

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

สกรีนช็อตของตารางที่มีคอลัมน์ยอดขายที่แปลงจากตัวเลขเป็นชนิดข้อความและคอลัมน์ใหม่ที่มีนิพจน์ทั้งสองรายการ

ค่าแบบซ้อนกันที่แสดงเป็นข้อผิดพลาด

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

สกรีนช็อตของข้อผิดพลาดสําหรับค่าที่ซ้อนกันซึ่งทริกเกอร์โดยไฟร์วอลล์สูตรที่เกิดขึ้น

Expression.Error: We cannot return a value of type {value} in this context

Details: In the past we would have returned a text value of {value}, but we now return this error. Please see https://go.microsoft.com/fwlink/?linkid=2099726 for more information.

ข้อผิดพลาดเหล่านี้มักจะเกิดขึ้นจากสองสาเหตุ:

  • เมื่อไฟร์วอลล์ความเป็นส่วนตัวของข้อมูลบัฟเฟอร์แหล่งข้อมูล ค่าที่ไม่ใช่สเกลที่ซ้อนกันจะถูกแปลงเป็นข้อผิดพลาดโดยอัตโนมัติ
  • เมื่อคอลัมน์ที่กําหนดไว้ด้วย Any ชนิดข้อมูลมีค่าที่ไม่ใช่แบบขยาย ค่าดังกล่าวจะถูกรายงานเป็นข้อผิดพลาดในระหว่างการโหลด (เช่น ในสมุดงานใน Excel หรือแบบจําลองข้อมูลใน Power BI Desktop)

วิธีแก้ไขปัญหาที่เป็นไปได้:

  • ลบคอลัมน์ที่มีข้อผิดพลาดออก หรือตั้งค่าชนิดข้อมูลที่ไม่ใช่Any สําหรับคอลัมน์ดังกล่าว
  • เปลี่ยนระดับความเป็นส่วนตัวของแหล่งข้อมูลที่เกี่ยวข้องกับแหล่งข้อมูลที่อนุญาตให้รวมเข้าด้วยกันโดยไม่ต้องบัฟเฟอร์
  • ลดรูปแบบโครงสร้างตารางก่อนที่จะทําการผสานเพื่อกําจัดคอลัมน์ที่มีค่าที่มีโครงสร้างที่ซ้อนกัน (เช่น ตาราง ระเบียน หรือรายการ)