หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ใน Power Query คุณสามารถพบข้อผิดพลาดสองชนิด:
- ข้อผิดพลาดระดับขั้นตอน
- ข้อผิดพลาดระดับเซลล์
บทความนี้มีคําแนะนําสําหรับวิธีแก้ไขข้อผิดพลาดทั่วไปที่คุณอาจพบในแต่ละระดับ และอธิบายเหตุผลของข้อผิดพลาด ข้อความแสดงข้อผิดพลาด และรายละเอียดข้อผิดพลาดสําหรับแต่ละระดับ
ข้อผิดพลาดระดับขั้นตอน
ข้อผิดพลาดระดับขั้นตอนป้องกันไม่ให้คิวรีโหลด และแสดงคอมโพเนนต์ข้อผิดพลาดในบานหน้าต่างสีเหลือง
- เหตุผลของข้อผิดพลาด: ส่วนแรกก่อนเครื่องหมายทวิภาค ในตัวอย่างก่อนหน้านี้ เหตุผลของข้อผิดพลาดคือ Expression.Error
- ข้อความแสดงข้อผิดพลาด: ส่วนที่อยู่หลังจากเหตุผลโดยตรง ในตัวอย่างก่อนหน้านี้ ข้อผิดพลาดคือไม่พบคอลัมน์ 'คอลัมน์' ของตาราง
- รายละเอียดข้อผิดพลาด: ส่วนที่อยู่หลังรายละเอียด: สตริงโดยตรง ในตัวอย่างก่อนหน้านี้ รายละเอียดของข้อผิดพลาดคือ คอลัมน์
Power Query Online แสดงรายละเอียดที่แตกต่างกันเล็กน้อย รายละเอียดของข้อผิดพลาดยังคงเป็น คอลัมน์ แต่ข้อความแสดงข้อผิดพลาดออนไลน์ยังประกอบด้วยเหตุผลของข้อผิดพลาด (Expression.Error) และรหัสข้อผิดพลาด (10224)
ข้อผิดพลาดในระดับขั้นตอนทั่วไป
ในทุกกรณี เราขอแนะนําให้คุณดูรายละเอียดเหตุผลของข้อผิดพลาด ข้อความแสดงข้อผิดพลาด และรายละเอียดข้อผิดพลาดเพื่อทําความเข้าใจสิ่งที่ทําให้เกิดข้อผิดพลาด คุณสามารถเลือกปุ่ม แสดงรายละเอียด (ถ้ามี) เพื่อแสดงรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดได้
ไม่พบแหล่งข้อมูล - DataSource.NotFound
ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อผู้ใช้ไม่สามารถเข้าถึงแหล่งข้อมูลได้ ผู้ใช้ไม่มีข้อมูลประจําตัวที่ถูกต้องในการเข้าถึงแหล่งข้อมูล หรือแหล่งข้อมูลถูกย้ายไปยังตําแหน่งอื่น
ตัวอย่าง: คุณมีคิวรีจากไทล์ข้อความที่อยู่ในไดรฟ์ D และสร้างขึ้นโดยผู้ใช้ A ผู้ใช้ A แชร์คิวรีกับผู้ใช้ B ซึ่งไม่มีการเข้าถึงไดรฟ์ D เมื่อบุคคลนี้พยายามดําเนินการคิวรี พวกเขาได้รับ DataSource.NotFound เนื่องจากไม่มีไดรฟ์ D ในสภาพแวดล้อมของพวกเขา
วิธีแก้ไขที่เป็นไปได้: คุณสามารถเปลี่ยนเส้นทางไฟล์ของไฟล์ข้อความเป็นเส้นทางที่ผู้ใช้ทั้งสองมีสิทธิ์เข้าถึงได้ ในฐานะที่เป็นผู้ใช้ B คุณสามารถเปลี่ยนเส้นทางของไฟล์เป็นสําเนาภายในเครื่องของไฟล์ข้อความเดียวกัน
ไม่พบคอลัมน์ของตาราง
ข้อผิดพลาดนี้มักจะถูกทริกเกอร์เมื่อขั้นตอนทําการอ้างอิงโดยตรงไปยังชื่อคอลัมน์ที่ไม่มีอยู่ในคิวรี
ตัวอย่าง: คุณมีคิวรีจากไฟล์ข้อความซึ่งหนึ่งในชื่อคอลัมน์คือ คอลัมน์ ในคิวรีของคุณ คุณมีขั้นตอนที่เปลี่ยนชื่อคอลัมน์นั้นเป็นวันที่ แต่มีการเปลี่ยนแปลงในไฟล์ข้อความต้นฉบับ และไม่มีส่วนหัวคอลัมน์ที่มีชื่อ คอลัมน์ อีกต่อไป เนื่องจากคอลัมน์ถูกเปลี่ยนเป็น วันที่ ด้วยตนเอง Power Query ไม่พบส่วนหัวของคอลัมน์ที่ชื่อ ว่า Column ดังนั้นจึงไม่สามารถเปลี่ยนชื่อคอลัมน์ใดๆ ได้ ซึ่งแสดงข้อผิดพลาดที่แสดงในรูปต่อไปนี้
โซลูชันที่เป็นไปได้: มีหลายวิธีแก้ไขปัญหาสําหรับกรณีนี้ แต่ทั้งหมดขึ้นอยู่กับสิ่งที่คุณต้องการทํา สําหรับตัวอย่างนี้ เนื่องจากส่วนหัวของคอลัมน์ วันที่ ที่ถูกต้องแล้วมาจากไฟล์ข้อความของคุณ คุณเพียงแค่ลบขั้นตอนที่เปลี่ยนชื่อคอลัมน์ออก การเปลี่ยนแปลงนี้อนุญาตให้คิวรีของคุณทํางานโดยไม่มีข้อผิดพลาดนี้
ข้อผิดพลาดในระดับขั้นตอนทั่วไปอื่น ๆ
เมื่อรวมหรือผสานข้อมูลระหว่างแหล่งข้อมูลหลายแหล่ง คุณอาจได้รับข้อผิดพลาด Formula.Firewall เช่นรายการที่แสดงในรูปภาพต่อไปนี้
ข้อผิดพลาดนี้เกิดขึ้นจากหลายสาเหตุ เช่น ระดับความเป็นส่วนตัวของข้อมูลระหว่างแหล่งข้อมูล หรือวิธีการรวมหรือการรวมแหล่งข้อมูลเหล่านี้ สําหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการวิเคราะห์ปัญหานี้ ให้ไปที่ ไฟร์วอลล์ความเป็นส่วนตัวของข้อมูล
ข้อผิดพลาดระดับเซลล์
ข้อผิดพลาดระดับเซลล์ไม่ได้ป้องกันไม่ให้คิวรีโหลด แต่แสดงค่าข้อผิดพลาดเป็น ข้อผิดพลาด ในเซลล์ การเลือกช่องว่างสีขาวในเซลล์จะแสดงบานหน้าต่างข้อผิดพลาดภายใต้การแสดงตัวอย่างข้อมูล
หมายเหตุ
เครื่องมือการสร้างโพรไฟล์ข้อมูลสามารถช่วยให้คุณระบุข้อผิดพลาดระดับเซลล์ด้วยคุณลักษณะคุณภาพคอลัมน์ได้ง่ายขึ้น สําหรับข้อมูลเพิ่มเติม ไปที่เครื่องมือการสร้างโพรไฟล์ข้อมูล
การจัดการข้อผิดพลาดในระดับเซลล์
เมื่อคุณพบข้อผิดพลาดใด ๆ ในระดับเซลล์ Power Query มีชุดฟังก์ชันสําหรับจัดการโดยการเอาออก แทนที่ หรือเก็บข้อผิดพลาดไว้
สําหรับส่วนถัดไป ตัวอย่างที่ให้มาใช้คิวรีตัวอย่างเดียวกันกับจุดเริ่มต้น ในคิวรีนี้ คุณมีคอลัมน์ ยอดขาย ที่มีหนึ่งเซลล์ที่มีข้อผิดพลาดที่เกิดจากข้อผิดพลาดในการแปลง ค่าภายในเซลล์นั้นเป็น NA แต่เมื่อคุณแปลงคอลัมน์นั้นเป็นจํานวนเต็ม Power Query ไม่สามารถแปลง NA เป็นตัวเลขได้ ดังนั้นจึงแสดงข้อผิดพลาดต่อไปนี้
ลบข้อผิดพลาด
หากต้องการลบแถวที่มีข้อผิดพลาดใน Power Query ก่อนอื่นให้เลือกคอลัมน์ที่มีข้อผิดพลาด บนแท็บ หน้าแรก ในกลุ่ม ลดแถว ให้เลือก ลบแถว จากเมนูดรอปดาวน์ เลือกลบข้อผิดพลาด
ผลลัพธ์ของการดําเนินการดังกล่าวจะให้ตารางต่อไปนี้แก่คุณ
แทนที่ข้อผิดพลาด
ถ้าแทนที่จะลบแถวที่มีข้อผิดพลาด คุณต้องการแทนที่ข้อผิดพลาดด้วยค่าคงที่ คุณสามารถทําได้เช่นกัน หากต้องการแทนที่แถวที่มีข้อผิดพลาด ก่อนอื่นให้เลือกคอลัมน์ที่มีข้อผิดพลาด บนแท็บ แปลง ในกลุ่ม คอลัมน์ใดก็ตาม ให้เลือก แทนที่ค่า จากเมนูดรอปดาวน์ เลือกแทนที่ข้อผิดพลาด
ในกล่องโต้ตอบ แทนที่ข้อผิดพลาด ให้ใส่ค่า 10 เนื่องจากคุณต้องการแทนที่ข้อผิดพลาดทั้งหมดด้วยค่า 10
ผลลัพธ์ของการดําเนินการดังกล่าวจะให้ตารางต่อไปนี้แก่คุณ
เก็บข้อผิดพลาด
Power Query สามารถทําหน้าที่เป็นเครื่องมือตรวจสอบที่ดีในการระบุแถวใด ๆ ที่มีข้อผิดพลาดแม้ว่าคุณไม่ได้แก้ไขข้อผิดพลาด สถานการณ์นี้คือตําแหน่งที่ เก็บข้อผิดพลาด ไว้จะมีประโยชน์ เมื่อต้องการเก็บแถวที่มีข้อผิดพลาด ก่อนอื่นให้เลือกคอลัมน์ที่มีข้อผิดพลาด บนแท็บ หน้าแรก ในกลุ่ม ลดแถว ให้เลือก เก็บแถว จากเมนูดรอปดาวน์ เลือกเก็บข้อผิดพลาด
ผลลัพธ์ของการดําเนินการดังกล่าวจะให้ตารางต่อไปนี้แก่คุณ
ข้อผิดพลาดระดับเซลล์ทั่วไป
เช่นเดียวกับข้อผิดพลาดในระดับขั้นตอน เราขอแนะนําให้คุณดูเหตุผลของข้อผิดพลาด ข้อความแสดงข้อผิดพลาด และรายละเอียดข้อผิดพลาดที่ระบุไว้ในระดับเซลล์อย่างละเอียดเพื่อทําความเข้าใจสิ่งที่ทําให้เกิดข้อผิดพลาด ส่วนต่อไปนี้อธิบายถึงข้อผิดพลาดระดับเซลล์ที่ใช้บ่อยที่สุดใน Power Query
ข้อผิดพลาดในการแปลงชนิดข้อมูล
โดยทั่วไปจะถูกทริกเกอร์เมื่อเปลี่ยนชนิดข้อมูลของคอลัมน์ในตาราง ค่าบางอย่างที่พบในคอลัมน์ไม่สามารถแปลงเป็นชนิดข้อมูลที่ต้องการได้
ตัวอย่าง: คุณมีคิวรีที่มีคอลัมน์ที่ชื่อว่า ยอดขาย เซลล์หนึ่งในคอลัมน์นั้นมี NA เป็นค่าเซลล์ ในขณะที่เซลล์ที่เหลือมีจํานวนเต็มเป็นค่า คุณตัดสินใจที่จะแปลงชนิดข้อมูลของคอลัมน์จากข้อความเป็นจํานวนเต็ม แต่เซลล์ที่มีค่า NA ทําให้เกิดข้อผิดพลาด
วิธีแก้ไขปัญหาที่เป็นไปได้: หลังจากระบุแถวที่มีข้อผิดพลาดแล้ว คุณสามารถปรับเปลี่ยนแหล่งข้อมูลเพื่อแสดงค่าที่ถูกต้องแทน NA หรือคุณสามารถใช้การดําเนินการ แทนที่ข้อผิดพลาด เพื่อให้ค่าสําหรับค่า NA ใด ๆ ที่ทําให้เกิดข้อผิดพลาดได้
ข้อผิดพลาดในการดําเนินการ
เมื่อพยายามใช้การดําเนินการที่ไม่ได้รับการสนับสนุน เช่น การคูณค่าข้อความด้วยค่าตัวเลข ข้อผิดพลาดจะเกิดขึ้น
ตัวอย่าง: คุณต้องการสร้างคอลัมน์แบบกําหนดเองสําหรับคิวรีของคุณโดยการสร้างสตริงข้อความที่มีวลี "Total Sales: " เชื่อมเข้าด้วยกันกับค่าจากคอลัมน์ Sales ข้อผิดพลาดเกิดขึ้นเนื่องจากการดําเนินการเรียงต่อกันสนับสนุนเฉพาะคอลัมน์ข้อความและไม่รองรับตัวเลขเท่านั้น
วิธีแก้ไขที่เป็นไปได้: ก่อนที่จะสร้างคอลัมน์แบบกําหนดเองนี้ ให้เปลี่ยนชนิดข้อมูลของคอลัมน์ ยอดขาย เป็นข้อความ
ค่าแบบซ้อนกันที่แสดงเป็นข้อผิดพลาด
เมื่อทํางานกับข้อมูลที่ประกอบด้วยค่าที่มีโครงสร้างที่ซ้อนกัน (เช่น ตาราง รายการ หรือเรกคอร์ด) บางครั้งคุณอาจพบข้อผิดพลาดต่อไปนี้:
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
สําหรับคอลัมน์ดังกล่าว - เปลี่ยนระดับความเป็นส่วนตัวของแหล่งข้อมูลที่เกี่ยวข้องกับแหล่งข้อมูลที่อนุญาตให้รวมเข้าด้วยกันโดยไม่ต้องบัฟเฟอร์
- ลดรูปแบบโครงสร้างตารางก่อนที่จะทําการผสานเพื่อกําจัดคอลัมน์ที่มีค่าที่มีโครงสร้างที่ซ้อนกัน (เช่น ตาราง ระเบียน หรือรายการ)