Share via


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

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

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

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

เมื่อการสอบถามไม่สามารถมอบสิทธิ์ได้ Power Apps จะรับเฉพาะ 500 เรกคอร์ดแรกจากแหล่งข้อมูล จากนั้นจะดำเนินการในการสอบถาม ขีดจำกัดนี้สามารถเพิ่มได้สูงสุด 2,000 เรกคอร์ด การเปลี่ยนขีดจำกัด Power Apps จำกัดขนาดผลลัพธ์ไว้ที่ 500 เรกคอร์ด เพื่อรักษาประสิทธิภาพที่ดีของ Power Apps จากการทดลอง เราพบว่าชุดผลลัพธ์ที่ใหญ่กว่าขนาดเหล่านี้ทำให้เกิดปัญหาด้านประสิทธิภาพสำหรับแอปของคุณและ 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 คุณสามารถใช้รายการต่อไปนี้กับคอลัมน์ของตารางเพื่อเลือกเรกคอร์ดที่เหมาะสมได้:

  • และ (ซึ่งรวมถึง &&), หรือ (ซึ่งรวมถึง ||), ไม่ (ซึ่งรวมถึง !)
  • In

    หมายเหตุ

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

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

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

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

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

ระดับการค้นหา

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

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

สิ่งสำคัญคือ ต้องวางคุณสมบัติของเอนทิตีที่จะเปรียบเทียบในนิพจน์ทางด้านซ้ายมือของ 'LHS' ของสมการ เพื่อแสดงให้เห็นในตัวอย่างด้านล่างคุณสมบัติเอนทิตี 'Business unit 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 เรกคอร์ด ตามค่าเริ่มต้น เราเลือกจำนวนนี้เพื่อให้คุณจะยังคงสามารถเข้าถึงชุดข้อมูลขนาดเล็กได้อย่างสมบูรณ์ และคุณจะสามารถปรับปรุงการใช้งานชุดข้อมูลขนาดใหญ่ โดยการดูผลลัพธ์บางส่วนได้

ต้องมีความระมัดระวังอย่างมากเมื่อใช้อาคารสถานที่นี้ เนื่องจากอาจทำให้ผู้ใช้สับสนได้ ตัวอย่างเช่น เมื่อพิจารณาฟังก์ชัน ตัวกรอง กับสูตรส่วนที่เลือกที่ไม่สามารถรับมอบสิทธิ์ได้ ซึ่งเป็นแหล่งข้อมูลที่มีล้านเรกคอร์ด เนื่องจากทำการกรองภายในเครื่อง จึงสแกนเฉพาะ 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 และฟังก์ชัน ค้นหา ซึ่งทั้งสองอย่างสามารถรับมอบสิทธิ์ได้

ในกล่องค้นหา พิมพ์ "Apple"

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

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

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

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

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

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

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

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

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

ดูเพิ่มเติม

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

หมายเหตุ

บอกให้เราทราบเกี่ยวกับภาษาที่คุณต้องการในคู่มือ ทำแบบสำรวจสั้นๆ (โปรดทราบว่าแบบสำรวจนี้เป็นภาษาอังกฤษ)

แบบสำรวจนี้ใช้เวลาทำประมาณเจ็ดนาที ไม่มีการเก็บข้อมูลส่วนบุคคล (คำชี้แจงสิทธิ์ส่วนบุคคล)