kettle生成多层级维度表

浏览: 2280

头脑发热,想跳过sql用kettle生成多层级维度结构

整体流程图


1、源数据表结构包含字段

表名:code_dept

字段:

 dwdm:代码

 dwmc:代码名称

 sjdwdm :父级代码

2、拼接所有层级,其中最上级的sjdwdm 字段值为空值

步骤:管理部门字段拼接

select SYS_CONNECT_BY_PATH(dwdm||'m'||dwmc,   '|')  dwdmpaste

from code_dept

start with sjdwdm is null

connect by prior dwdm=sjdwdm

3、过滤记录


3、拆分字段,行生成多列

代码(都生成四个层级,少的用本身值代替):

//Script here
//i is not care capital and small letter
//g ls global match
var decollator=/[m]/ig
var SUB_CODE_NEW= substr(DWDMPASTE,1);
var num=DWDMPASTE.match(decollator).length
//
var str1="";
var str2="";
var str3="";
var str4="";
var glbmadbm="";
var glbmadmc="";
var glbmzdbm="";
var glbmzdmc="";
var glbmddbm="";
var glbmddmc="";
var glbmmdbm="";
var glbmmdmc="";
var strArray=new Array();
var strArray0=new Array();
strArray=SUB_CODE_NEW.split("|");
if(num==4)
{
str1=strArray[0];
strArray0=str1.split("m")
glbmadbm=strArray0[0];
glbmadmc=strArray0[1];
str1=strArray[1];
strArray0=str1.split("m")
glbmzdbm=strArray0[0];
glbmzdmc=strArray0[1];
str1=strArray[2];
strArray0=str1.split("m")
glbmddbm=strArray0[0];
glbmddmc=strArray0[1];
str1=strArray[3];
strArray0=str1.split("m")
glbmmdbm=strArray0[0];
glbmmdmc=strArray0[1];
}
if(num==3)
{
str1=strArray[0];
strArray0=str1.split("m")
glbmadbm=strArray0[0];
glbmadmc=strArray0[1];
str1=strArray[1];
strArray0=str1.split("m")
glbmzdbm=strArray0[0];
glbmzdmc=strArray0[1];
str1=strArray[2];
strArray0=str1.split("m")
glbmddbm=strArray0[0];
glbmddmc=strArray0[1];
glbmmdbm=glbmddbm;
glbmmdmc=glbmddmc;
}
if(num==2)
{
str1=strArray[0];
strArray0=str1.split("m")
glbmadbm=strArray0[0];
glbmadmc=strArray0[1];
str1=strArray[1];
strArray0=str1.split("m")
glbmzdbm=strArray0[0];
glbmzdmc=strArray0[1];
 
glbmddbm=glbmzdbm;
glbmddmc=glbmzdmc;
glbmmdbm=glbmzdbm;
glbmmdmc=glbmzdmc;
}
if(num==1)
{
str1=strArray[0];
strArray0=str1.split("m")
glbmadbm=strArray0[0];
glbmadmc=strArray0[1];
glbmzdbm=glbmadbm;
glbmzdmc=glbmadmc;
 
glbmddbm=glbmadbm;
glbmddmc=glbmadmc;
glbmmdbm=glbmadbm;
glbmmdmc=glbmadmc;
}

4、字段选择,剔除不需要字段(略)

5、过滤不需要的值(略)

6、插入/更新

7、over

推荐 3
本文由 华青莲 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

2 个评论

代码可以用代码编辑器包装起来,好看一些
好的

要回复文章请先登录注册