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

时间:2015-12-31 21:16:58

标签: python ironpython spotfire

长期用户第一个问题:

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

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>() 

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

2 个答案:

答案 0 :(得分:0)

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 :(得分:0)

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

替换的基础是: lc_myField = ldt_tbl.Columns ['Column Name']。AsCalculatedColumn lc_myField.Expression = ls_CalcExpression

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

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