DS工具抽取数据过程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DS工具抽取数据过程

一、在整个抽取制作前需要先新建全局变量,根据新建的变量设定抽取的方式以及文件的路

径。

1、新建全局变量:

进入Tools------Variables

右击点击Insert,插入需要设定的全局变量:

$gvFileDir(excel表格所属的部门)

$gvFileName(excel表格的文件名)

$gvCurYear(excel表格的年份)

$gvCurMonth(excel表格的月份)用于临时抽取

$gvRootDir(数据文件根路径)

$isDelete(设置全新抽取或者增量抽取)

所需要新建的全局变量为以上6个。

2、抽取过程中全局变量的设定:

抽取的结构大致如下:

具体使用格式如下:

现在假设需要抽取C盘目录下“BI系统数据上报目录”文件夹里的财务部门中的一张名称为财务部-财务指标201101的excel表格。

1)设置全局变量初始化。

抽取方式有两种,根据需要可分别设定为临时抽取或者根据系统时间抽取:

# 临时抽取方式:

$gvCurYear = '2011';

$gvCurMonth = '01';

# 根据当前系统时间抽取方式

# 获取当前年份

$gvCurYear = to_char(add_months(sysdate(),-1),'yyyy');

# 获取当前月份

$gvCurMonth = to_char(add_months(sysdate(),-1),'mm');

设定好抽取方式后需要设定文件根路径:

(# 设置数据文件根路径

$gvRootDir = 'C:\\BI系统数据上报目录';)

在全局初始化里还需要设定一个全新抽取或者是增量抽取:

(#设置全新抽取还是增量抽取。全新抽取设置1;增量抽取设置0。

$isDelete =1;)

2)设置局部初始化:

$gvFileDir = $gvRootDir || '\\财务部';

$gvFileName = '财务部-财务指标

'|| $gvCurYear || $gvCurMonth ||'.xls';

二、抽取过程的制作

现以WF_财务为例整个抽取结构如下图所示:

1、局部初始化

主要功能是确定模板的路径:

$gvFileDir = $gvRootDir || '\\财务部';

$gvFileName = '财务部-财务指标'|| $gvCurYear || $gvCurMonth ||'.xls';

print('抽取文件目录:{$gvFileDir}');

print('抽取文件名称:{$gvFileName}');

2、Try……catch

这是一个固定的组合结构

3、判断文件存在否

主要功能就是判断文件是否存在,确定下一步的执行

点击判断文件存在否进入可以看到如下图结构:

如果满足条件file_exists($gvFileDir||'\\'||$gvFileName ) = 1则进行到工作流往下执行,否则显示文件不存在。

其中文本_文件校验里的内容为:

InsertException();

print($gvFileDir ||'\\'||$gvFileName ||' 文件不存在!');

4、下面主要介绍DF_财务里面的工作情况,这是整个抽取的核心内容,首先看到结构如下

图所示:

1)财务指标

此控件是在DS里Formats—Excel Workbooks里新建,根据需求确定的模板建立抽取所需要的模板,结构如下图所示:

2)转换

此控件称作Query,在这一步主要是进行一些必要的数据格式转换,内部结构如下图所示:

转换,分别是:

a.对应着期间的MONTH_ID,通过DS自带的函数转换了数据格式:to_char(财务指标.

期间,'yyyymm')

b.新添加的字段GetLastMonth运用了一个编写的函数:GetLastMonth()

GetLastMonth()函数如下:

其中:图片左边区域有参数和函数可供选择和创建,其中Fuction中的函数是你已经创建或者系统自带的函数。Variables中Local里的参数是函数内的参数,主要用来在函数中使用。

而Parameters中的参数则是传递到函数中的参数的名称,其中的return是自动带有的,在

编写函数时注意return的类型与你想获取的数值类型相匹配,不然会出现数据精度差异或者错误。

此函数功能解析:

$Current_Time =to_decimal(to_char(sysdate(),'YYYYMM'),'','',0);//用来将目前系统时间转换成YYYYMM格式的数字格式,例如现在是20111121则获得的是数字类型的201111。$Month=mod($Current_Time ,100);//用来求取月份11

$LastYear=($Current_Time-$Month)/100-1;//用来获取上一年2010

/******************判断求取上个月**********************

if($Month=1)

begin

$LastMonth =$LastYear *100+12; //如果本月是一月,则获取上年12及201012 end

else

begin

$LastMonth =$Current_Time-1; 201110

End

/*******************************************************

return $LastMonth;//返回值

3)按月份筛选

此query主要用来进行判断,query本质上就是一个select查询语句。通过在其where 中添加条件来限制不需要的数据继续在工作流中流动。

相关文档
最新文档