แชร์ผ่าน


ขีดจำกัดของการสอบถาม: ขีดจำกัดการรับมอบสิทธิ์และแบบสอบถาม

ทำความเข้าใจเกี่ยวกับการรับมอบสิทธิ์

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

แต่คิวรี Power Fx ไม่สามารถแปลเป็นคิวรีที่เทียบเท่ากันในทุกแหล่งข้อมูลได้เสมอไป ตัวอย่างเช่น Dataverse รองรับคุณลักษณะการสอบถามมากกว่า Excel Dataverse รองรับตัวดำเนินการคิวรี 'ใน' (การเป็นสมาชิก) แต่ Excel ไม่รองรับ คิวรีไม่สามารถมอบหมายได้ หากใช้คุณลักษณะที่แหล่งข้อมูลไม่รองรับ หากส่วนใดส่วนหนึ่งของนิพจน์คิวรีไม่สามารถมอบหมายได้ Power Apps จะไม่มอบหมายส่วนใดส่วนหนึ่งของคิวรี

เมื่อคิวรีไม่สามารถมอบหมายได้ Power Apps จะรับเรกคอร์ด 500 รายการแรกจากแหล่งข้อมูล แล้วเรียกใช้การดำเนินการในคิวรี คุณสามารถเพิ่มขีดจำกัดนี้เป็น 2,000 ระเบียน การเปลี่ยนขีดจำกัดPower Apps จะจำกัดขนาดผลลัพธ์ไว้ที่ 500 เรกคอร์ดเพื่อให้แอปของคุณทำงานได้ดี ชุดผลลัพธ์ที่ใหญ่ขึ้นอาจทำให้เกิดปัญหาด้านประสิทธิภาพสำหรับแอปของคุณและ Power Apps

แต่ข้อจำกัดนี้อาจเป็นปัญหาได้เนื่องจากคิวรีอาจส่งคืนผลลัพธ์ที่ไม่ถูกต้องหากแหล่งข้อมูลมีเรกคอร์ดมากกว่า 500 หรือ 2,000 เรกคอร์ด ตัวอย่างเช่น หากแหล่งข้อมูลของคุณมีเรกคอร์ด 10 ล้านเรกคอร์ด และคิวรีของคุณต้องทำงานกับส่วนสุดท้ายของข้อมูล เช่น นามสกุลที่ขึ้นต้นด้วย 'Z' และคิวรีของคุณใช้ตัวดำเนินการที่ไม่สามารถมอบหมายได้ เช่น ความแตกต่าง คุณจะได้รับเรกคอร์ด 500 หรือ 2,000 รายการแรกเท่านั้น ซึ่งหมายความว่าคุณได้รับผลลัพธ์ที่ไม่ถูกต้อง

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

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

หมายเหตุ

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

แหล่งข้อมูลที่มอบสิทธิ์ได้

การมอบหมายทำงานกับแหล่งข้อมูลแบบตารางบางอย่างเท่านั้น หากแหล่งข้อมูลรองรับการมอบหมาย คู่มือตัวเชื่อมต่อจะอธิบายถึงการสนับสนุนนั้น ตัวอย่างเช่น แหล่งข้อมูลแบบตารางที่นิยมเหล่านี้รองรับการมอบหมาย:

เวิร์กบุ๊ก Excel ที่นำเข้ามา (ใช้แหล่งข้อมูล เพิ่มข้อมูลแบบคงที่ไปยังแอปของคุณ) คอลเลกชัน และตารางที่จัดเก็บไว้ในบริบทตัวแปร ไม่จำเป็นต้องมีการมอบหมาย ข้อมูลทั้งหมดนี้มีอยู่แล้วในหน่วยความจำ ดังนั้นคุณสามารถใช้ภาษา Power Apps แบบเต็มได้

ฟังก์ชันที่สามารถมอบสิทธิ์ได้

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

ฟังก์ชันตัวกรอง

Filter, Search, First และ LookUp สามารถมอบหมายได้

ภายในฟังก์ชัน Filter และ LookUp ใช้รายการต่อไปนี้กับคอลัมน์ของตารางเพื่อเลือกเรกคอร์ดที่เหมาะสมได้:

  • And (รวมถึง &&), Or (รวมถึง ||), Not (รวมถึง !)
  • ใน> [!หมายเหตุ]

    In ถูกมอบหมายให้เฉพาะคอลัมน์บนแหล่งข้อมูลฐาน ตัวอย่างเช่น ถ้าแหล่งข้อมูลคือตาราง บัญชีFilter(Accounts, Name in ["name1", "name2"]) จะมอบหมายให้กับแหล่งข้อมูลสำหรับการประเมิน แต่ Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) ไม่ได้มอบหมาย เนื่องจากคอลัมน์ ชื่อเต็ม อยู่ในตารางอื่น (PrimaryContact) นอกเหนือจาก บัญชี นิพจน์จะถูกประเมินภายใน

  • =, <>, >=, <=, >, <
  • +, -
  • TrimEnds
  • IsBlank
  • StartsWith, EndsWith
  • ค่าคงที่ที่เหมือนกันในเรกคอร์ดทั้งหมด ตัวอย่างเช่น คุณสมบัติของตัวควบคุม และ ตัวแปรส่วนกลางและตัวแปรบริบท

