使用TurboIntegrator (TI)导入关系数据库数据进入 IBM Planning Analytics

📅 2026/6/16 12:32:59
使用TurboIntegrator (TI)导入关系数据库数据进入 IBM Planning Analytics
从关系型数据库如IBM DB2导入数据是IBM Planning Analytics在生产环境下的核心能力。这主要依赖其强大的TurboIntegrator简称TI进程。简单来说就是通过TI进程建立ODBC连接并编写SQL查询来抽取数据。 为什么需要 TurboIntegrator (TI)在真实的项目中数据源多种多样。TI 进程正是为了解决这个问题而设计的它可以连接CSV文件、关系数据库、其他多维数据集等多个外部数据源。它提供了高度的灵活性你可以编写SQL语句从源系统中挑选特定的数据列再通过TI脚本将这些列的数据映射并写入到目标模型的维度和立方体中。从最新的版本来看这类导入也得到了加强例如可以直接从ODBC数据源导入维度和数据甚至可以在一次引导式导入中同时处理元数据和数据。⚙️ 如何通过TI进程从DB2导入数据通过TI进程进行数据导入大致需要经过三个步骤。前置准备建立ODBC连接由于TI进程依靠ODBC与数据库对话这一步需要在TI能访问到的环境中建立ODBC连接。根据你的部署方式操作有所不同PA Local (本地部署)DB2的ODBC客户端软件包含驱动必须安装在运行TM1数据库的同一台服务器上。PA on Cloud / SaaS (云上部署)可以通过IBM Satellite Connector卫星连接器安全连接到云端的数据库。新版本的PA SaaS还可以使用ExecuteHTTPRequestTI函数调用数据库的REST API但对于传统的DB2数据库ODBC仍然是主流方式。核心实现创建并使用ODBC数据源的TI进程连接建立后就可以在PAW里创建TI进程了。新建进程并配置数据源在Workbench的数据库树中右键点击Processes-Create new process。在Data Source选项卡中数据源类型选择Database connection然后从下拉列表中选择你提前配置好的ODBC数据源名称DSN。编写SQL查询TI进程不关心表名它需要通过SQL查询来获取数据。你可以在“Database connection query”区域编写SELECT语句例如sqlSELECT GL_Account_Code AS Account_Code, GL_Account_Name AS Account_Name, GL_Account_Type AS Account_Type, Dept_Code, Jan_Amount, Feb_Amount, Mar_Amount FROM FACT_TABLE WHERE FISCAL_YEAR 2026自动生成变量点击“Preview”TI会自动将SQL查询的返回列如Account_Code识别为变量。编写脚本处理数据TI进程包含Prolog、Metadata、Data和Epilog四个主要的脚本区域。在Data选项卡中编写的代码会被执行一次来处理SQL查询返回的每一行数据以加载损益表的实际金额为例确定维度成员使用SQL中的列这里是Account_Code作为维度元素名称。写入数值将Jan_Amount列的值写入到Amount度量值对应的单元格。总结TI进程处理单行数据的逻辑最终Data区域的脚本逻辑如下TI进程遍历SQL查询返回的每一行并从中提取相关信息来填充立方体的一个单元格。例如某行数据返回了Account_Code 4000和Jan_Amount 1000.00那么TI进程在Data部分执行的代码效果类似于CellPutN( Jan_Amount, IS Reporting, 4000, 101, Actual, 2020-01, Amount)这是一个逻辑上的示意旨在说明Account_Code和Jan_Amount等列是如何被用作填充单元格的依据。实际的PAW / TI脚本语法会有些不同。 进阶场景反向数据导出TI进程也能通过ODBC将PA中的数据写回关系型数据库实现数据的闭环流转。任务自动化创建好的TI进程可以设置为定期执行的Chore定时任务实现数据同步的自动化。流程编排与复杂模型对于更复杂的数据集成需求也可以使用专业的ETL工具如IBM DataStage作为桥梁这类工具通常内置了对关系数据库和Planning Analytics的优化连接器能更好地应对复杂的转换清洗和任务编排。 总结总的来说从关系数据库导入数据核心是掌握TI进程这个工具。无论数据源是CSV还是DB2在TI看来都是一样的你需要为它指定数据来源和连接方式然后编写脚本告诉它“如何将数据模型化”。如果能提供更多关于你数据源比如是本地部署还是云端DB2以及表结构的信息我可以为你提供更具体的方案或脚本示例。