datastage分析日志获取表记录条数

DataStage通过分析日志获取工作插入目标表的记录数

这只是一种不太好的方法,也许还有更好,更简便的方法。这种方法要求每次运行工作之前删除已有的日志信息,否则无法统计出正确的记录数。当然,在工作跑完之后,可以在壳牌备份本次工作运行的日志到服务器磁盘。

1,,,,,,日志清理设置

登录Datastage管理员,选择对应项目,项目属性→记录,勾选“自动清除作业日志”,设置为自动清理上次及以前的日志。

,,,,,,,,,,,,图1

管理员日志清理设置

2,,,,,,日志处理

2.1,,,,日志备份(dsjob -logsum)

在壳里用dsjob调起来工作,工作运行之后,将本次工作的日志备份到磁盘。

DSHOME美元/bin/dsjob -logsum projectName jobName美元比;sysLogDir/jobName美元。txt

2.2,,,,记录数分析(grep, awk)

注意到往目标表里写记录的时候会有关键字“插入的行数:”或“拒绝的行数:”,后面跟记录的数目。考虑到可能有多个节点,因此可以将各个节点的数据都加起来。

#插入行insertedRows='猫sysLogDir/jobName美元。txt | grep”插入的行数:“| awk - f:{打印3美元}| sed的s/,/?皘 awk”{和=和+ 1美元;}{打印和}结束' '

#拒绝行rejectedRows='猫sysLogDir/jobName美元。txt | grep”的行数拒绝:“| awk - f:{打印3美元}| sed的s/,/?皘 awk”{sum1=sum1 + 1美元;}{打印sum1}结束' '

,,,,,,,,考虑到工作可能没进数就终止了,需要在接下来做处理,例如为空的话赋值0。

如果[!- n“insertedRows美元”);然后

,,,,,,,,insertedRows=0

fi

2.3,,,,其他监控信息

监控可能还要些工作运行起止时间,结束状态等等,可以一并加上,然后写入一个日志文件。

其中起止时间可以在工作运行前后记录,工作的运行装可以用dsjob国营地位获取。

jobsta=$(美元DSHOME/bin/dsjob国营模式NORMAL jobParameters 美元;警告0,-jobstatus projectName jobName 美元;2祝辞,1,| awk - f='/^状态码/{打印$ 2}’)

2.4,,,,工作日志记录

工作执行完毕之后,将该工作的一些监控信息写入日志。

echo $ projectName jobName jobsta美元“日期+ Y % - % - % d”“% H: % m: % S的开始时间insertedRows美元美元rejectedRows祝辞祝辞$ logdir/job_run_“日期+ % Y % m % d”。日志

3,,,,,,其他(监控相关)

当所有的工作都执行完之后,可以建立一个工作,将记录在$ logdir/job_run_“日期+ % Y % m % d”。日志中的数据抽取到一个表,用于查看。

3.1,,,,表设计

//日志表

create table DSLog

(

id的整数不是NULL 默认生成的

,,,身份(从1开始,增加1)主键,

prjName varchar (20),

jobName varchar (50),

状态varchar (20),

rDate日期

开始时间时间,

endTime时间,

insertedRows整数,

rejectedRows整数

)

//日志状态表

create table DSLogState

(

状态varchar (20),

标记varchar (50),

des varchar (500)

)

3.2,,,,工作状态代码http://publib.boulder.ibm.com/infocenter/iisinfsv/v8r7/topic/com.ibm.swg.im.iis.ds.cliapi.ref.doc/topics/r_dsvjbref_Error_Codes.html

https://www - 304. ibm.com/support/docview.wss?uid=swg21469644

3.3,,,,runJob。上海源码

# !/bin/bash

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

# runJob。sh 2012-08-19

#运行工作参数

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

,

#如果输入参数的数量小于2,然后输出帮助文档和退出

如果[$ # lt 2];然后

猫& lt; & lt;帮助

runJob——运行工作UASGE: runJob projectName jobName jobParameters

例子:runJob dsstage1 DD_Test的param endDT=20120819 '

,

帮助

,

,,,,,,,,退出0

fi

,

projectName=" $ 1 "

jobName=" $ 2 "

jobParameters=" $ 3 "

,

# echo $ projectName

# echo $ jobName

echo $ jobParameters

,

0 #退出

,

logdir=/DS/DSLogs #目录来存储日志

workdate=叭掌? % Y % m % d”

,

sysLogDir=/DS/DSLogs/sysLogsBK/Y '日期+ % % m % d ',,,#目录支持日常datastage日志。Datastage管理员设置删除日志之前运行工作。

,

#解决DSHOME美元为空的问题

源/mistel/IBM/InformationServer/服务器/DSEngine dsenv

,

# logdir处理。如果日志文件夹不存在,创建文件夹。

如果[- d $ logdir];然后

datastage分析日志获取表记录条数