多个级别的 Spotfire Sum

Spotfire Sum over multiple levels

我有一个费用文件,其中包含每个与会者的单独记录,但重复了总费用金额。

Employee    Report ID   Transaction Date    Vendor           City/Location  Expense Type    Approved Amount Attendee Name
John Smith  A           4/20/2016           UNITED AIRLINES  NYC            Airfare         317.1           Jane smith
John Smith  A           4/20/2016           UNITED AIRLINES  NYC            Airfare         317.1           jack smith
John Smith  A           4/20/2016           UNITED AIRLINES  NYC            Airfare         317.1           tom white
John Smith  A           4/20/2016           Bar and Grill    NYC            Dinner          94.74           kelly thompson
John Smith  A           4/20/2016           Bar and Grill    NYC            Dinner          94.74           joan ellen
John Smith  A           4/20/2016           Bar and Grill    NYC            Dinner          94.74           albert coals

我需要按城市汇总费用总额而不重复费用金额。我在城市上做交叉 table 时尝试了以下自定义表达式:

Sum(max([Approved Amount]) over (Intersect([Transaction Date],[Vendor])))

但这导致了

City  Amount
NYC   1235.52

我正在寻找类似

的结果
City  Amount
NYC   411.84

如有任何建议,我们将不胜感激。

我认为这会奏效,但我承认我在测试时遇到了一些问题:

Sum(Max([Approved Amount]) OVER (Intersect(All([Axis.Rows]),[Vendor])) * (If(RankReal([Approved Amount],[Vendor],"ties.method=first")>1,0,1)))

@cookieemnstr247 - 请测试以下解决方案,如果有效请告诉我。

步骤 1: 插入计算列 'Rank'

Rank([Approved Amount],"desc",[Employee],[Transaction Date],[City/Location],[Vendor],"ties.method=first")

步骤 2: 插入了另一个计算列 'sumvalue'

If([Rank]=1,[Approved Amount],0)

第 3 步: 创建一个十字 table,如下面的屏幕截图所示

我用不同的场景测试了这个解决方案,它似乎是 stable。

注:Employee、Transaction date、city/Location和Vendor仅用于本例中的分组。如果您想将更多列添加到分组中,请将这些列添加到排名列