如何在 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 设计还没有
- 查询 XMETA - 根据我在多个 Datastage 环境中的经验。我还没有看到公司使用 XMETA DB 来提取工作绩效信息
为什么??因为,考虑到 XMETA 持有有关 DS 的重要元数据信息,不建议 Datastage 作业访问 XMETA DB。也许您的 Datastage 管理员也不会同意为 XMETA 提供访问权限。
- 捕获 运行- 元信息的古老且最受信任的方法是开发多实例、运行 时间列传播转换以及数据库中的少量审计 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(完成)--- ----> 成功
- 您可以在 AUDIT 作业中包含尽可能多的功能,以捕获更多 运行时间信息
我提出这个建议只是因为您的 DS 版本真的很旧 - 8.5 版。
使用较新版本的 DS -- 有很多 in-built 功能可以访问此信息。也许您可以说服您的经理升级 DS :)
让我知道它是如何工作的
我的 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 设计还没有
- 查询 XMETA - 根据我在多个 Datastage 环境中的经验。我还没有看到公司使用 XMETA DB 来提取工作绩效信息
为什么??因为,考虑到 XMETA 持有有关 DS 的重要元数据信息,不建议 Datastage 作业访问 XMETA DB。也许您的 Datastage 管理员也不会同意为 XMETA 提供访问权限。
- 捕获 运行- 元信息的古老且最受信任的方法是开发多实例、运行 时间列传播转换以及数据库中的少量审计 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(完成)--- ----> 成功
- 您可以在 AUDIT 作业中包含尽可能多的功能,以捕获更多 运行时间信息
我提出这个建议只是因为您的 DS 版本真的很旧 - 8.5 版。
使用较新版本的 DS -- 有很多 in-built 功能可以访问此信息。也许您可以说服您的经理升级 DS :)
让我知道它是如何工作的