本文介绍:
Power Apps 中的委派函数和非可委派函数。
现象:
在Power Apps中显示某些数据源时,如果数据量超过 500,则可能遇到现实不全的情况,实际上大部分是由于 委派函数 和 非可委派函数 使用不合适导致的。
所谓委派函数,是指实际的数据查询是由数据源完成的,比如 power apps 调用 filter 函数 查询了 SQL数据库或者 Share Point,实际的查询是在数据源侧也就是SQL或Share Point 执行的。这时候的返回值可以是超过500条数据的。
为什么提到500这个数字,是因为Power Apps画布应用的一个默认配置:
打开某个Power Apps的编辑模式,文件菜单-设置-数据行限制,该值默认是500,最大可以调整到2000。
注意,该值的配置是针对非可委派函数的,比如下方的函数,均为非可委派函数:
非可委派函数
所有其他函数都不支持委派,包括以下重要函数:
- First、FirstN、Last、LastN
- Choices
- Concat
- Collect、ClearCollect
- CountIf、RemoveIf、UpdateIf
- GroupBy、Ungroup
使用这些函数从SQL或Share Point List查询数据,则会受 500 这个值的限制。
官网中对此限制的描述如下:
显然,使用此工具时必须小心,因为这可能会让用户感到困惑。 例如,假设有一个 Filter 函数,其选择公式不能委派,需要对有一百万条记录的数据源应用该函数。 由于本地进行筛选,因此仅扫描了前 500 条记录。 如果所需记录是第 501 或第 500,001 个记录,则 Filter 不会考虑或返回该记录。
即数据库中明明有几千条数据,但使用了上述非可委派函数,导致数据只查出了 500条,导致业务逻辑混乱。
这个值可以改成最大2000,但官网也给出了说明:
在某些情况下,您会发现 2,000(或者 1,000 或 1,500)即可满足方案的需求。 可以谨慎增大此数字以适应您的方案。 增大此数字,应用的性能可能会降低,特别是对于具有大量列的宽表。 尽管如此,仍是委派越多越好。
即虽然可以改成2000,但也要悠着点,改太大可能造成性能问题。
可委派函数则不受上述影响:
可委派函数
Filter、Search 和 LookUp 可以委派,不受500的限制。
针对以上描述,我们做了测试,在Share Point中导入了一个excel,内容如下:
RT20170001-RT20172210,共计2210行数据。
在Power Apps中使用Share point 连接创建画布应用:
设置 Gallery1 控件的:
Items =Filter([@‘test-excel‘], StartsWith(Title, TextSearchBox1.Text))
由于Filter是 可委派函数,所以如下图是可以显示超过 2000条数据的。
紧接着设置一个按钮,然后设置一个 gallery 2,按钮的onselect 设置为:
OnSelect=ClearCollect(Collect01,Filter([@‘test-excel‘], StartsWith(Title, TextSearchBox1.Text)));
使用ClearCollect 非可委派函数,故而Collect01中的数据实际上是受到 默认值 500的限制的,本例子中我们已经讲该值改为2000。
Gallery2 的 ITems 设置为
Items=Collect01
运行程序,点击按钮,查看 Gallery2的数据:
由于ClearCollect是 非可委派函数,则最多显示了 2000条数据。
针对这一现象,官网给出:
官网中明确规定:处理大型数据集需要使用数据源和能够委派的公式, 若要让应用始终运行良好,同时要确保用户能够访问所需的全部信息,这是唯一的方式。 请注意,标识不可能委派的位置的委派警告。 如果处理的是小型数据集(不到 500 条记录),则可使用任何数据源和公式,因为当不能委派公式时,应用可以在本地处理数据 。
另外当 Share Point List中数据超过 5000,则Power Apps还会报错:
请求的操作无效,服务器响应 失败,已禁止尝试的操作,因为它超过了列表视图阈值。
需修改Share Point List 列表体验 为 新体验 以支持超过5000行的share point list ,步骤如下:
点击可查阅本站文章目录 《文章分类目录》
本站所有内容仅代表个人观点,如与官文档冲突,请以官方文档为准。
可在本页面下方留言或通过下方联系方式联系我:
微信:wxyusz;邮箱:shuzhen.yu@foxmail.com
欢迎关注公众号“云计算实战”,接收最新文章推送。