2014-09-26 52 views
0

我有一个可用于加载Excel文件并将其内容添加到现有数据源的IronPython脚本。当加载Excel文件时,我正在使用DataFlowBuilderExpressionTransformation来执行一些数据转换,例如,将列从Int转换为Real。如何避免在Spotfire SDK中使用包含方括号的colum名称时出现“System.ArgumentException:无效的表达式”?

这个工作,除非列名称包含方括号 - 每当我尝试使用包含方括号的名称,我得到一个“System.ArgumentException:不是一个有效的表达式:Cast([Process Time [h]] Real )“例外(其中”处理时间[h]“(不带引号)是Excel列的名称)。

CODE

transformation = ExpressionTransformation() 

transformation.ColumnReplacements.Add(
     "Process Time [h]", 
     "Cast([Process Time [h]] as Real)", 
     ColumnSelection([DataColumnSignature("Process Time [h]", DataType.Integer)]) 
) 

事情我已经试过

  • 用双引号"Cast([\"Process Time [h]\"] as Real)"
  • 用单引号"Cast(['Process Time [h]'] as Real)"
  • 逃逸引用的列名引用的列名方括号^ h \"Cast([Process Time \[h\]] as Real)"
  • \\"Cast([Process Time \\[h\\]] as Real)"

任何想法逃脱方括号?还是应该联系Tibco Spotfire支持部门?

+1

您是否试过用方括号将方括号转义出来?例如'Cast([处理时间[[h]]]为真)'。不知道Spotfire:您是否尝试过在发生异常时查看SDK的功能? – 2014-09-29 11:34:38

+0

好的猜测(没有想过用方括号来转义方括号) - 这样可以摆脱错误信息,但是那么列名称不匹配(转换不会执行)。出于好奇,我添加了一个名为“Process Time [[h]]”的列,并立即得到另一个(完全不同的)错误消息。 – 2014-09-29 13:18:06

回答

2

Cast([Process Time [h]]] as Real)应该工作。请注意0​​和]的不平衡数量。

相关问题