Spotfire:使用表达式

时间:2019-10-14 05:53:41

标签: ironpython spotfire

我希望在Spotfire的桌子上执行一些基本的统计功能。例如:我想计算[A]列中所有值的平均值,并且需要将此值作为IronPython中的变量。

我可以读取列中的所有值,对其求和并在IronPython中完全计算平均值,但是由于我还想使用其他Spotfire的统计函数,因此我希望可以以某种方式调用Spotfire API并使用表达式(在创建计算列的方式相同)。 像这样:

expr = "Avg([{col}])".format(col = colName)

现在,我需要一种方法来调用此表达式并将结果存储在变量中以供以后使用。

使用伪代码:

colName = "Weight"
value = API.SomeFunction(expr)

如果有任何可能的话,我将不胜感激。对于所有的提示,我也将不胜感激。

1 个答案:

答案 0 :(得分:1)

以防其他人从中受益。 到目前为止,我发现的最好的近似值是(代码的相关摘录):

row6 = "Srel"
for col in SampleColumns:
    colExp = "StdDev([{col}]) / Avg([{col}]) * 100".format(col = col)
    colName = col + colExp[0:colExp.find("(")]
    sT.Columns.AddCalculatedColumn(colName, colExp)
    val = getFirstFloatValue(sT, colName)
    row6 += TAB + str(val)
    sT.Columns.Remove(colName)
row6 += EOL

我为表达式的每个组合创建计算列,我需要该列的值。然后,我读取了计算列的第一个值(所有值都相同):

def getFirstFloatValue(table, colName):
    cursor = DataValueCursor.Create[float](table.Columns[colName])
    for row in table.GetRows(cursor):
        return cursor.CurrentValue
    return 

我使用值val,然后删除列。

我相信可能会有更好的解决方案,但是无论如何我都会发布此消息,因为其他人可能会从该解决方案中受益。