【问题标题】:Tableau: exclude current row data from window averageTableau:从窗口平均值中排除当前行数据
【发布时间】:2017-03-15 08:08:19
【问题描述】:

我有一个学生平均分信息,我正在做一些统计工作,以找出学生与总分的重要性。下面是我的数据截图,我也附上数据供参考。

我可以使用 tableau 的 WINDOW_AVG 函数获得整体窗口平均值,但是我想将当前行排除在平均值之外。

例如,当我计算学生 7210 的总体平均值时,我必须保留 7210 学生的平均值 (83.320754717),并使用剩余的学生平均值来计算总体平均值。同样,在计算 7211 时,我必须将学生平均 (77.75806452) 排除在整体计算之外。

我已附上此link中的数据供参考。

谁能告诉我如何进行这个计算?

【问题讨论】:

  • 阅读手册中关于window_sum()、first()、last()、Index()和size()的参考部分
  • @AlexBlakemore。该手册仅包含有关功能的所有详细信息,不提供有关如何排除价值的信息。 first() 允许您选择第一个值,last() 将指向最后一个值,window_sum() 用于对整体值求和。没有在计算值时通过排除要计算的行来提到它。
  • 尝试编写一个公式,对当前项目的范围求和,但不包括当前项目,并将其添加到当前项目之后的值的总和,然后除以项目数.
  • @AlexBlakemore 我可以按照您所说的方式在 excel 中轻松完成此操作。但是由于我使用 tableau 来生成最终视图,所以我无法找到要使用的正确函数。我想过使用过滤器,但由于学生 ID 是动态的,所以它不起作用。
  • 下面的回答说清楚了吗?

标签: tableau-api


【解决方案1】:

这是计算除当前学生之外的班级平均分的公式,写成表格计算。

(zn(window_sum(avg([Student's Avg]), first(), -1)) +
 zn(window_sum(avg([Student's Avg]), 1, last()))) /
 (size() - 1)

或者等价的,

(window_sum(avg([Student's Avg])) - lookup(avg([Student's Avg]), 0)) / (size() - 1)

与任何表格计算一样,公式只是故事的一部分。您还必须指定分区和寻址。在这种简单的情况下,您只需将“计算使用”设置为 StudentId。

表格计算是由 Tableau 根据数据源返回的聚合查询结果表计算的 - 因此字段 [Student's Avg] 周围的聚合函数 avg()。如果每个学生只有一个价值,那么 SUM()、AVG()、MIN() 等的选择无关紧要。如果您的数据源对每个学生有多个数据行,例如针对每个测试分数,那么在这种情况下您需要确保使用 AVG()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多