2014-09-26 4 views
0

У меня есть рабочий скрипт IronPython для загрузки файла Excel и добавления его содержимого в существующий источник данных. При загрузке файла Excel я использую DataFlowBuilder с ExpressionTransformation для выполнения некоторых преобразований данных, например. преобразование столбцов из Int в Real.Как избежать "System.ArgumentException: Недействительное выражение" при использовании имени colum с квадратными скобками в SDK Spotfire?

Это работает, если имя столбца не содержит квадратных скобок - всякий раз, когда я пытаюсь использовать имя, содержащее квадратные скобки, я получаю «System.ArgumentException: Недействительное выражение: Cast ([Process Time [h]] as Real) " исключение (где" Время процесса [h] "(без кавычек) - это имя столбца Excel).

КОД

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)"
  • вылетающих квадратные скобки ч \"Cast([Process Time \[h\]] as Real)"
  • спасаясь квадратные скобки с \\"Cast([Process Time \\[h\\]] as Real)"

Любые идеи? Или я должен связаться с поддержкой Tibco Spotfire по этому поводу?

+1

Вы пытались избежать квадратных скобок квадратными скобками? например 'Cast ([Время процесса [[h]]] как Real)'. Не зная Spotfire: вы пытались посмотреть, что делает SDK, когда он выдает исключение? –

+0

Хорошая догадка (не думал использовать квадратные скобки для избежания квадратных скобок) - это избавляется от сообщения об ошибке, но тогда имя столбца не совпадает (преобразование не выполняется). Из любопытства я добавил столбец «Process Time [[h]]» и сразу получил другое (совершенно другое) сообщение об ошибке. –

ответ

2

Cast([Process Time [h]]] as Real) должно работать. Обратите внимание на несбалансированное количество [ и ].