繁体   English   中英

Spotfire列中的计算

[英]Calculations within a spotfire column

我的公司决定使用Spotfire,然后任命我Spotfire专家(因为我在那儿,所以我现在就搞清楚了)。 我们处理的是非常大的数据集(我要询问的是几百万行)。 无论如何,该列是Z数据,每个连续单元之间的差异将显示其代表的机器已移动了多远。 例如:

Name    Time Stamp         X      Y     Lat     Long      Z         Delta Z
Name    28.3.2018 10:59 0,02438 0,02888 60,49   26,96   0,037794693 
Name    28.3.2018 10:59 0,02671 0,03768 60,49   26,96   0,046186649 0,00839
Name    28.3.2018 10:59 0,02409 0,0294  60,49   26,96   0,038009053 0,00818
Name    28.3.2018 11:00 0,02676 0,03768 60,49   26,96   0,046215582 0,00821
Name    28.3.2018 11:00 0,02393 0,02941 60,49   26,96   0,037915604 0,00830
Name    28.3.2018 11:00 0,02669 0,03761 60,49   26,96   0,046117981 0,00820
Name    28.3.2018 11:00 0,02341 0,02966 60,49   26,96   0,037785496 0,00833
Name    28.3.2018 11:00 0,02673 0,03758 60,49   26,96   0,046116692 0,00833
Name    28.3.2018 11:00 0,02329 0,0297  60,49   26,96   0,037742736 0,00837
Name    28.3.2018 11:00 0,02205 0,0306  60,49   26,96   0,037716873 0,00003

因此,以上是我从excel取得的输出中的几行转储。 我在源数据(即JSON)上运行python脚本,并且输出上述内容,但需要计算的最后两列除外。 我可以使用spotfire制作Z列(这是简单的毕达哥拉斯,因为X和Y沿参考点向上并从参考点向上),但我需要的是整天Z的变化(增量Z)。 在excel中,它很容易,因为公式是“ = ABS(G3-G2)”,然后将其粘贴到整个列中,就变成了“ = ABS(G4-G3)”,“ = ABS(G5-G4)”,依此类推。 由于文件太大,我无法在excel中创建它。

该公式不会将第一个Z作为固定的锚点,而是始终使用每个Z。 然后,数据使我可以看到机器在一定时期内移动了多远。

这是我在Spotfire中无法解决的问题。 所有帮助表示赞赏。

更新:感谢您包括时间戳列和说明。 我仍然需要使用我创建的[Row]列,因为我想确保一切按正确的顺序进行,并且时间戳不够精确,无法确保这一点。 如果您的实际数据集中有秒或毫秒的时间戳,建议在[Row]上使用它。

就是说,我认为与原始结果没有太大的区别,我认为我的以下回答几乎可以完全起作用。 最大的不同是[Delta Z]的空白行在数据集的顶部而不是底部。 我通过将表达式更改为来解决这个问题:

Abs([Z] - First([Z]) OVER Previous([Row]))

这是结果表。 [Delta Z]是您在上方发布的结果列, [DZ_1]是我的新列:

DeltaZ    Z              Row  DZ_1
          0.037794693    1    
0.00839   0.046186649    2    0.008391956
0.00818   0.038009053    3    0.008177596
0.00821   0.046215582    4    0.008206529
0.0083    0.037915604    5    0.008299978
0.0082    0.046117981    6    0.008202377
0.00833   0.037785496    7    0.008332485
0.00833   0.046116692    8    0.008331196
0.00837   0.037742736    9    0.008373956
0.00003   0.037716873    10   2.5863000000001E-05

顺便说一句,您可以通过以下步骤将显示的小数位数调整为任意值:转到“ 编辑 » 列属性” ,选择有问题的列,选择“ 格式”选项卡,最后根据需要设置“ 小数”下拉列表。


首先,欢迎使用StackOverflow。 请日后准备提供完整的“ 最低限度的可验证示例” 就Spotfire而言,这意味着我可以将其复制粘贴到Spotfire中的示例数据集(以文本形式),包括一列显示您的预期结果。 您可以在Excel或记事本中创建此文件。 请理解,我正在抽出时间来帮助您解决问题,并要求您必须尽可能简化我的工作。

第二,欢迎来到Spotfire! 我和你学的一样。 我强烈建议您的雇主为TIBCO Spotfire在线课程付费,因为它们将为使用该工具提供很好的理解基础。

鉴于此,我对您的数据集做出了以下假设,因为您尚未完全回答有关数据集的问题。 如果我的假设不正确,请回答关于您的数据集的问题。

  1. 没有列指示某种顺序,例如时间戳或行号
  2. 您不希望在数据集的最后一行有任何结果

为了满足您的要求,首先我需要创建一个删除上面假设1的列。 我将此列称为[Row] ,其表达方式很简单:

RowId()

这将输出该行的原义行号(与BaseRowId()函数相对,后者在应用任何标记和过滤器后显示可视行号)。

我之所以创建它是因为,为了比较行之间的关系,Spotfire需要某种指示符来指示哪一行在下一行之前。

然后用下面的表达式创建了第二列[Delta Z]

Abs([Z] - First([Z]) OVER Next([Row]))

换句话说,“对于每一行,取该行的[Z]的当前值,然后从在随后的所有行(即下一行)中找到的[Z]的第一个值中减去它”。

这将产生以下结果:

Z          Row     Delta Z
0.24157    1       0.03424
0.27581    2       0.03195
0.24386    3       0.000149999999999983
0.24371    4    

您可以通过该可视化的“属性”对话框在任何表可视化中隐藏[Row] ,但不能将其完全删除。

暂无
暂无

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

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