目标是在动态变化的数据表中聚合列。
从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"]) )
我希望这是有意义的,并提前感谢。
答案 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]