ทำความเข้าใจเกี่ยวกับการรับมอบสิทธิ์ในแอปพื้นที่ทำงาน
Power Apps มีชุดฟังก์ชันที่มีประสิทธิภาพสำหรับการกรอง การจัดเรียง และการจัดตารางข้อมูลในแอปพื้นที่ทำงาน: ฟังก์ชัน กรอง, จัดเรียง และ เพิ่มคอลัมน์ เป็นต้น ด้วยฟังก์ชันเหล่านี้ คุณสามารถให้ผู้ใช้ของคุณเข้าถึงข้อมูลที่พวกเขาต้องการได้ สำหรับผู้ที่มีพื้นฐานการใช้ฐานข้อมูล การใช้ฟังก์ชันเหล่านี้จะเหมือนกับการเขียนการสอบถามฐานข้อมูล
หลักสำคัญในการสร้างแอปที่มีประสิทธิภาพคือการลดจำนวนข้อมูลที่ต้องนำไปยังอุปกรณ์ของคุณ บางครั้ง คุณต้องการเรกคอร์ดเพียงเล็กน้อยจากทะเลข้อมูลนับล้านเท่านั้น หรือค่ารวมเดียวสามารถแสดงแทนเรกคอร์ดนับพันได้ หรืออาจสามารถเรียกดูเฉพาะชุดแรกของเรกคอร์ด และที่เหลืออยู่ในเป็นรูปแบบการสัมผัสผู้ใช้ว่าพวกเขาต้องการเพิ่มเติม การโฟกัสสามารถลดอำนาจการประมวลผล หน่วยความจำ และแบนด์วิดธ์เครือข่ายที่แอปของคุณต้องใช้ลงได้อย่างมาก ส่งผลให้เวลาที่ใช้ในการตอบกลับที่จัดให้กระชับขึ้นสำหรับผู้ใช้ของคุณ หรือแม้แต่บนโทรศัพท์ที่เชื่อมต่อกันผ่านทางเครือข่ายโทรศัพท์
การรับมอบสิทธิ์ คือจุดที่การแสดงสูตรของ Power Apps ตรงกับความจำเป็นในการลดการย้ายข้อมูลผ่านทางเครือข่ายลง โดยสรุป Power Apps จะมอบสิทธิ์การประมวลผลของข้อมูลไปยังแหล่งข้อมูล แทนที่จะย้ายข้อมูลไปยังแอปเพื่อประมวลผลภายในเครื่อง
ความซับซ้อนที่มากขึ้น และเหตุผลที่มีบทความนี้เนื่องจากไม่ใช่ทุกอย่างที่สามารถแสดงในสูตรของ Power Apps จะสามารถมอบสิทธิ์ให้กับแหล่งข้อมูลทั้งหมดได้ ภาษา Power Apps จะเลียนแบบภาษาสูตรของ Excel ซึ่งออกแบบมาให้สามารถเข้าถึงเวิร์กบุ๊กทั้งหมดในหน่วยความจำที่มีตัวเลขในแบบต่างๆ และฟังก์ชันการจัดการข้อความได้อย่างสมบูรณ์และทันที ผลที่ได้คือ ภาษา Power Apps จะมีความพร้อมมากกว่าที่แหล่งข้อมูลส่วนใหญ่จะสามารถสนับสนุนได้ รวมถึงกลไกจัดการฐานข้อมูลที่มีประสิทธิภาพเช่น SQL Server ด้วย
การทำงานกับชุดข้อมูลขนาดใหญ่จำเป็นต้องใช้แหล่งข้อมูลและสูตรที่สามารถรับมอบสิทธิ์ได้ ซึ่งเป็นวิธีเดียวที่จะทำให้แอปของคุณยังทำงานได้ดีอยู่ และทำให้แน่ใจว่าผู้ใช้สามารถเข้าถึงข้อมูลทั้งหมดที่พวกเขาต้องการได้ ระวังคำเตือนการรับมอบสิทธิ์ที่ระบุสถานที่ที่ไม่สามารถรับมอบสิทธิ์ได้ ถ้าคุณกำลังทำงานกับชุดข้อมูลขนาดเล็ก (น้อยกว่า 500 เรกคอร์ด) คุณสามารถใช้แหล่งข้อมูลและสูตรใดๆ ได้ เนื่องจากแอปสามารถประมวลผลข้อมูลภายในเครื่องได้หากสูตรไม่สามารถรับมอบสิทธิ์
หมายเหตุ
ก่อนหน้านี้คำเตือนการรับมอบสิทธ์ถูกตั้งค่าสถานะใน Power Apps เป็นคำแนะนำ "จุดสีน้ำเงิน" แต่นับแต่นั้นคำแนะนำในการรับมอบสิทธิ์ได้รับการจัดประเภทเป็นคำเตือนอีกครั้ง ถ้าข้อมูลในแหล่งข้อมูลของคุณเกิน 500 เรกคอร์ด และฟังก์ชันไม่สามารถรับมอบสิทธิ์ได้ Power Apps อาจไม่สามารถดึงข้อมูลทั้งหมด และแอปของคุณอาจมีผลลัพธ์ที่ไม่ถูกต้อง คำเตือนการรับมอบสิทธิ์ช่วยให้คุณจัดการแอปของคุณเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง
แหล่งข้อมูลที่มอบสิทธิ์ได้
การรับมอบสิทธิ์ได้รับการสนับสนุนสำหรับแหล่งข้อมูลแบบตารางบางอย่างเท่านั้น หากแหล่งข้อมูลรองรับการมอบสิทธิ์ เอกสารประกอบตัวเชื่อมต่อ ที่สนับสนุน ตัวอย่างเช่น แหล่งข้อมูลแบบตารางเหล่านี้เป็นที่นิยมมากที่สุด และรองรับการมอบหมาย:
- ฟังก์ชันและการดำเนินงานที่สามารถมอบสิทธิ์ได้ของ Power Apps สำหรับ Microsoft Dataverse
- ฟังก์ชันและการดำเนินงานที่สามารถมอบสิทธิ์ได้ของ Power Apps สำหรับ SharePoint
- ฟังก์ชันและการดำเนินงานที่สามารถมอบสิทธิ์ได้ของ Power Apps สำหรับ SQL Server
- ฟังก์ชันและการดำเนินงานที่สามารถมอบสิทธิ์ได้ของ Power Apps สำหรับ Salesforce
เวิร์กบุ๊ก Excel ที่นำเข้ามา (ใช้แหล่งข้อมูล เพิ่มข้อมูลแบบคงที่ไปยังแอปของคุณ) คอลเลกชัน และตารางที่จัดเก็บไว้ในบริบทตัวแปร ไม่จำเป็นต้องรับมอบสิทธิ์ ข้อมูลทั้งหมดนี้มีอยู่แล้วในหน่วยความจำ และสามารถใช้ภาษา Power Apps แบบเต็มได้
ฟังก์ชันที่สามารถมอบสิทธิ์ได้
ขั้นตอนถัดไปคือการใช้เฉพาะสูตรที่สามารถรับมอบสิทธิ์ได้ โดยที่รวมอยู่นี้คือองค์ประกอบสูตรที่สามารถรับมอบสิทธิ์ได้ อย่างไรก็ตาม ทุกแหล่งข้อมูลอื่นจะแตกต่างกัน และไม่ใช่ทุกแหล่งข้อมูลจะสนับสนุนองค์ประกอบเหล่านี้ทั้งหมด ตรวจสอบคำเตือนการรับมอบสิทธิ์ในสูตรเฉพาะของคุณ
รายการเหล่านี้จะเปลี่ยนเมื่อเวลาผ่านไป เรากำลังทำงานเพื่อสนับสนุนฟังก์ชันเพิ่มเติมและตัวดำเนินการที่มีการรับมอบสิทธิ์
ฟังก์ชันตัวกรอง
ตัวกรอง ค้นหา และ การค้นหา สามารถรับมอบสิทธิ์
ภายในฟังก์ชัน ตัวกรอง และ การค้นหา คุณสามารถใช้รายการต่อไปนี้กับคอลัมน์ของตารางเพื่อเลือกเรกคอร์ดที่เหมาะสมได้:
- และ (รวมถึง &&) หรือ (รวมถึง ||) ไม่ (รวมถึง !)
- ใน
- =, <>, >=, <=, >, <
- +, -
- TrimEnds
- IsBlank
- เริ่มต้นด้วย, ลงท้ายด้วย
- ค่าคงที่ที่เหมือนกันในเรกคอร์ดทั้งหมด ตัวอย่างเช่น คุณสมบัติของตัวควบคุมและ ตัวแปรส่วนกลางและตัวแปรบริบท
คุณยังสามารถใช้ส่วนต่างๆ ของสูตรของคุณที่ประเมินเป็นค่าคงที่สำหรับเรกคอร์ดทั้งหมดได้ ตัวอย่างเช่น ซ้าย( ภาษา(), 2 ) วันที่( 2019, 3, 31 ) และ วันนี้() ไม่ขึ้นอยู่กับคอลัมน์ใดๆ ของเรกคอร์ด และด้วยเหตุนี้ จึงส่งกลับค่าเดียวกันสำหรับเรกคอร์ดทั้งหมด ค่าเหล่านี้สามารถส่งไปยังแหล่งข้อมูล เป็นค่าคงที่และจะไม่บล็อกการมอบสิทธิ์
รายการก่อนหน้านี้ไม่มีรายการที่โดดเด่นเหล่านี้:
- ถ้า
- *, /, Mod
- เชื่อมเข้าด้วยกัน (รวมถึง &)
- ExactIn
- ฟังก์ชันจัดการสตริง: ต่ำกว่า, สูงกว่า, ซ้าย, กลาง, Len, ...
- สัญญาณ: ตำแหน่งที่ตั้ง, เร่งความเร็ว, เข็มทิศ, ...
- เปลี่ยนแปลงง่าย: แรนด์, ...
- คอลเลกชัน
ฟังก์ชันการเรียงลำดับ
Sort และ SortByColumns สามารถรับมอบสิทธิ์ได้
ใน Sort สูตรสามารถเป็นชื่อของคอลัมน์เดียวเท่านั้น และไม่สามารถรวมอยู่ในตัวดำเนินการหรือฟังก์ชันอื่นได้
ฟังก์ชันการรวม
Sum, Average, Min, และ Max สามารถรับมอบสิทธิ์ได้ มีเพียงแหล่งข้อมูลจำนวนจำกัดที่สนับสนุนการรับมอบสิทธิ์นี้ได้ในขณะนี้ ตรวจสอบ รายการการรับมอบสิทธิ์ สำหรับรายละเอียด
หมายเหตุ
หากนิพจน์ไม่ได้รับมอบหมาย นิพจน์จะทำงานได้เฉพาะในเรกคอร์ด 500 รายการแรก (สามารถตั้งค่าคอนฟิกได้สูงสุด 2,000 รายการ ดูที่ การเปลี่ยนขีดจำกัด) ซึ่งดึงมาจากแหล่งข้อมูล แทนที่จะมอบหมายการประมวลผลของข้อมูลทั้งหมดที่แหล่งข้อมูล
ฟังก์ชันการนับ เช่น CountRows, CountA และ Count ไม่สามารถรับมอบสิทธิ์ได้
ฟังก์ชันรวมอื่นๆ เช่น StdevP และ VarP ไม่สามารถรับมอบสิทธิ์ได้
ฟังก์ชั่นการสร้างตาราง
AddColumns, DropColumns, RenameColumns และ ShowColumns สนับสนุนการรับมอบสิทธิ์บางส่วน สามารถกำหนดสูตรในอาร์กิวเมนต์ของพวกเขาได้ อย่างไรก็ตาม การส่งออกของฟังก์ชั่นเหล่านี้จะขึ้นอยู่กับข้อจำกัดเรกคอร์ดที่มอบสิทธิ์ไม่ได้
ดังในตัวอย่างนี้ ผู้สร้างมักจะใช้ AddColumns และ LookUp เพื่อผสานข้อมูลจากตารางหนึ่งลงในตารางอื่นๆ มักเรียกว่าการรวมในภาษาเฉพาะของฐานข้อมูล
AddColumns( Products,
"Supplier Name",
LookUp( Suppliers, Suppliers.ID = Product.SupplierID ).Name
)
ถึงแม้ว่า ผลิตภัณฑ์ และ ผู้จำหน่าย อาจเป็นแหล่งข้อมูลที่สามารถรับมอบสิทธิ์ได้ และ LookUp คือฟังก์ชันที่สามารถรับมอบสิทธิ์ได้ก็ตาม ผลลัพธ์ของฟังก์ชัน AddColumns จะไม่สามารถมอบสิทธิ์ได้ ผลลัพธ์ของสูตรทั้งหมดจะถูกจำกัดไว้ที่ส่วนแรกของแหล่งข้อมูล ผลิตภัณฑ์ เนื่องจากฟังก์ชัน LookUp และแหล่งข้อมูล จะสามารถรับมอบสิทธิ์ได้ จึงสามารถพบการจับคู่ ผู้จัดจำหน่าย ในที่ใดก็ได้ในแหล่งข้อมูล แม้ว่าจะเป็นขนาดใหญ่ก็ตาม
ถ้าคุณใช้ AddColumns ในลักษณะนี้ LookUp ต้องทำการเรียกแยกกันไปที่แหล่งข้อมูล สำหรับแต่ละเรกคอร์ดแรก ใน ผลิตภัณฑ์ ซึ่งมีผลต่อการสื่อสารของเครือข่ายจำนวนมาก ถ้า ผู้จัดจำหน่าย มีขนาดเล็กพอและไม่เปลี่ยนแปลงบ่อยนัก คุณสามารถเรียกฟังก์ชัน เก็บ ใน OnStart เพื่อแคชแหล่งข้อมูล ในแอปของคุณเมื่อเริ่มทำงาน อีกทางเลือกหนึ่งคือ คุณสามารถปรับโครงสร้างแอปของคุณเพื่อดึงเรกคอร์ดที่เกี่ยวข้องเฉพาะเมื่อผู้ใช้ถามหา
ฟังก์ชันที่ไม่สามารถรับมอบสิทธิ์ได้
ฟังก์ชันอื่นๆ ทั้งหมดจะไม่สนับสนุนการรับมอบสิทธิ์ รวมถึงฟังก์ชันน่าสนใจต่อไปนี้:
- First, FirstN, Last, LastN
- Choices
- Concat
- Collect, ClearCollect
- CountIf, RemoveIf, UpdateIf
- GroupBy, Ungroup
ขีดจำกัดที่ไม่สามารถรับมอบสิทธิ์ได้
สูตรที่ไม่สามารถรับมอบสิทธิ์จะถูกประมวลผลภายในเครื่อง ซึ่งทำให้ภาษาสูตร Power Apps ที่หลากหลายทั้งหมดถูกใช้ แต่สิ่งที่ต้องแลกนั้น: ข้อมูลทั้งหมดต้องถูกนำไปยังอุปกรณ์ก่อน ซึ่งอาจเกี่ยวข้องกับการเรียกข้อมูลจำนวนมากบนเครือข่าย ซึ่งอาจใช้เวลา ให้เข้าใจว่ แอปของคุณจะช้าหรืออาจหยุดทำงานได้
เพื่อหลีกเลี่ยงปัญหานี้ Power Apps จัดการจำกัดจำนวนข้อมูลที่สามารถประมวลผลภายในเครื่อง: 500 เรกคอร์ด ตามค่าเริ่มต้น เราเลือกจำนวนนี้เพื่อให้คุณจะยังคงสามารถเข้าถึงชุดข้อมูลขนาดเล็กได้อย่างสมบูรณ์ และคุณจะสามารถปรับปรุงการใช้งานชุดข้อมูลขนาดใหญ่ โดยการดูผลลัพธ์บางส่วนได้
ต้องมีความระมัดระวังอย่างมากเมื่อใช้อาคารสถานที่นี้ เนื่องจากอาจทำให้ผู้ใช้สับสนได้ ตัวอย่างเช่น เมื่อพิจารณาฟังก์ชัน ตัวกรอง กับสูตรส่วนที่เลือกที่ไม่สามารถรับมอบสิทธิ์ได้ ซึ่งเป็นแหล่งข้อมูลที่มีล้านเรกคอร์ด เนื่องจากทำการกรองภายในเครื่อง จึงสแกนเฉพาะ 500 เรกคอร์ดแรกเท่านั้น ถ้าเรกคอร์ดที่ต้องการเป็นเรกคอร์ด 501 หรือ 500,001 เรกคอร์ดนั้นจะไม่ถูกพิจารณาหรือส่งกลับโดย ตัวกรอง
ฟังก์ชันการรวมยังสามารถทำให้เกิดความสับสนได้ด้วย หา ค่าเฉลี่ย คอลัมน์ของแหล่งข้อมูลล้านเรกคอร์ดที่เหมือนกัน เฉลี่ย ไม่สามารถถูกมอบหมายได้ในกรณีนี้ เนื่องจากนิพจน์ไม่ได้รับการมอบหมาย (ดูที่ หมายเหตุก่อนหน้านี้) ดังนั้น จะมีการเฉลี่ยเฉพาะเรกคอร์ด 500 รายการแรกเท่านั้น หากคุณไม่ระมัดระวัง ผู้ใช้แอปของคุณอาจเข้าใจผิดว่าคำตอบบางส่วนเป็นคำตอบที่สมบูรณ์
การเปลี่ยนแปลงขีดจำกัด
500 คือจำนวนเริ่มต้นของเรกคอร์ด แต่คุณสามารถเปลี่ยนตัวเลขนี้สำหรับแอปทั้งหมดได้:
- บนแท็บ ไฟล์ เลือก การตั้งค่า
- ภายใต้ ทั่วไป เปลี่ยนการตั้งค่า ขีดจำกัดแถวข้อมูล จาก 1 เป็น 2000
ในบางกรณี คุณจะทราบว่า 2,000 (หรือ 1,000 หรือ 1,500) จะตอบสนองความต้องการของสถานการณ์ของคุณ ด้วยความระมัดระวัง คุณสามารถเพิ่มหมายเลขนี้ให้เหมาะกับสถานการณ์ของคุณได้ เมื่อคุณเพิ่มหมายเลขนี้ ประสิทธิภาพการทำงานของแอปของคุณอาจลดลง โดยเฉพาะอย่างยิ่งสำหรับตารางที่กว้างที่มีคอลัมน์จำนวนมาก แม้บัดนี้ คำตอบที่ดีที่สุดคือการรับมอบสิทธิ์มากเท่าที่คุณทำได้
เมื่อต้องการให้แน่ใจว่าแอปของคุณสามารถปรับมาตราส่วนเป็นชุดข้อมูลขนาดใหญ่ ให้ลดการตั้งค่าลงเป็น 1 สิ่งที่ไม่สามารถรับมอบสิทธิ์ได้จะส่งกลับเรกคอร์ดเดี่ยว ซึ่งน่าจะทำให้ง่ายต่อการตรวจหาเมื่อทำการทดสอบแอปของคุณ ซึ่งสามารถช่วยหลีกเลี่ยงเรื่องที่ไม่คาดคิด เมื่อพยายามที่จะนำแอปการพิสูจน์แนวคิดไปยังการผลิต
คำเตือนการรับมอบสิทธิ์
เพื่อทำให้ทราบสิ่งที่ได้รับมอบสิทธิ์และไม่ได้รับมอบสิทธิ์ได้ง่ายขึ้น Power Apps จะแสดงคำเตือน (สามเหลี่ยมสีเหลือง) เมื่อคุณสร้างสูตรที่ประกอบด้วยบางสิ่งที่ไม่สามารถรับมอบสิทธิ์
คำเตือนการรับมอบสิทธิ์จะปรากฏเฉพาะในสูตรที่ทำงานบนแหล่งข้อมูลที่สามารถรับมอบสิทธิ์ได้เท่านั้น ถ้าคุณไม่เห็นคำเตือน และคุณเชื่อว่าสูตรของคุณไม่ได้รับมอบสิทธิ์อย่างที่ควรจะเป็น ให้ตรวจสอบชนิดของแหล่งข้อมูลกับรายการ่ของ แหล่งข้อมูลที่สามารถรับมอบสิทธิ์ได้ ที่กล่าวถึงก่อนหน้านี้ในหัวข้อนี้
ตัวอย่าง
สำหรับตัวอย่างนี้ คุณจะสร้างแอปแบบสามจอที่ยึดตามตาราง SQL Server ที่ชื่อ [dbo].[Fruit] โดยอัตโนมัติ สำหรับข้อมูลเกี่ยวกับวิธีการสร้างแอป คุณสามารถใช้หลักที่คล้ายกันใน หัวข้อเกี่ยวกับ Dataverse กับ SQL Server ได้

