【问题标题】:Spotfire Running Balance (Cumulative Sum)Spotfire 运行平衡(累计)
【发布时间】:2017-12-01 00:33:04
【问题描述】:

我正在尝试在 Spotfire 中创建一个运行余额列,该列应该如下图所示。本质上,我想逐行计算“金额”列的累积总数,并且我希望它随着日期的变化从 0 开始。

我尝试了几个 OVER 函数: Sum([AMOUNT]) OVER AllPrevious([Date]) Sum([AMOUNT]) OVER Intersect([CURRENCY],AllPrevious([SETTLEDATE])) Sum([AMOUNT]) OVER Intersect([Calculation Date],AllPrevious([SETTLEDATE]))

非常感谢任何帮助。

【问题讨论】:

    标签: sum spotfire cumulative-sum


    【解决方案1】:

    您的第一个 over 声明非常接近。问题是,当您使用 over (AllPrevious([Date])) 并且每个日期没有 1 行时,您将跳过行。因此,您的数据的最后一行只会将其与6/1/2017 位于Date 列中的行相加。相反,我们需要将 RowID 应用于您的数据集,然后对其求和。这将确保我们对所有之前的行求和。

    假设您的数据集按照您将其导入 SpotFire 时的顺序排列,请执行以下操作:

    • 插入计算列RowID() 并将其命名为RowID
    • 使用此计算:Sum([amount]) over (Intersect([Date],AllPrevious([RowID])))

    这将为您提供您正在寻找的运行总和。

    【讨论】:

    • 非常感谢您指出我的错误。您的解决方案效果很好!
    • 没问题@LeoL
    【解决方案2】:

    @scsimon- 我根据问题的要求稍微修改了您的自定义表达式以包含 date

    修饰表达式:

    Sum([Amt]) over (intersect(Allprevious([rowID]),[Date]))
    

    最终输出表:

    @LeoL - 希望这能回答你的问题。

    【讨论】:

    • @LeoL- 很高兴为您提供帮助。如果这解决了您的问题,请随时接受答案。
    猜你喜欢
    • 2019-02-12
    • 1970-01-01
    • 2015-12-07
    • 2018-01-14
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多