Spotfire:使用 IronPython 更改计算列中的公式

Spotfire: changing formula in calc column using IronPython

老用户第一个问题:

我正在尝试使用 ironpython 更新 Spotfire 计算列中的公式。我有一个名为 tbl_test 的 table,其计算列为 'Biz_rule'。我创建了一个名为 str_statement 的字符串,并尝试使用它用下面的代码替换计算列中的表达式:

calc_col = tbl_test.Columns.Item['Biz_rule']
calc_col = calc_col.As<CalculatedColumn>()
calc_col.Expression = str_statement;

我收到以下错误。

Traceback (most recent call last):
  File "Spotfire.Dxp.Application.ScriptSupport", line unknown, in ExecuteForDebugging
  File "<string>", line 25, in <module>
  AttributeError: 'bool' object has no attribute 'Expression'

我假设是因为

calc_col.As<CalculatedColumn>() 

returns 一个布尔值,指示操作是否成功。如何获取计算列的实例以便更新表达式?

tbl_test = Document.Data.Tables['data source scott']
calc_col = tbl_test.Columns.Item['Job Job']
calc_col.Properties.SetProperty('Expression','[JOB]')

上面的代码对我有用。这是你试图做的吗? 问题是你为什么使用

'calc_col.As<CalculatedColumn>()' 

?

我首先尝试更新现有计算。 如果失败,我尝试删除第 1 列(如果它被冻结),然后我添加一个包含计算的新列。

替换的基本内容是: lc_myField = ldt_tbl.Columns['Column Name'].AsCalculatedColumn lc_myField.Expression = ls_CalcExpression

添加的基础知识是: ldt_tbl.Columns.AddCalculatedColumn('Column Name', ls_CalcExpression)

其中 ldt_tbl 是数据 table,ls_calcExpression 包含您的表达式。