SPOTFIRE:在OVER中使用$ csearch后访问列名

时间:2018-05-04 16:38:41

标签: spotfire

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

从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"]) )

我希望这是有意义的,并提前感谢。

1 个答案:

答案 0 :(得分:0)

幸运的是IronPython在这里拯救了一天!

刷新表后触发脚本,并遍历数据表中的所有列,检查列名是否以“P”开头。如果是,请将列的平均值添加到字符串中,然后将其放入新属性中(我将其命名为“SelectedColumns”)。然后可以抛出这个属性,你想要那个讨厌的平均列表([“P1”]),平均([“P2”],...,平均([“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]