我是Spotfire的新手,我希望你能提供帮助。我有超过280,000行的Excel工作表,因此当我运行公式时,我的Excel工作表变得极其缓慢。我希望Spotfire可以提供帮助。 我想要实现的目标是:医生在2015年支付了一定的金额,然后在2016年收回完全相同的金额。我希望在2015年识别这些支付并在2016年交易中收回仅< / strong>来自280,000行。下面的图片显示了Excel中的正面和负面示例。
使用D,L,N和D列。 J我使用SUMIFS公式在列O中识别偏移到零的正和负交易。如果没有计算机的慢速,Spotfire可以在计算列中实现相同的功能吗?
以下是我迄今为止在Spotfire中所做的不多,但我很新,Synax对我来说是新手。 计算列是否可以在日期列之后进入,并确定2015年和2016年的正面和负面偏移为零?任何帮助将不胜感激。谢谢
这是我用来实现我在excel中所需要的公式,它需要很长时间才能处理,但它有效。我们可以将这个公式用于Spotfire吗?
答案 0 :(得分:1)
您可以通过聚合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匹配时,请返回我&#34; GOT YOU&#34;或&#34; 1&#34; :-) 任何帮助将不胜感激。
不知道为什么这不起作用
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和来自[reimburse 2016]的1s将[amount]列偏移为零然后显示我&#34; 1&#34;别的&#34; 0&#34;在一个新专栏中