คุณสมบัติ รายการ ของแกลเลอรี ถูกตั้งค่าเป็นสูตรที่ประกอบด้วย SortByColumns และฟังก์ชัน ค้นหา ซึ่งทั้งสองอย่างสามารถรับมอบสิทธิ์ได้
ในกล่องค้นหา พิมพ์ "Apple"
จุดที่เดินจะปรากฏขึ้นชั่วคราวใกล้กับด้านบนสุดของหน้าจอ ขณะที่แอปสื่อสารกับ SQL Server เพื่อประมวลผลคำขอการค้นหา เรกคอร์ดทั้งหมดที่ตรงกับเกณฑ์การค้นหาปรากฏขึ้น แม้ว่าแหล่งข้อมูลจะประกอบด้วยเรกคอร์ดจำนวนมาก

ผลลัพธ์การค้นหามี "Apples" "Crab apples" และ "Pineapple" เนื่องจากฟังก์ชัน ค้นหา ค้นหาทุกที่ในคอลัมน์ข้อความ ถ้าคุณต้องการค้นหาเฉพาะเรกคอร์ดที่ประกอบด้วยคำค้นหาที่จุดเริ่มต้นของชื่อของผลไม้ คุณสามารถใช้ฟังก์ชันที่มอบหมายสิทธิ์ได้อื่นๆ เช่น ตัวกรอง ด้วยคำค้นหาที่ซับซ้อนมากยิ่งขึ้นได้ (เพื่อความง่าย ให้ลบเรียกใช้ SortByColumns ออก)

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