คุณยังสามารถใช้ส่วนต่างๆ ของสูตรของคุณที่ประเมินเป็นค่าคงที่สำหรับเรกคอร์ดทั้งหมดได้ ตัวอย่างเช่น ซ้าย( ภาษา(), 2 )วันที่( 2019, 3, 31 ) และ วันนี้() ไม่ขึ้นอยู่กับคอลัมน์ใดๆ ของเรกคอร์ด ดังนั้นจึงส่งกลับค่าเดียวกันสำหรับเรกคอร์ดทั้งหมด ค่าเหล่านี้สามารถส่งไปยังแหล่งข้อมูลเป็นค่าคงที่และไม่บล็อกการมอบหมาย

รายการก่อนหน้านี้ไม่มีรายการที่โดดเด่นเหล่านี้

การมอบสิทธิ์และการรวบรวม

เมื่อคุณใช้ With, UpdateContext หรือ Set จะมีการสร้างคอลเลกชันแบบภายใน คอลเลกชันเป็นรายการเรกคอร์ดแบบคงที่ในหน่วยความจำและไม่ได้เข้าร่วมในการมอบสิทธิ์ คุณไม่เห็นคำเตือนการมอบสิทธิ์

ขีดจำกัดการสอบถาม

ค้นหาและขยายระดับ

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

ขยายหรือรวมเอนทิตีได้สูงสุด 20 รายการในคิวรีเดียว หากคุณต้องการรวมมากกว่า 20 ตารางในคิวรีเดียว ให้ลองสร้างมุมมองบนเซิร์ฟเวอร์ข้อมูลหากเป็นไปได้

การประเมินนิพจน์ - คุณสมบัติของเอนทิตีต้องอยู่ทางด้านซ้าย 'LHS' ของตัวดำเนินการความเท่าเทียมกัน

ใส่คุณสมบัติของเอนทิตีที่จะเปรียบเทียบทางด้านซ้ายมือ (LHS) ของสมการ ตัวอย่างเช่น ในนิพจน์ต่อไปนี้ คุณสมบัติของเอนทิตี 'ID หน่วยธุรกิจ'.Name อยู่บน LHS และนิพจน์ทำงาน:

Filter(
        Budgets,
        'Business unit ID'.Name = LookUp(
            Users,
            'Primary Email' = User().Email,
            'Business Unit'
        ).Name,
        DataCardValue37.Selected.'Date Range String'='Date Range String'
    )

แต่นิพจน์นี้ใช้ไม่ได้:

 Filter(
        Budgets,
        LookUp(
            Users,
            'Primary Email' = User().Email,
            'Business Unit'
        ).Name = 'Business unit ID'.Name,
        'Date Range String'=DataCardValue37.Selected.'Date Range String'
    )

ฟังก์ชันการเรียงลำดับ

Sort และ SortByColumns สามารถรับมอบสิทธิ์ได้

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

ฟังก์ชันการรวม

ฟังก์ชันการรวมบางอย่างสามารถการมอบหมายตามการสนับสนุนส่วนหลังได้ ฟังก์ชัน เช่น Sum, Average, Min, และ Max สามารถรับมอบสิทธิ์ได้ ฟังก์ชันการนับ เช่น CountRows และ Count สามารถมอบหมายได้เช่นกัน แต่ RemoveIf และ UpdateIf มีข้อจำกัดในการมอบหมาย มีแหล่งข้อมูลจำนวนจำกัดเท่านั้นที่รองรับการมอบหมายสำหรับฟังก์ชันเหล่านี้ สำหรับข้อมูลเพิ่มเติม ดูที่ รายการในการมอบสิทธิ์

ฟังก์ชันที่ไม่สามารถมอบหมายได้

ฟังก์ชันอื่นๆ ทั้งหมดจะไม่รองรับการมอบหมาย รวมถึงฟังก์ชันน่าสนใจต่อไปนี้:

ขีดจำกัดที่ไม่สามารถมอบหมายได้

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

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

