繁体   English   中英

Spotfire计算列

[英]Spotfire Calculated Column

我是Spotfire的新手,希望您能为您提供帮助。 我的Excel工作表超过280,000行,因此当我运行公式时,Excel工作表变得非常慢。 我希望Spotfire可以提供帮助。 我要实现的目标是:在2015年向医生支付一定的金额,然后在2016年收回完全相同的金额。我希望在2015年识别出这些已支付的金额,并在2016 年仅从280,000行中收回这些交易。 下图显示了Excel中正负的示例。 在此处输入图片说明

在D,L,N和JI列中,使用SUMIFS公式在O列中标识了抵消为零的正交易和负交易。 Spotfire是否可以在不降低计算机速度的情况下在计算列中实现相同目的?

以下是我到目前为止在Spotfire中所没有的功能,但是我很新,而Synax对我来说是新的。 在此处输入图片说明 是否可以在日期列之后输入一个计算列,以标识偏移为零的2015年和2016年的正数和负数? 任何帮助将不胜感激。 谢谢

第一步 在此处输入图片说明

第三栏什么也没回来 在此处输入图片说明

这是我用来实现自己在excel中需要的公式,它需要很长时间才能完成,但它确实有效。 我们可以在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

好的,所以我添加了一个视觉效果以更好地描述我的问题。 我希望自定义函数执行的操作是:[2015年付款]中有1,[2016年偿还中]有1,[客户ID]保持不变,而[2015年付款]中有1 [报销2016]中的1会将[金额]列偏移为零,然后在新列中显示“ 1”,否则显示“ 0” 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM