我的公司决定使用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中无法解决的问题。感谢所有帮助。
答案 0 :(得分:1)
更新:感谢您加入时间戳列和说明。我仍然需要使用我创建的[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
顺便说一句,您可以转到编辑»列属性,选择有问题的列,然后选择< strong>“格式设置” 标签,最后根据需要设置十进制下拉列表。
首先,欢迎来到StackOverflow。请将来准备提供完整的Minimally Complete, Verifiable Example。就Spotfire而言,这意味着我可以将其复制粘贴到Spotfire中的示例数据集(以文本形式),包括一列显示您的预期结果。您可以在Excel或记事本中创建此文件。请理解,我正在抽出时间来帮助您解决问题,并要求您必须尽可能简化我的工作。
第二次,欢迎来到Spotfire!我和你学的一样。我强烈建议您的雇主为TIBCO Spotfire在线课程付费,因为它们将为使用该工具提供很好的理解基础。
由于您尚未完全回答关于数据集的问题,因此我对您的数据集做了以下假设。如果我的假设不正确,请回答关于您的数据集的问题。
为了满足您的要求,首先我需要创建一列以删除上面的假设1。我称此列为[Row]
,其表达方式很简单:
RowId()
这将输出该行的原义行号(与BaseRowId()
函数相对,后者在应用任何标记和过滤器后显示 visual 行号)。
之所以创建它,是因为为了比较行之间的关系,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]
,但不能将其完全删除。