如何在 DB2 table 上编写数据阶段性能统计信息?

How to write datastage performance stats on a DB2 table?

我的 DataStage 版本是 8.5。

我必须用数据阶段性能数据填充 DB2 中的 table,例如 job_name、start_time、finish_time 和 execution_date。

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

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

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

有什么方法可以将此信息放入数据阶段?

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

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

提前致谢。

你的服务器也在 Windows 上吗?自从你说 "My Datastage " 我很困惑 大多数情况下,服务器安装在 linux / unix 上,客户端安装在 windows 上。

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

dsjob -jobinfo [项目名称] [工作名称]

输出类似于-

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

作业控制器:不可用

工作开始时间:2015 年 3 月 17 日星期二09:03:37

工作波数:9

用户状态:不可用

作业控制:0

临时状态:NOT 运行NING (99)

调用 ID:不可用

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

作业进程 ID:0

调用列表:[作业名称]

作业可重启:0

这些年之后,我找到了一些获取工作元数据的方法,但是 none 中的方法都如我所愿,所有这些方法实施起来都有些笨拙,而且经常失败。我找到了 3 种获取工作元数据的方法:

  • 直接从 xmeta 查询,在 table 上匹配 DATASTAGEX(*) 命名

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

对于以上两项,您可以构建一个 ETL,从这些数据库中读取并写入任何您想要的地方。

最后一个解决方案:

  • 调用调用脚本的 after-job 子例程 将作业的结果写入自定义 table。

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

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

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

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

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

我的想法: 1.Create table like - ETL-Run_Stats 具有 JOB_NAME 、 STARTED_TS 、 FINISHED_TS 、 STATUS 等字段。 2. 现在创建您的多实例作业并将它们包含在您的 DS 主序列中。

如果你的 DS 序列现在看起来像这样 开始 ------> MAIN_DSJOB ------> 成功

完成审计作业后,您的 DS 序列应如下所示

开始 ----> AUDIT_JOB(开始)------> MAIN_DSJOB -----> AUDIT_JOB(完成)--- ----> 成功

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

我提出这个建议只是因为您的 DS 版本真的很旧 - 8.5 版。

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

让我知道它是如何工作的