ระมัดระวังเมื่อใช้คุณลักษณะนี้ เนื่องจากอาจทำให้ผู้ใช้สับสนได้ ตัวอย่างเช่น หากคุณใช้ฟังก์ชัน Filter กับสูตรส่วนที่เลือกที่ไม่สามารถมอบหมายได้ ซึ่งเป็นแหล่งข้อมูลที่มีล้านเรกคอร์ด สามารถสแกนได้เฉพาะ 500 เรกคอร์ดแรกเท่านั้น ถ้าเรกคอร์ดที่คุณต้องการเป็นเรกคอร์ด 501 หรือ 500,001 ตัวกรองพิจารณาหรือส่งกลับเรกคอร์ดนั้น

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

การเปลี่ยนแปลงขีดจำกัด

จำนวนเริ่มต้นของเรกคอร์ดคือ 500 แต่คุณสามารถเปลี่ยนตัวเลขนี้สำหรับแอปทั้งหมดได้:

  1. เลือก การตั้งค่า
  2. ภายใต้ ทั่วไป เปลี่ยนการตั้งค่า ขีดจำกัดแถวข้อมูล จาก 1 เป็น 2000

ในบางกรณี บันทึก 2,000 (หรือ 1,000 หรือ 1,500) ก็เพียงพอแล้วสำหรับ สถานการณ์ ของคุณ คุณสามารถเพิ่มตัวเลขนี้ให้เหมาะกับความต้องการของคุณ แต่เมื่อทำเช่นั้น ประสิทธิภาพของแอปของคุณอาจลดลง โดยเฉพาะอย่างยิ่งสำหรับตารางที่กว้างที่มีคอลัมน์จำนวนมาก ทางที่ดีควรมอบหมายให้มากที่สุด

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

คำเตือนการรับมอบสิทธิ์

Power Apps แสดงคำเตือน (สามเหลี่ยมสีเหลือง) เมื่อคุณสร้างสูตรที่ไม่สามารถมอบหมายได้ วิธีนี้ทำให้ง่ายต่อการทราบว่าสิ่งใดมีการมอบหมายและไม่ได้มอบหมาย

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

ตัวอย่าง

ในตัวอย่างนี้ คุณจะสร้างแอปแบบสามจอที่ยึดตามตาราง SQL Server ที่ชื่อ [dbo].[Fruit] โดยอัตโนมัติ หากต้องการเรียนรู้วิธีการสร้างแอป ใช้หลักที่คล้ายกันจากบทความเกี่ยวกับ Dataverse กับ SQL Server

แอปแบบสามหน้าจอ

คุณสมบัติ รายการ ของแกลเลอรีใช้สูตรที่ประกอบด้วยฟังก์ชัน SortByColumns และ Search ซึ่งทั้งสองอย่างสามารถมอบหมายได้

ในกล่องค้นหา ให้ป้อน "Apple"

จุดเคลื่อนไหวจะปรากฏขึ้นในช่วงสั้นๆ ใกล้กับด้านบนสุดของหน้าจอ ขณะที่แอปสื่อสารกับ SQL Server เพื่อประมวลผลคำขอการค้นหา เรกคอร์ดทั้งหมดที่ตรงกับเกณฑ์การค้นหาปรากฏขึ้น แม้ว่าแหล่งข้อมูลจะมีเรกคอร์ดจำนวนมาก

ค้นหาตัวควบคุมการป้อนข้อความ

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

ลบการเรียกใช้ SortByColumns ออก

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

วางเมาส์เหนือคำเตือนการรับมอบสิทธิ์

SQL Server เป็นแหล่งข้อมูลที่มอบหมายได้ และ Filter เป็นฟังก์ชันที่มอบหมายได้ อย่าไรก็ตาม Mid และ Len ไม่สามารถมอบหมายให้กับแหล่งข้อมูลใดๆ ได้

แต่สามารถทำงานได้ใช่หรือไม่ ทำนองนั้น ด้วยเหตุนี้จึงเป็นคำเตือน ไม่ใช่เส้นหยักสีแดง

  • ถ้าตารางมีเรกคอร์ดน้อยกว่า 500 เรกคอร์ด สูตรจะทำงานอย่างสมบูรณ์แบบ เรกคอร์ดทั้งหมดถูกนำไปยังอุปกรณ์ และ Filter ถูกนำไปใช้แบบภายใน
  • หากตารางมีเรกคอร์ดมากกว่า 500 เรกคอร์ด สูตรจะไม่ส่งกลับเรกคอร์ด 501 ขึ้นไป แม้ว่าจะตรงกับเกณฑ์ก็ตาม

ดูเพิ่มเติม