Spotfire计算列

我是Spotfire新手,希望你能帮上忙。 我有一个超过280,000行的Excel工作表,因此当我运行我的公式时,我的Excel工作表变得极其缓慢。 我希望Spotfire能够提供帮助。 我试图达到的是这样的:医生在2015年支付一定的金额,然后在2016年收回完全相同的金额。我期待在2015年确定这些支付,并在2016年收回从280,000行。 下面的图片显示在Excel中的正面和负面的例子。 在这里输入图像说明

使用列D,L,N和JI使用SUMIFS公式在O列中标识抵消零的正和负交易。 Spotfire能否在计算列中实现同样的function,而不需要计算机的放慢?

下面是我迄今为止在Spotfire中没有太多的东西,但是我很新,Synax对我来说是新的。 在这里输入图像说明 计算的列是否可以在date列之后进入,并确定2015年和2016年的正面和负向偏移为零? 任何帮助将不胜感激。 谢谢

第一步 在这里输入图像说明

第三列没有任何东西回来 在这里输入图像说明

这是我用来实现我所需要的长时间处理,但它的工作原理的公式。 我们可以采用这个公式到Spotfire吗? 在这里输入图像说明

你可以通过聚合over子句来实现这一点。 如果你可以粘贴一个文本版本的数据集,那么我们可以确保我们得到它100%的权利,但这里是关于你想要的。

为每个客户获得2015年的总和。 此公式指出付款年份是否为2015年,然后按客户ID将所有金额列和组加起来。

If(DatePart("year",[Date of Payment])=2015,Sum([Amount]) OVER ([CustomerID])) as [2015CustomerTotal] 

为每个客户获得2016年的总和

 If(DatePart("year",[Date of Payment])=2016,Sum([Amount]) OVER ([CustomerID])) as [2016CustomerTotal] 

那么你可以检查它们是否被清零。

 If([2016CustomerAmount] - [2015CustomerAmount] = 0,True,False) 

所以我得到了以下的工作(V为自己感到骄傲)

 If(DatePart("year",[Date of Payment])=2015, True,False) 

要继续从上面,我需要知道,当在2016年有一个负面的,并在2015年匹配数额和[自然]和[客户ID]列ID匹配,然后返回我“GOT YOU”或“1 “ :-) 任何帮助将不胜感激。

不知道为什么这不起作用

 CASE WHEN ([Amount]>0) AND (DatePart("year",[Date of Payment])=2015) Then "GOT YA" 

弄清楚了

 CASE WHEN [Amount]>0 AND (DatePart("year",[Date of Payment])=2015) Then "GOT YA" else "No GOT" end 

好,所以我们正在得到一个地方,我觉得:-)所以下面现在告诉我在2015年的付款

 CASE WHEN [Amount]>0 AND (DatePart("year",[Date of Payment])=2015) Then "1" else "0" end 

下面这里现在告诉我在2016年有什么收入或者收回的金额

 CASE WHEN [Amount]<0 AND (DatePart("year",[Date of Payment])=2016) Then "1" else "0" end 

好的,我已经添加了一个视觉来更好地描述我的问题。 我想定制的function是:2015年支付1,2016年支付1,[客户ID]保持不变,1 [2015年支付]和1 [reimburse 2016]中的1将[amount]列偏移为零,然后在新列中显示“1”或“0” 在这里输入图像说明