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

เทคนิคทำงานร่วมกับ 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

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

Table of Content