当前位置:文档之家› DS工具抽取数据过程

DS工具抽取数据过程

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 中添加条件来限制不需要的数据继续在工作流中流动。

此图标是这个query是按照month_id 和getlastmonth匹配进行抽取,及每次只抽取上个月的数据(因为本月的数据是在月底才会上报,所以每次都是抽取的上个月的数据)。

4)validation
此控件是用来进行判断的类似于if,如果符合条件就pass,否则fail。

在这里主要用来进行公司的判断,如果有此公司存在则进行pass数据流程,否则进入fail 数据流程。

5)求累计
这里是对指标进行求累计的。

主要用到了Getsumparameter()函数
这里主要用到了sql()函数,此函数有两个参数。

第一个参数是
Datastore类型的,及你在抽取中所创建。

第二个参数是:sql语句,需要注意的是这里的变量参数要用【$变量名】来表示。

6) Table_Comparison
此控件主要用来将要抽取的数据和数据库只能够对应的表按照一定的字段进行比对,如果数据库的表中没有该指标数据则进行insert操作,将数据插入到数据库表中。

数据抽取学习
图中所示将要抽取的数据与F_FINANCE_MONTHS中的MONTH_ID和COMPANY_ID进行比对。

如果没有匹配的则将数据M_T1等插入到数据库表F_FINANCE_MONTHS。

7)数据库目标表
此表是你要将数据抽取到的目标表。

8)、9)执行匹配失败的操作。

11。

相关主题