连接两种不同类型的表时 Tableau 中的自定义聚合

Posted

技术标签:

【中文标题】连接两种不同类型的表时 Tableau 中的自定义聚合【英文标题】:Custom aggregation in Tableau when joining two different types of tables 【发布时间】:2020-04-15 16:40:02 【问题描述】:

我对 Tableau 还很陌生,但在其他方面非常精通数据和 SQL 等。

我正在开发一个显示一些财务数据的仪表板。两个主要类别是“实际”结果和“计划”(或预算)。

实际结果是按成本中心和帐户在单个交易级别。该计划位于成本中心和帐户级别。例如:

实际表格:

Cost Center | Account | Amount
______________________________
ABC           10023     500
ABC           10023     600
BAC           10023     250
BAC           10023     300

计划表:

Cost Center | Account | Plan Amount
___________________________________
ABC           10023     2000
BAC           10023     2300

在 Tableau 中将这两个表连接在一起时,计划金额会在事务级别重复(显然,因为它是简单的 LEFT JOIN),在此示例中,成本中心 ABC 将总计为 4000,对于BAC 总计为 4600。

我希望以某种方式完成的是计划金额仅在成本中心级别聚合,而不是在交易级别。在我使用的实际表格中,成本中心通过部门层次结构汇总,即一个部门可以有多个成本中心等,当我在部门或部门级别显示结果时,它真的会炸毁计划金额数字,他们被夸大了。

有没有办法在 Tableau 中实现这一点?在 SQL 中,我可能会使用某种窗口函数将计划金额除以每个成本中心的事务数,以便正确聚合(尽管这会导致一些舍入错误,但不会导致该材料)。但不知道如何在 Tableau 中执行此操作。

【问题讨论】:

这可能是数据混合而不是连接的更好用例。在聚合级别组合的单独查询。请参阅有关混合的帮助和培训材料。混合有一些棘手的边缘情况需要小心,但可以很好地解决此类问题。 是的,混合成功了。感谢您的帮助。 【参考方案1】:

加入时,它会被置于事务级别,就像任何正常的内部连接一样。因此,您可以选择如何处理。

您可以使用聚合来做到这一点 - 即,您可以使用 MIN / MAX / AVG 字段代替 SUM,这将始终返回相同的值。

或者,您可以混合这些数据,而不是加入。如果您在可视化层中混合并且仅在显示成本中心级别时混合它,这将阻止聚合所有事务。混合这将是一个完全独立的数据源。它将在 Tableau 中“混合连接” - 请参阅数据 - 在 Tableau 中编辑混合关系。

【讨论】:

以上是关于连接两种不同类型的表时 Tableau 中的自定义聚合的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 cellForRowAtIndexPath 以处理两种不同的自定义 UITableViewCell 类型

【Tableau】Tableau中的数据关联(联接)

ORA-00942: 写入数据库中的表时表或视图不存在错误

存储过程(Informix)中的自定义“WHERE”?

Drupal 8中的内容类型是否与数据库中的表相同?

当它引用与表单不同的表时如何更新组合框