-
wut 数据老手Lv5
发表于2018-10-12 17:20
楼主
大家在项目上或者在产品试用中,可能会经常遇到父子维的维表结构,但在BI中无法直接支持父子维的形式,那这时就会困扰,该如何处理数据呢?如何让其摇身一变,变成我们可以使用的结构呢?
接下来就给大家举一个例子说明~~~~
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
需求:父子维结构的数据如何在BI维表中成树型显示?
实现流程:
熟悉亿信BI的小伙伴们,肯定知道针对代码无规律的数据要想在BI中成树型显示,那么采用通用层级维的方式。那要使用通用层级维,它的数据结构要是这样的:
那如何把父子维变成这样呢?
此刻你只需要一串SQL语句,类似如下一样:
ps:SQL中引用的dim_fid数据在这里
backup.zip
(465 Bytes, 下载次数: )
BI特有的db文件,通过数据库管理中的导入功能导入即可
create view dim_tyw as
select t.* from (
select
regexp_substr(tree_id, '[^,]+', 1, 1) upid0,
regexp_substr(tree_id, '[^,]+', 1, 2) upid1,
regexp_substr(tree_id, '[^,]+', 1, 3) upid2,
regexp_substr(tree_name, '[^,]+', 1, 1) upid0_name,
regexp_substr(tree_name, '[^,]+', 1, 2) upid1_name,
regexp_substr(tree_name, '[^,]+', 1, 3) upid2_name
from ((select t.*, sys_connect_by_path(id, ',') tree_id,sys_connect_by_path(name, ',') tree_name
from dim_fid t
start with pid is null
connect by prior id = pid)) t) t where t.upid2 is not null;
ps:以上例子是3层结构,如果有多层结构的话,只修改红色文字,来获得不同层级的代码和文字regexp_substr(tree_id, '[^,]+', 1, X) upidX
那么dim_tyw这个视图就可以直接做为BI通用层级维的数据使用了~~~~
具体的通用层级维的配置就不赘述了~~~~
不会的小伙伴们可以查询我们在线的知识库呦(http://www.esensoft.com/service/self-help/knowledges.html)
以上SQL适用于oracle的数据库,欢迎小伙伴们补充其他数据库的转化方法~~~~
接下来就给大家举一个例子说明~~~~
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
需求:父子维结构的数据如何在BI维表中成树型显示?
实现流程:
熟悉亿信BI的小伙伴们,肯定知道针对代码无规律的数据要想在BI中成树型显示,那么采用通用层级维的方式。那要使用通用层级维,它的数据结构要是这样的:
那如何把父子维变成这样呢?
此刻你只需要一串SQL语句,类似如下一样:
ps:SQL中引用的dim_fid数据在这里
create view dim_tyw as
select t.* from (
select
regexp_substr(tree_id, '[^,]+', 1, 1) upid0,
regexp_substr(tree_id, '[^,]+', 1, 2) upid1,
regexp_substr(tree_id, '[^,]+', 1, 3) upid2,
regexp_substr(tree_name, '[^,]+', 1, 1) upid0_name,
regexp_substr(tree_name, '[^,]+', 1, 2) upid1_name,
regexp_substr(tree_name, '[^,]+', 1, 3) upid2_name
from ((select t.*, sys_connect_by_path(id, ',') tree_id,sys_connect_by_path(name, ',') tree_name
from dim_fid t
start with pid is null
connect by prior id = pid)) t) t where t.upid2 is not null;
ps:以上例子是3层结构,如果有多层结构的话,只修改红色文字,来获得不同层级的代码和文字regexp_substr(tree_id, '[^,]+', 1, X) upidX
那么dim_tyw这个视图就可以直接做为BI通用层级维的数据使用了~~~~
具体的通用层级维的配置就不赘述了~~~~
不会的小伙伴们可以查询我们在线的知识库呦(http://www.esensoft.com/service/self-help/knowledges.html)
以上SQL适用于oracle的数据库,欢迎小伙伴们补充其他数据库的转化方法~~~~
6个回答
这张图片竟然是土豪金~