2

我的 DataStage 版本是 8.5。

我必须用 datastage 性能数据填充 DB2 中的一个表,比如 job_name、start_time、finish_time 和 execution_date。

有一个包含很多工作的主序列。该序列本身每天运行一次。

每次运行此序列后,我必须收集性能值并将它们加载到 DB2 上的表中,以用于报告目的。

我是 datastage 的新手,我不知道如何使它工作。我的数据阶段的环境是 Windows,所以我不能使用 shell 脚本来处理它。

有什么方法可以让这些信息进入 datastage 吗?

我试图构建一个服务器例程并使用 DSGetJobInfo 获取数据,但我陷入了参数问题(如何将 xx 作业作为列表传递给它)。

对不起我的英语,不是我的母语。

提前致谢。

4

3 回答 3

1

您的服务器也在 Windows 上吗?我很困惑,因为你说“我的数据阶段”大多数时候服务器都安装在 linux / unix 上,而客户端是 windows。

最好使用的命令是(同样适用于 Windows 和 linux 服务器)

dsjob -jobinfo [项目名称] [职位名称]

输出将类似于-

作业状态:运行正常 (1)

作业控制器:不可用

入职时间 : Tue Mar 17 09:03:37 2015

工作波数:9

用户状态:不可用

作业控制:0

临时状态:未运行 (99)

调用 ID:不可用

最后运行时间:2015 年 3 月 17 日星期二 09:09:00

作业进程 ID:0

调用列表:[作业名称]

作业可重新启动:0

于 2015-03-17T15:42:11.860 回答
1

这些年之后,我找到了一些获取工作元数据的方法,但没有一个像我想要的那样好,所有这些方法都很难实现,而且经常失败。我找到了 3 种获取工作元数据的方法:

  • 直接从 xmeta 查询与 DATASTAGEX(*) 命名匹配的表

  • 从 DSODB 查询, DSODB 是操作控制台工具中的数据库,它有关于作业运行的所有日志信息,但必须启用操作控制台才能有数据(打开 appwatcher 进程)

为此,您可以构建一个 ETL,从这些数据库中读取并写入任何您想要的位置。

最后一个解决方案:

  • 调用一个调用脚本的工作后子例程,该脚本女巫将工作结果写入自定义表。

如果只需要这些数据来报告和分析,那么前两个解决方案就可以了。对于更具体的行为,第三个是必要的。

于 2018-04-05T17:57:23.110 回答
0

您要问的是 ETL 审计过程,它是 ETL 开发的支柱之一。我很惊讶您的 ETL 设计还没有

  1. 查询 XMETA - 根据我在多个 Datastage 环境中的经验。我还没有看到公司使用 XMETA DB 提取工作绩效信息

为什么 ??因为,Datastage 作业不建议访问 XMETA DB,考虑到 XMETA 拥有有关 DS 的重要元数据信息。也许您的 Datastage 管理员也不会同意为 XMETA 提供访问权限。

  1. 捕获运行元信息的最古老且最受信任的方法是在您选择的数据库中开发多实例、运行时列传播转换以及少量审计表。

我的想法:1.创建像 - ETL-Run_Stats 这样的表,其中包含 JOB_NAME 、 STARTED_TS 、 FINISHED_TS 、 STATUS 等字段。2. 现在创建您的多实例作业并将它们包含在您的 DS 主序列中。

如果您的 DS 序列现在看起来像这样 START ------> MAIN_DSJOB -------> SUCCESS

在您的审计工作之后,您的 DS 序列应如下所示

START ----> AUDIT_JOB(开始) --------> MAIN_DSJOB ------> AUDIT_JOB(完成) -------> SUCCESS

  1. 您可以在 AUDIT 作业中包含所需的尽可能多的功能,以捕获更多运行时信息

我建议这样做只是因为您的 DS 版本确实是旧版本 8.5。

使用较新版本的 DS - 有许多内置功能可以访问此信息。也许你可以说服你的经理升级 DS :)

让我知道它是如何工作的

于 2018-04-06T09:30:34.653 回答