连接两种不同类型的表时 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 中的自定义聚合的主要内容,如果未能解决你的问题,请参考以下文章