You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过C# API调用Spotfire TERR执行R脚本?

对接TERR运行R脚本的C#实现方案(Spotfire Analyst 14.0)

核心思路

要直接运行R脚本并获取结果,需基于DataFunction和DataFunctionExecutor构建完整的TERR执行流程,而非使用表达式或聚合类。以下是具体实现步骤:


1. 引用必要程序集

确保项目引用以下Spotfire核心程序集:

  • Spotfire.Dxp.Application
  • Spotfire.Dxp.Data
  • Spotfire.Dxp.Data.DataFunctions

2. 构建TERR数据函数并配置参数

创建TERR类型的DataFunction,定义R脚本内容、输入数据源映射,以及输出结果的结构(新表或计算列)。

using Spotfire.Dxp.Application;
using Spotfire.Dxp.Data;
using Spotfire.Dxp.Data.DataFunctions;

// 获取当前文档上下文
Document activeDoc = Application.Document;
DataFunctionEnvironment env = activeDoc.DataFunctionEnvironment;

// 创建TERR数据函数
DataFunction terrFunction = DataFunction.Create(env, DataFunctionType.Terr);

// 设置R脚本内容(示例:基于输入数据生成新列并输出结果表)
string rScript = @"
inputData <- InputData
inputData$CalculatedColumn <- inputData$OriginalColumn * 1.5
OutputData <- inputData
";
terrFunction.Script = rScript;

// 配置输入数据源(假设已有名为"SourceTable"的数据表)
DataTable sourceTable = activeDoc.Data.Tables["SourceTable"];
InputParameter inputParam = terrFunction.InputParameters["InputData"];
inputParam.DataReference = new DataTableReference(sourceTable);

// 配置输出结果(指定输出为新数据表)
OutputParameter outputParam = terrFunction.OutputParameters["OutputData"];
outputParam.DataReference = new NewDataTableReference("CalculatedResultTable");

3. 执行脚本并处理结果

使用DataFunctionExecutor执行配置好的函数,获取输出结果后,即可用你已有的代码将结果添加为新列或新表。

// 创建执行器并运行脚本
DataFunctionExecutor executor = new DataFunctionExecutor(env);
DataFunctionExecutionResult result = executor.Execute(terrFunction);

// 检查执行状态并处理结果
if (result.Status == DataFunctionExecutionStatus.Succeeded)
{
    // 获取输出结果表
    DataTable resultTable = activeDoc.Data.Tables["CalculatedResultTable"];
    
    // 后续操作:将结果列添加到原表,或直接使用新表(此处复用你已有的代码逻辑)
    Column calculatedColumn = resultTable.Columns["CalculatedColumn"];
    sourceTable.Columns.Add(calculatedColumn.Duplicate());
}
else
{
    // 捕获并抛出执行错误信息
    string errorDetails = string.Join("\n", result.Messages.Where(m => m.Type == MessageType.Error).Select(m => m.Text));
    throw new Exception($"TERR脚本执行失败:{errorDetails}");
}

4. 关键注意事项

  • 参数命名一致性:R脚本中的输入输出变量名(如InputData、OutputData)必须与InputParameters和OutputParameters中的键完全匹配。
  • 权限验证:确保Spotfire文档允许运行数据函数,可在文档设置中检查"数据函数"相关权限配置。
  • 数据类型兼容:输入数据表的列类型要与R脚本中的处理逻辑匹配,避免类型转换异常。
  • 资源清理:若生成了临时中间表,执行完成后可按需删除,减少文档冗余。

内容的提问来源于stack exchange,提问作者KirkD-CO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 04:47:06