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

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

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

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

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

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

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

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

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

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

ไปที่ปุ่มข้อผิดพลาด

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

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

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

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

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

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

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

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

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

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

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

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

ข้อผิดพลาดของ Formula Firewall คิวรีจะอ้างอิงคิวรีหรือขั้นตอนอื่นๆ ดังนั้นจึงอาจไม่เข้าถึงแหล่งข้อมูลโดยตรง

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

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

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

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

หมายเหตุ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

แทนที่กล่องโต้ตอบข้อผิดพลาด

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

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

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

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

เก็บข้อผิดพลาดไว้บนการแท็บหน้าแรก

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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