เทคนิคทำงานร่วมกับ SharePoint List ขนาดใหญ่ใน Power Apps

จัดการ SharePoint List ใหญ่ใน Power Apps เทคนิคใช้ Indexed Column จัดลำดับเงื่อนไขการกรองข้อมูล เพิ่มความเร็วในการประมวลผล
Shared point list in Power apps

การทำงานกับ SharePoint เป็นแหล่งข้อมูลใน Power Apps นั้นถือเป็นทักษะพื้นฐานที่ผู้สร้างแอปพลิเคชันส่วนใหญ่ต้องเจอ ซึ่งมักจะราบรื่นดีเมื่อทำงานกับชุดข้อมูลขนาดเล็ก ประมาณ 100-1,000 รายการ แต่เกมจะเปลี่ยนไปสำหรับชุดข้อมูลขนาดใหญ่ เช่น 5,000 รายการหรือแม้แต่ 100,000 รายการ ซึ่งจะท้าทายและน่าสนใจมากขึ้น

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

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

ชุดข้อมูลนี้มีทั้งหมด 131,716 รายการ

2 ชุดข้อมูลนี้มีทั้งหมด 131,716 รายการ

ปัญหาคืออะไร ?

ปัญหาที่พบคือเรื่องของ “ความเร็ว”

ตามที่คุณอาจสังเกตเห็นแล้วว่า การแสดงผลข้อมูลจากรายการ SharePoint ขนาดใหญ่ใน Power Apps นั้นค่อนข้างช้า และจะช้าลงมากขึ้นเรื่อย ๆ ตามขนาดของชุดข้อมูลหรือจำนวนคอลัมน์ที่มากขึ้น

ทำไมถึงช้าล่ะ ?

แต่ทำไมถึงช้าล่ะ? คำตอบคือเปิด Monitor ดูสิ จะเห็นว่า Power Apps ไม่สามารถรับข้อมูลทั้งหมดได้ในการร้องขอครั้งเดียว แต่ต้องรันฟังก์ชัน getMoreRows ไปเรื่อย ๆ จนกว่าจะได้ข้อมูลที่ตรงตามเงื่อนไขการกรองหมด นั่นหมายความว่าถ้าขนาดชุดข้อมูลของคุณมีเพิ่มมากขึ้น ก็จะใช้เวลานานขึ้นนั่นเอง

แค่นี้ก็เข้าใจปัญหาพื้นฐานแล้วนะครับ เราจะมาวิเคราะห์และหาวิธีแก้ไขอย่างละเอียดต่อไป

แค่นี้ก็เข้าใจปัญหาพื้นฐานแล้วนะครับ เราจะมาวิเคราะห์และหาวิธีแก้ไขอย่างละเอียดต่อไป

Solution ที่ 1 : Indexed column

เหตุผลที่ Power Apps ไม่สามารถดึงข้อมูลทั้งหมดได้ในการร้องขอเพียงครั้งเดียวนั้น เป็นเพราะข้อจำกัดของ SharePoint REST API เมื่อคุณใช้ฟังก์ชัน Filter() ใน Power Apps จะส่งคำร้องขอการกรองข้อมูลไปยัง SharePoint REST API แต่การกรองด้วยคอลัมน์ไม่ใช่ Indexed Column นั้นไม่สนับสนุนสำหรับรายการที่มีรายการมากกว่า 5,000 รายการ

โซลูชันที่ 1

ดังนั้น Power Apps จึงต้องดึงรายการทั้งหมดในรายการแล้วจึงนำมากรองเองด้วย Power Apps ซึ่งก็ทำให้ใช้เวลานาน

เราสามารถช่วย SharePoint ได้โดยการสร้าง Indexed Column ที่เราต้องการกรอง ตามขั้นตอนดังนี้:

  • ไปที่ การตั้งค่ารายการ (List settings)

ไปที่ตั้งค่า
  • เลื่อนลงไปและคลิกที่ Indexed columns

เลื่อนลงไปและคลิกที่ Indexed columns
  • สร้าง Index

สร้าง Index
  • รอให้ SharePoint สร้าง Indexed Column ของคุณ (อาจใช้เวลาสักพักขึ้นอยู่กับข้อมูลของคุณ)

รอให้ SharePoint สร้าง Indexed Column ของคุณ (อาจใช้เวลาสักพักขึ้นอยู่กับข้อมูลของคุณ)
เมื่อสร้าง Indexed Column ใน SharePoint แล้ว การดำเนินการกรองสามารถทำได้รวดเร็วขึ้น เนื่องจากการกรองสามารถให้ผลลัพธ์ได้อย่างรวดเร็วเกือบทันที ใช้การร้องขอเพียงครั้งเดียวในการดึงข้อมูลที่ผ่านการกรอง ไม่ต้องวนดึงครั้งแล้วครั้งเล่า ซึ่งช่วยเพิ่มประสิทธิภาพการทำงานได้เป็นอย่างมาก

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

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

Solution ที่ 2 : Rearrange filter criteria

มีบางสถานการณ์ที่แม้จะมีการสร้าง Indexed Column เพื่อให้การกรองข้อมูลเร็วขึ้น แต่ก็ยังไม่เพียงพอ

ตัวอย่างเช่น คุณกำลังพยายามกรองข้อมูลด้วยเงื่อนไข 2 ประการ ได้แก่

  1. รายการที่เป็นของบริษัท “GRBK”
  2. มี ReceiptId เป็น “RCP-8754”

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

ตัวอย่างเช่น หาก Power Apps กรองรายการที่มี CompanyCodeTxt = “GRBK” ก่อน และการกรองครั้งแรกนี้ได้ผลลัพธ์มากกว่า 5,000 รายการ มันจะไม่สามารถประมวลผลรายการเหล่านั้นได้ทั้งหมดในคำขอเดียว ดังนั้นจึงจำเป็นต้องใช้วิธีการทำงานแบบค่อยเป็นค่อยไป เช่น getMoreRows เพื่อเรียกและประมวลผลข้อมูลที่ผ่านการกรองแบบแบทช์

โซลูชันที่ 2

วิธีแก้ปัญหาง่าย ๆ คือ

จัดเรียงลำดับเงื่อนไขการกรองใหม่ โดยให้เงื่อนไขที่เจาะจงมากที่สุดอยู่ก่อน ซึ่งจะทำให้คุณได้ผลลัพธ์ที่รวดเร็วทันทีเมื่อกรองด้วย ReceiptId เพราะเป็นเงื่อนไขที่เจาะจงมากกว่าการกรองด้วยบริษัท (Company)

โดยสรุป ให้จัดลำดับเงื่อนไขการกรองใหม่ดังนี้:

  1. ReceiptId เป็น “RCP-8754”
  2. รายการที่เป็นของบริษัท “GRBK”

การจัดลำดับเช่นนี้จะช่วยให้การกรองข้อมูลมีประสิทธิภาพและรวดเร็วขึ้น

สรุป

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

แหล่งที่มา : PAWIT.PW

ก้าวเข้าสู่ Digital Business

ดูผลิตภัณฑ์ที่เกี่ยวข้องได้ที่นี่

powerapps
Power Apps
ลดต้นทุนการพัฒนาของคุณและทำสิ่งต่างๆ มากขึ้นด้วยทรัพยากรที่น้อยลง โดยช่วยให้ทุกคนสามารถสร้างและแชร์แอปได้อย่างรวดเร็วโดยใช้ Power Apps
Table of Content