委派警告、限制和不可委派函数
Power Apps 通过视觉对象来帮助您这样的应用制作者了解委派的发生时间。 Maker portal 还有一项设置可以调整,用于在无法委派时提高返回的数据量。
委派警告
每次您使用不可委派函数时,Power Apps 都会使用蓝线下划线进行标注,并显示一个黄色的三角警告标志,如下所示。
这样可以更加清晰地向您明确不可委派,由本也意味着您可能看不到所有数据。 关于视觉对象指示标志,有些东西是必须要了解的。
Power Apps 始终会提供本警告,不受数据源大小的限制。 即使您的数据源仅包含几个项目,并且从技术上讲委派不会出现问题,这一警告也还是会显示出来。 请记住,默认将返回前 500 个项目并在本地处理。 只要您的公式未委派,就会显示该警告。
警告指示标志只会对应引发委派的第一个项目。 请注意上面的屏幕截图,只有带下划线的“FirstName”字段是用蓝色标出的。 这是因为它是引起委派的第一个项目。 在本场景下,“LastName”也会引起委派。 这可能会令人困惑,因为人们会尝试解决 FirstName 与 LastName 之间的差异,而非真正的问题(即 Search 函数)。 如果您遇到这样的困惑,请重新排列您的公式。 这将进行验证,并且首先出现的字段将显示问题。
本视觉对象指示标志只有当您在 Maker Portal 中构建应用时才会显示。 用户在运行应用时,不会收到委派未发生的通知,可能只会看到部分结果。 您在设计应用和进行相关构建时,一定要注意这一点。
不可委派时,更改返回的记录数
当公式出于任何原因无法委派至数据源时,Power Apps 默认会从该数据源中检索前 500 条记录并在本地运行该公式。 Power Apps 支持在 1 到 2000 之间调整本项限制。 可在“高级设置”中调整本项限制。
在 Maker portal 中,选择左上角的文件。
在最左侧菜单中,选择设置。
从应用设置下方,选择高级设置
将不可委派查询的数据行限制设置为 1 到 2000 之间的任何值。
设置好本项限制后,选择右上角的箭头,保存更改并返回 Maker Portal。
调整本项设置的可能原因主要有两个。
当您处理数据时,如果 500 条记录不可用但又不超过 2000 条记录时,便可提升本项限制。 例如,您有一个客户列表,并且您知道自己的客户数不会超过 1000 个,这时您便可将应用设计为忽略委派,并始终返回所有 1000 条记录。
将本项限制降低到 1 或 10 可帮助实施测试。 如果您所遇到的情况是,无法确定不可委派函数是否会给您的应用带来问题,则可降低本项限制进行测试。 如果您将本项限制设置为 1,并且您的库只显示了一条记录,那么您就知道您有了一个不可委派函数。 本项设置可加快您的故障排除过程。
不可委派函数
上一单元介绍了可委派函数及其与各种数据源的关联方式。 上个单元没有介绍的其他函数是一些不可委派函数。 下面是一些不支持委派的重要函数。
First、FirstN、Last、LastN
Choices
Concat
Collect、ClearCollect(这两个函数都不会返回委派警告,但也不可委派)
CountIf、RemoveIf、UpdateIf
GroupBy、Ungroup
所有这些函数都不可委派。 因此,我们从前面的例子可以看出,通过将它们添加到一个公式中,您也许可以将先前可委派的函数变为不可委派。
部分支持的可委派函数
下面的表塑造函数属于部分可委派。 也就是说,其参数中的公式可委派。 但这些函数的输出结果要受到不可委派记录限制的约束。
AddColumns
DropColumns
ShowColumns
RenameColumns
一种常见模式是使用 AddColumns 和 LookUp 将信息从一个表合并到另一个表,这在数据库术语中通常称为“Join”。 例如:
AddColumns( Products, "Supplier Name", LookUp( Suppliers,
Suppliers.ID = Product.SupplierID ).Name )
即使“产品”和“供应商”是可委派的数据源,并且 LookUp 属于可委派的函数类别,但 AddColumns 函数仍属于部分可委派函数。 因此,整个公式的结果仍会限制到“产品”数据源的第一部分。
虽然 LookUp 函数及其关联数据源支持委派,有助于在庞大的数据集中发现供应商,但它也有一个注意事项。 LookUp 需要对产品中每条初始记录的数据源进行单独查询,这会增多网络活动。 但是,如果供应商数据集相对较小,而且比较稳定,则还可以在应用内缓存数据源。 在应用初始化期间使用 Collect 调用(在打开的屏幕上使用 OnVisible)允许直接在缓存的数据源中执行后续 LookUp 运算,从而减少网络话语。