首页 > 解决方案 > 在 Powerapp 中计算图库中数字的平均值

问题描述

我目前正在制作一个powerapp,学生应该可以在其中输入他们的成绩。我目前正在研究显示平均值的功能并遇到无法在 ForAll() 中使用 Set() 的问题。我有画廊的所有平均成绩。

我到目前为止的代码,但不起作用的是

Set(sum, 0);
Set(weight, 0);

ForAll(
    GradeGallery.AllItems,
    sum = sum  + ThisRecord.Note * ThisRecord.Gewichtung;
    weight = weight + ThisRecord.Gewichtung;
);

Set(average, sum / weight)

标签: powerappspowerapps-canvaspowerapps-formula

解决方案


Power Apps 的语言 (Power Fx) 的核心是一种声明式(函数式)语言,而不是命令式语言:虽然有一些方法可以进行命令式计算,但如果您避免使用它们,您将获得平台的最佳性能。在这种情况下,您可以使用以下表达式来计算画廊项目的平均值:

Sum(GradeGallery.AllItems, ThisRecord.Note * ThisRecord.Gewichtung) /
    Sum(GradeGallery.AllItems, ThisRecord.Gewichtung)

请注意,如果图库中没有项目,这可能会导致除以零,因此您可以使用类似于下面的表达式来避免这种情况:

With(
    { all: GradeGallery.AllItems },
    If(
        CountRows(all) = 0,
        0,
        Sum(all, Note * Gewichtung) / Sum(all, Gewichtung)))

推荐阅读