委派警告、限制和不可委派函数

已完成

Power Apps 通过视觉对象来帮助您这样的应用制作者了解委派的发生时间。 Maker Portal 还有一项设置可以调整,用于在无法委派时提高返回的数据量。

委派警告

每次您使用不可委派函数时,Power Apps 都会使用曲线下划线进行标注,并显示一个黄色的三角警告标志,如下所示。

带有蓝色下划线和黄色三角警告标志的不可委派函数的屏幕截图。

这样可以更加清晰地向您明确不可委派,由本也意味着您可能看不到所有数据。 关于视觉对象指示标志,有些东西是必须要了解的。

  • Power Apps 始终会提供本警告,不受数据源大小的限制。 即使您的数据源仅包含几个项目,并且从技术上讲委派不会出现问题,这一警告也还是会显示出来。 请记住,默认将返回前 500 个项目并在本地处理。 只要您的公式未委派,就会显示该警告。

  • 警告指示标志只会对应导致委派问题的第一个项目。 请注意上面的屏幕截图,只有“FirstName”字段带有曲线下划线。 这是因为它是导致委派的第一个项目。 在本应用场景中,“LastName”也会导致委派,但不带下划线。 这可能会令人困惑,因为人们会尝试解决 FirstName 与 LastName 之间的差异,而非真正的问题(即搜索功能)。 如果您遇到这种困惑,请重新排列公式,以验证首先显示问题的字段。

    指出导致委派的第一个项目的“警告指示标志”的屏幕截图。

  • 本视觉对象指示标志只有当您在 Maker Portal 中构建应用时才会显示。 用户在运行应用时,不会收到委派未发生的通知,可能只会看到部分结果。 您在设计应用和进行相关构建时,一定要注意这一点。

不可委派时,更改返回的记录数

当公式出于任何原因无法委派至数据源时,Power Apps 默认会从该数据源中检索前 500 条记录并在本地运行该公式。 Power Apps 支持在 1 到 2000 之间调整本项限制。 可在“高级设置”中调整本项限制。

  1. 从 Maker Portal 中,选择屏幕顶部的菜单中的设置。 如果您没有看到设置,请单击三个省略号。

  2. 应用设置下,保持选中常规选项卡,然后向下滚动到数据行限制

  3. 将不可委派查询的数据行限制设置为 1 到 2000 之间的任何值。

  4. 设置限制后,选择右下角的关闭,以保存更改并返回到 Maker Portal。

Power Apps 设置中“高级设置”的屏幕截图,其中设置了数据行限制。

调整本项设置的可能原因主要有两个。

  • 当您处理数据时,如果 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 将信息从一个表合并到另一个表,这在数据库术语中通常称为联接。 例如:

AddColumns( Products, "Supplier Name", LookUp( Suppliers, Suppliers.ID = Product.SupplierID ).Name )

即使“Products”和“Suppliers”是可委派的数据源,并且 LookUp 函数可委派,但 AddColumns 函数仍属于部分可委派函数。 因此,整个公式的结果仍会限制到“Products”数据源的初始客户细分。

虽然 LookUp 函数及其关联数据源支持委派,有助于在庞大的数据集中发现供应商,但它也有一个注意事项。 LookUp 需要对产品中每条初始记录的数据源进行单独查询,这会增多网络活动。 但是,如果供应商数据集相对较小,而且比较稳定,则还可以在应用内缓存数据源。 在应用初始化期间使用 Collect 调用(在打开的屏幕上使用 OnVisible)允许直接在缓存的数据源中执行后续 LookUp 运算,从而减少网络话语。