【问题标题】:SPOTFIRE: Access Column Names after using $csearch in OVERSPOTFIRE:在 OVER 中使用 $csearch 后访问列名
【发布时间】:2018-10-15 05:12:22
【问题描述】:

目标是聚合动态变化的数据表中的列。

当从 Spotfire 的下拉列表中选择文件时,会动态创建数据表 (currentOutputTable)。该表包含有关不同属性(P 和 T)的信息,但每个属性的数量可能会根据正在读取的文件而变化。

+------+----+----+-----+----+----+-----+
| Time | P1 | P2 | Pn  | T1 | T2 | Tn  |
+------+----+----+-----+----+----+-----+
|    0 |  0 |  2 | ... | 10 | 15 | ... |
|    1 |  1 |  5 | ... | 12 | 18 | ... |
|    2 |  5 |  5 | ... | 15 | 15 | ... |
|    3 | 10 |  5 | ... | 15 | 20 | ... |
+------+----+----+-----+----+----+-----+

例如,我想创建每个 P 属性平均值的条形图。

我希望有一种方法可以使用$csearch 执行以下操作,但我无法弄清楚。

Avg([Column from OVER])
OVER
$esc($csearch([currentOutputTable],"P*"))

我得到的最接近的是使用

$esc($csearch([currentOutputTable],"P*"))

以及按列名的格子或类别,但显然这并没有给出平均值。

基本上我只想绘制每个单独 P 参数的平均值

(Avg(["P1"]), Avg(["P2"], ... , Avg(["Pn"]) )

我希望这是有道理的,并在此先感谢。

【问题讨论】:

  • 您是否提前知道将根据下拉选择返回的属性数量?您也可以动态编辑公式吗?
  • 不幸的是,我不知道文件中属性的数量。一个文件中可能有 5 个 P 列,而另一个文件中可能有 10 个。
  • 如果我这样做会有帮助吗?我问是因为如果这对解决方案很重要,我也许可以更改文件或其他包含文件信息的数据表。
  • 如果我理解正确...如果您知道用户想要加载哪个文件(听起来您已经这样做了),并且如果您知道该文件中有多少参数,那么您能只需将自定义公式写入文档属性并将该文档属性用作条形图公式?公式的长度会因所选文件而异。

标签: spotfire


【解决方案1】:

幸运的是 IronPython 来拯救这一天!

在表刷新后触发脚本,循环遍历数据表中的所有列,检查列名是否以“P”开头。如果是这样,请将列的平均值添加到一个字符串中,然后将其放入一个新属性中(我在这里将其命名为“SelectedColumns”)。然后可以将这个属性扔到你想要 Avg(["P1"]), Avg(["P2"], ... , Avg(["Pn"]) 的讨厌列表的地方

from Spotfire.Dxp.Application.Visuals import *
from System import DateTime 
from Spotfire.Dxp.Data.DataType import Date 


myDocument=Application.Document      

if myDocument.Data.Tables.Contains("currentOutputTable")==True:
   myTable=myDocument.Data.Tables["currentOutputTable"]     

x = ""
for col in myTable.Columns: 
    #print col.Properties["ExternalName"] 
    #print col.Properties["Name"]
    if col.Properties["Name"][0] == "P":
        x+= 'Avg(["' + col.Properties["Name"] + '"]), '

#print x[0:len(x)- 2]       
Document.Properties["SelectedColumns"] = x[0:len(x)- 2]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 2016-08-07
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 2015-08-08
    • 2016-12-09
    • 1970-01-01
    相关资源
    最近更新 更多