业务系统与OA系统用户同步到BI的方案之ETL实现

概念说明

在操作之前,先理解下一些概念:组织架构、组织管理员、角色、用户、菜单、数据源、数据(行列)权限
组织架构:公司的组织架构,比如总经办,财务部、销售部。与用户挂勾(多对多关系),与角色没有关系,与业务系统的组织机构没有关系;对于普通浏览用户,组织其实只是一个让用户看上去有条理,主要是对组织管理员才有意义,可以在自己的组织里添加管理用户,并对数据源授权,实现多级系统管理。
组织管理员:组织架构中的管理员,对数据源授权后,实现多级系统管理。
角色:一般是根据不同的岗位定义角色,比如总经理、店长、系统管理员。与用户挂勾(多对多关系),与组织架构没有关系;菜单授权、数据授权(行列)均通过角色实现。
用户:BI用户,与组织架构关联,与角色关联(多对多关系)。
数据源:业务系统的数据源,比如财务用的是mssql数据源,HR用的是oracle数据源,各个数据源之间是相互独立。数据源的权限与组织管理员关联。
菜单(权限):BI发布的菜单,比如销售相关的菜单、采购相关的菜单、财务相关的菜单,权限与角色关联。
数据(行列权限):数据行权限,比如对同一张报表,北区的经理只能看到北区的数据,而南区的经理只能看到南区的数据;数据列授权,比如对同一张报表,店长可以看到销售收入、数量、和毛利,而业务员只能看到销售收入和销售数量,不能看到毛利。数据(行列权限)与角色相关联 。

授权操作流程

  • 设置好组织
  • 设置好角色
  • 添加用户:对用户进行组织及角色分配
  • 授权:菜单及数据授命通过角色来完成
理解以上概念后,这章节要讲解的知识点是如何将OA/ERP中的用户名及密码 同步到BI的用户表中【BI的用户表中的密码是md5 加密】
一、BI支撑库中有几个表要先理解下:
  • 组织表【警告:不要用脚本操作此表,包括插入、更新、修改、删除】

select * from t_cross_org
  • 角色表【警告:不要用脚本操作此表,包括插入、更新、修改、删除】
select * from t_cross_role
  • 用户表
select * from t_user
  • 用户-组织表【用户与组织表】
select * from t_cross_user_org
  • 用户-组织表【用户与组织表】
select * from t_cross_user_role
二、ERP/OA的用户数据要同步过来的话,需要在BI支撑库中同步三个表

(1)t_user:用户表,将ERP/OA的用户同步过来即可,比如【蓝色背景是从OA/ERP同步过来,其他的字段需要同步插入】

Insert into t_user
(userid,username,userpassword,usererealname,fprojid,fisadmin,fmodipwd,fexport,fgroup,fisdesignrpt,fisdesigntype)
‘user_1122,’zhangsan’,’21232f297a57a5a743894a0e4a801fc3’,’张三’,’1’,’1’,’1’,’1’,’1’,’1’,’1’,’1’

(2)t_cross_user_org:用户组织表,同步过来的用户ID,需要在这个表中插入相应的记录,用户与组织关系表,如果用户过来时,不需要赋组织框架时,此表组织ID可以给个默认的统一值【但是t_cross_org表中必须有此ID】

Inser into t_cross_user_org
(fid,fuserid,forgid,forgadmin,fdeault,forgid_top)
‘dsfadfadsfadsfds12121212【随便生成的ID,但是不能重复】’
,‘user_1122,’,’8f0d37b0c21511e88593ff6a0557fbe6【组织表中的某个ID】’,’0’,’1’

(3)t_cross_user_role:用户与角色关系表,如果用户过来时,不需要赋角色时,此表角色ID可以给个默认的统一值【但是t_cross_role表中必须有此ID】

Inser into t_cross_user_role
(fid,fuserid,froleid,fdeault,forgid_top)
‘dsfadfadsfadsfds12121212【随便生成的ID,但是不能重复】’
,‘user_1122,’,’dddddddddd88593ff6a0557fbe6【角色表中的某个ID】’,’0’,’1’