计算列,引用其先前的值和当前值

时间:2017-11-27 03:28:03

标签: calculated-columns spotfire

我有一个要求,我在创建一个计算列。该列需要使用其自己的先前值以及其当前值(即,执行累积计算)。 我知道在Tableau中使用函数

是可行的
PREVIOUS_VALUE(-1) (from Tableau)

所以我可以做类似

的事情
$this->botman->hears('sup', function($bot) {
    $bot->startConversation(New OnboardingConversation);
});

Sample result

如何在Spotfire中执行此操作?换句话说,什么是等效的Spotfire功能

opt -mem2reg -simplifycfg -loops -lcssa -loop-simplify -loop-rotate -loop-unroll -unroll-count=3 -unroll-allow-partial -debug TrainingCode/trainingCode.ll -o TrainingCode/unrolledTrainingCode.bc

这是excel上的等效实现。其中[WDVpt2]是计算字段。 Cumulative calculation

1 个答案:

答案 0 :(得分:0)

我能够通过以下方法实现这一目标。它是Spotfire的一个限制,计算列无法在前一个节点引用它的值。在Tableau中,Lookup和Previous_value支持这个功能(不要与Spotfire的Previous()混淆,后者可以应用于静态列[x]所以[X_Calc] = [X_Calc] + [X_Calc] over(AllPrevious([ROWID]))不可能

步骤1:创建一个基于perdiod Rowid的ROW ID列([YEAR])

步骤2:将每行的结果分成单独的计算列,使第一行值

首先(Sum([WDVpt1])over(AllPrevious([RowID])) - (Sum([WDVpt1])over AllPrevious([RowID]))* [Policy rate]))over(AllPrevious([RowID] )))

步骤3:使用先前计算的列Eg为剩余时段(3到16)创建列: - 节点3的列将使用[WDVpt2_Year2]列,节点4将使用[WDVpt2_Year3]等等Sum((当[RowID] = 2然后[WDVpt1]结束)+ Min([WDVpt1])over([RowID]) - ((([RowID] = 2然后[WDVpt1]结束时的情况)+ Min([WDVpt2_Year2])结束(相交([资产类代码],[行ID])))* [政策利率]))结束(AllPrevious([RowID])))

Step4:编写一个case语句来生成一个单独的列

情况[RowID] = 2然后是第一个([WDVpt2_Year2])当[RowID] = 3然后第一个([WDVpt2_Year3])当[RowID] = 4然后第一个([WDVpt2_Year4])当[RowID] = 5然后第一个([WDVpt2_Year5])当[RowID] = 6然后第一个([WDVpt2_Year6])当[RowID] = 7然后第一个([WDVpt2_Year7])当[RowID] = 8然后第一个([WDVpt2_Year8])当[RowID] = 9然后第一个([WDVpt2_Year9])当[RowID] = 10然后第一个[WDVpt2_Year10])当[RowID] = 11然后第一个([WDVpt2_Year11])当[RowID] = 12然后第一个([WDVpt2_Year12])当[RowID]当[RowID] = 14然后第一个([WDVpt2_Year14])然后第一个([WDVpt2_Year14])然后第一个([WDVpt2_Year14])然后第一个([WDVpt2_Year15])当[RowID] = 16然后第一个([WDVpt2_Year16])结束时[WDVpt2]