DS工具抽取数据过程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 中添加条件来限制不需要的数据继续在工作流中流动。