1、一 安装 在安装伊始,需要填写 License ,否则安装不能进行(如果有一个 key 但是失效了,也可以先填进去,然后修改系统时间即可完成安装,但是在使用的时候系统时间始终是不准确的;key 可以到其他装过此软件的机器上面找) ,安装的时候在创建资料库即 repository 的时候可以忽略,等装好之后再去创建;二 配置 安装完成之后首先需要创建一个资料库即 repository,在菜单里面找到 Sap BusinessObject Data Services Repository Manager ,按照下图填写,然后点击 create 即可创建。 然后创建 job server 在菜单中找
2、到 Data Services Server Manager 添加一个 job server 之后就可以打开 Data Services Designer 进行设计开发了。在 designer 里开发的 job 保存在了第一步创建的资料库(Repository)里。 在开始菜单中找到 Date Services Management Console用户名密码默认为 admin 进入之后选择“Administrator”进行配置和管理在 Management 里找到 Repositories ,添加一个资料库(配置信息是第一步创建的资料库),配置完毕后就会出现资料库信息,已经创建的 job 列表
3、。然后在 Batch 里找到相应的 job 进行配置或调试或监控。 以下图例总结了 dataservices 各组件之间的关系 在抽取数据的时候的步骤如下:1. 上图中首先创建一个 projects2.再创建一个 job3.在 datastores 里创建数据库链接,然后把 job 中所用到的 tables 以及 functions 导入进来4.在 job 里创建工作流、数据流等。 在从一个表抽出数据到另一张表时,如果需要做一些数据转换,那么如图:首先选中需要改变的字段,在下面的 mapping 中写下转换条件即可。当然,也可以写 where 条件等(例如在 where 里可以这样写:CHEC
4、KINOUT.CHECKTIME IS NOT NULL and USERINFO.SSN is not null AND CHECKINOUT.USERID IS NOT null and CHECKINOUT.CHECKTIME = $ld_dateAND USERINFO.USERID = CHECKINOUT.USERID)。 下列图例描述了主要对象之间的关系三 多用户开发配置首先需要创建一个中央资源库,然后每个成员通过自己的本地资源库链接到中央资源库,每个成员把开发的内容保存到中央资源库中,当需要修改中央资源库中的内容时,需要 check out ,这时别人只能浏览,修改完成之后 c
5、heck in 即可;中央资源库会保留各个历史版本。 在数据库上创建一个用户作为中心资源库的用户。 使用 Sap BusinessObjects Data Services Repository Manager 创建一个中央资源库(在 repository type 里选择 central);注:可以创建安全的和非安全的中央资源库,按需要创建,一般是创建安全的。 打开 Data Services Managerment Console 在 Management 里的 Repositories 里添加创建的中央资源库。这时 Central Repositories 里就出现了刚创建的中央资料库。
6、 在 users 里创建用户。创建用户时在 role 选项中要选择 Muti-User Administrator ,该角色不能用在非安全中央资源库,它是 Administrator 的一个子集。用它能够添加或移除中央资源库、管理用户和用户组、预览中央资源库报告。 在 Central Repositories 里找到相应的中央资源库,在 users and Groups 里 创建相应的用户和组。 用本地资源库登到录 Date Services Designer。在 Tools 菜单中点击 Central Repositories ,添加中央资源库。 之后就可以用了四 JobA batch jo
7、b can contain the following objects: Data flows o Sources o Transforms o Targets Work flows Scripts Conditionals Try/catch blocks While Loops 五 Try/catchtrybeginstepsendcatch(integer_constants)beginstepsendstepsCatch error functions, other function calls, if statements, or other statements you want
8、to perform for an error in the specified exception group number. integer_constants One or more exception group numbers that you want to catch. Use a comma to separate exception group numbers. For example, catch(1002,1003)Specify ALL to catch all exceptions: catch(ALL)六 开发中的命名规范七 scirptScripts are si
9、ngle-use objects used to call functions and assign values to variables in a work flow. For example, you can use the SQL function in a script to determine the most recent update time for a table and then assign that value to a variable. You can then assign the variable to a parameter that passes into
10、 a data flow and identifies the rows to extract from a source. A script can contain the following statements: Function calls If statements While statements Assignment statements Operators The basic rules for the syntax of the script are as follows: Each line ends with a semicolon (;). Variable names
11、 start with a dollar sign ($). String values are enclosed in single quotation marks (). Comments start with a pound sign (#). Function calls always specify parameters even if the function uses no parameters. For example, the following script statement determines todays date and assigns the value to
12、the variable $TODAY: $TODAY = sysdate();You cannot use variables unless you declare them in the work flow that calls the script. 八 脚本语法简要说明jobs 和 work flows 可以用脚本定义逻辑流程的细节步骤,可以用来调用函数(存储过程),可以给变量赋值。在创建的脚本对象或者是自定义函数中必须以分号(;)结尾。注释语句必须用井号(#)开头。表达式表达式是常量、符合、函数及变量的一个组合,用来计算指定数据类型的值,可以用在script 里面或是其他的 data
13、 flow 对象中。因为表达式能够用在 data flow 对象中使用,所以通常包含列名; Data Service 脚本语言对于列名和表名没有特定的语法,例如,你可以用类似于 start_date 列在 Mapping 选项卡中作为输出,指定到输出的某一列上,但是 start_date 列,必须要在 schema in 中存在;如图:如果在 schema in 中出现了相同名字的字段,并且该字段在表达式中使用,那么在使用的时候就需要加上表的前缀;例如:这里的 hire_date 在 schema in 的 employees 表和emp_ds引号的使用与在 sql 语句用的语法一样。例如,如
14、果引一些特殊字符(非字母),需要用双引号括起来;转义字符,如果在常量里面用到了单引号()或是反斜杠(),那么需要用转义字符进行转义,DS 里的转义字符是反斜杠;如character Examplesingle quote () Worlds BooksBackslash() C:temp关于字符串左右的空格问题,DS 是用 rtrim 或 rtrim_blank 函数解决的;变量名变量名必须以$符号开头,如 $return_infolocal(局部) 变量必须在使用之的 job 或 work flow 里定义;globa(全局) 变量必须在使用之的 job 级别定义;返回值用 RETURN(e
15、xpression)来返回; 其中 expression 定义了返回的值;用在自定义函数中的局部变量必须用智能编辑器定义(自定义函数创建:toolscustom function 右键 new (可以填写注释));如图:在打开的自定义函数的编辑器中,首先在选择左边的 Variables 选项卡,然后在parameter 里的 return 上右击选择属性,可以修改返回值类型;然后在此菜单下可以创建相应的变量。最后在右边的编辑框里输入相应的函数逻辑即可(在此可以用之前的函数,也就是在左边的选项卡 functions 里的相应函数;注意:这里面定义的变量只能在这里面使用。可以在下列的地方使用函数
16、Transforms (Query, Case, SQL) Script objects Conditionals other custom functions 编辑一个存在的函数,可以到刚才的画面中的 functions 标签中找到;如:JOB 服务器每一个 job 服务器必须和一个本地资料库关联;多用户开发:多用户开发决定了你开发的方式以及管理应用不同阶段的方式;如果想成功使用多用户开发环境,你必须要保持本地库和中央库的连贯;下面介绍几个相应的概念:最高级别对象:不依赖于层级对象中的任何一个对象,例如:JOB1 由 Work flow1 和 Data flow1 组成,那么 job1 是最
17、高级别的对象;对象依赖:在层级最高级别对象至下的相应对象。例如刚才那种情况,Work flow1 和 Data flow1 都依赖 job1 对象,Data flow1 依赖 Work flow1.对象版本:一个对象版本是一个对象的一个实例,每次你添加或 check in 一个对象到中央库,软件就会创建这个对象的新的版本。最后或最近创建的版本就是对象最终的版本;中央资料库和本地资料库;中央资料库只是各个本地资料库资料的一个存放地,多个用户可以上传在本地资料库中的信息,也可以从中下载这些信息,如果要修改这些信息,那么必须 check out 到本地资料库。然后再 check in 到中央资料库;
18、中央资料库也提供历史版本的存储,如果新修改的版本出现问题,那么可以恢复到之前的版本。中央资料库和本地资料库的大的版本要一直,小的版本中央资料库可以比本地资料库更新,但是反过来就不行;要连接一个中央资料库,你必须激活本地库和中央库之间的链接。注意:当你启动 designer 的时候,通常会登录到一个本地库,千万不要登录到中央库,如果你登录了,那么会把中央库作为一个本地库来使用(当然首先要得到中央库的用户名和密码,所以,要严格保密中央库的用户名和密码),会有破坏版本信息的风险;其实在你登录中央库的时候会有警告提示。就像上面说的,任何时候中央库只是多个开发用户本地库存储对象的一个存储地,你可以che
19、ck out 修改 check in ,并且中央库保存不同的版本;在你用 designer 登录到本地库的时候,必须激活相应的中央库,只有这样,中央库对象才会打开并展示所有的 check-out 状态对象到 central repository 里;创建中央库首先在相应的数据库中创建相应的用户,然后赋予相应的权限;之后就可以用资料库管理创库创建一个中央资料库了;如图:点击创建,成功之后,会出现一个安全 key,告诉你了地址,这个 key 到时候可以发送给每个开发用户,这样可以减少每个开发者配置链接中央库的时间;然后在管理控制台(management console)中进行资料库的相应配置;然后
20、在 Administrtor 里设置中央资料库在相应的中央库中添加相应的组合用户;然后在 designer 里添加中央库:tool central repositories central repository connectionsadd激活中央库(designer)tool central repositories central repository connections选择相应的中央库右键单击选“Activate” ;下方有个复选框 Reactivate automatically,可以选中,这样下次登录的时候就会自动激活;添加对象到中央库1.创建好中央库之后,链接到本地库,然后激活
21、中央库,你可以从本地库添加对象到中央库,请记住,你做的所有设计工作,如创建 job,work flow 和 data flow 都存在于本地库,一旦你把他们添加到中央库,这些对象就受版本控制,并且可以在多个用户间共享;2.你既可以添加一个单独的对象,也可以添加一些相互依赖的对象到中央库;如果你添加单独对象,那么也仅仅是添加了一个单独的对象,没有其他依赖的对象被添加;3.在任何时候你都可以添加对象到中央库,但是在中央库中已经存在的对象不能再一次被添加;4.不能添加只读转换配置到中央库,然而你可以拷贝一个转换配置的副本到资料库;添加单独对象到中央库步骤:1. 打开本地库2. 右键单击对象选择 ad
22、d to central repository Object3. comments 对话框打开,键入 comments 进入 comments fileld,单击 OK注:如果该对象在中央库中已经存在,那么这个命令是不会成功的;添加依赖对象到中央库步骤:1. 打开本地库。2. 右键对象add to central repository object and dependents or add to central repository with filteing(if filtering is reuired)3. comments 对话框打开,键入 comments 进入 comments
23、fileld,单击 OK4. 如果选择了 with filtering,完成这个过滤点击 finish 完成添加; 5.相应地,你也可以选中相应的对象或依赖的对象到中央库中来完成添加,filtering 窗口会打开;注:如果该对象在中央库中已经存在,那么这个命令是不会成功的;但是,如果该对象依赖的对象已经存在,但是它本身不存在的话,还是可以成功的;从中央库得到最终版本到本地库打开中央库:在从中央库中拿最终版本之前,可以先比较本地库和中央库,在中央库的相应对象上右击compare object to local 或 object with dependents to local可以用来比较中央库
24、对象和本地库对象或中央库有依赖的对象与本地库有依赖的对象进行比较,用这些选项软件会自动找到本地的相应对象或有依赖的对象进行比较;如下图:比较窗口的上边显示了对象名(本地库中央库),下方显示不同之处,其中中间的状态栏说明了不同的类型;当然你也可以在 compare 选中 object to .或 object with dependent to .,这时软件不会自动找本地库中的对象或是有依赖的对象,而需要你自己拖动鼠标到本地的相应对象或中央库的对象上去;比较中央库的不同版本之间的差异:首先在中央库的相应对象上右键show history ,打开 history 对话框,然后选中要比较的两个版本,
25、选中右边的 show difference 或 show difference with dependents;在就好打开比较窗口,其中上边的标头表名了对象(库类型)版本号;比较窗口下方标示了又几处不同,各种不同颜色的意义;比较框里查看哪里不同;找到不同之后,如果你需要之前的版本就在 history 对话框中选中相应的历史版本,然后点击右边的 get obj by version;这样你本地就得到了这个版本的内容;在 check out 的时候要注意,如果你的版本和中央库的最终版本有不一致的情况,如果想以本地为主,将来 check in 的时候会以你本地库的情况再创建一个版本,那么就选中che
26、ck in 之后直接出现 check in completed ;这说明没有新的版本出现;check out 中央库已有对象的时候有两种情况,一种是以中央库的内容为准,那么 check out 的时候只能选择 object 或 object and dependents;如果以本地库为准,那么只能选择 object without replacement 或 object and dependents without replacement; 以本地库为准,由于 check out 的时候,改变了绕过了中央库的最后版本,所以在 check in的时候会再保存一个版本(这样同样也避免了每次需要连
27、接上中央库再更新,然后更新过程较长,再 check in 的情况;这样,现在本地开发完,check out 的时候以本地库为准,然后直接再 check in 进去,不耽误别的用户再开发);但是要尽量避免这种情况(本地与中央库出现了不连贯),一般的流程是每次要修改的东西,首先从中央库下载最终版本,然后修改;如果是新增加的东西,那么可以在本地开发完成,然后添加到中央库;资料库所在数据库的用户创建用户时(比如在 oracle 上),要赋予 connect,resource,create view 权限;否则在创建资料库时,会提示权限不足;替代变量的配置:toolssubstitution parameter configurations 进行配置类似于$RefFilesAddressCleanse 这样的变量;