SQL Server เป็นแหล่งข้อมูลที่รับมอบสิทธิ์ได้ และ ตัวกรอง คือฟังก์ชันที่รับมอบสิทธิ์ได้ อย่างไรก็ตาม Mid และ Len ไม่สามารถรับมอบสิทธิ์ให้แก่แหล่งข้อมูลใดได้
แต่สามารถทำงานได้ ใช่หรือไม่ จริงๆ ก็ประมาณนั้น และด้วยเหตุนี้นี่จึงเป็นคำเตือน ไม่ใช่เส้นหยักสีแดง
- ถ้าตารางประกอบด้วยเรกคอร์ดที่น้อยกว่า 500 เรกคอร์ด สูตรจะทำงานอย่างสมบูรณ์แบบ เรกคอร์ดทั้งหมดถูกนำไปยังอุปกรณ์ และ ตัวกรอง ถูกนำไปใช้ภายในเครื่อง
- ถ้าตารางประกอบด้วเรกคอร์ดมากกว่า 500 เรกคอร์ด สูตรจะไม่ส่งกลับเรกคอร์ด 501 ขึ้นไป แม้ว่าจะตรงกับเกณฑ์ก็ตาม
ดูเพิ่มเติม
ผลกระทบของการใช้ฟังก์ชันที่ไม่สามารถมอบสิทธิ์ได้และขีดจำกัดแถวข้อมูลที่ไม่เหมาะสมต่อประสิทธิภาพ
เคล็ดลับและแนวทางปฏิบัติสำหรับการทำงานในการใช้การมอบสิทธิ์