【玩转FineReport】平台目录

楼主
数开编外工作者:FR、BI大表哥,欢迎找我我处理!!!

1. 用途目的

本人使用 mysql8 数据库作为FineDB 数据库。亦本人推荐mysql8+ 作为外置库。

用途目的:需要对平台进行分析,通过sql获取平台目录,抽取到其他数仓中亦或直接使用,本文给与解决文档;

使用外置库表:fine_authority_object 

具体字段解释详见:FineDB 表结构

2. SQL处理

第一步对数据处理:获取必要字段和必要数据

select
   a.id
 , a.displayName
 , a.path
 , a.devicetype  -- 显示类型:0:未勾选 PC 、平板、手机
 , a.parentid
 , a.sortIndex
 , case
       when a.expandtype = '1' then '平台管理系统节点'
       when a.expandtype = '2' then '首页'
       when a.expandtype = '3' then '目录'
       when a.expandtype = '5' then '链接'
       when a.expandtype = '6' then '文件'
       when a.expandtype = '101' then '上报流程'
       when a.expandtype = '102' then ' finereport报表'
       when a.expandtype = '201' then ' bi报表' end doctype
from fine_authority_object a
where displayName <> ''
 and a.expandtype not in ('1', '2', '101')

第二步根据 id、parentid 关联获取平台目录层级、这里以4层级作为示例

create or replace view fine_directory_view as
with t1 as (
select
   a.id
 , a.displayName
 , a.path
 , a.devicetype  -- 显示类型:0:未勾选 PC 、平板、手机
 , a.parentid
 , a.sortIndex
 , case
       when a.expandtype = '1' then '平台管理系统节点'
       when a.expandtype = '2' then '首页'
       when a.expandtype = '3' then '目录'
       when a.expandtype = '5' then '链接'
       when a.expandtype = '6' then '文件'
       when a.expandtype = '101' then '上报流程'
       when a.expandtype = '102' then ' finereport报表'
       when a.expandtype = '201' then ' bi报表' end doctype
from finedb.fine_authority_object a
where displayName <> ''
 and a.expandtype not in ('1', '2', '101')
)
select
   b.displayName displayName1,
   c.displayName displayName2,
   d.displayName displayName3,
   e.displayName displayName4,
   concat_ws('/',b.displayName,c.displayName,d.displayName,e.displayName) displayName,
   coalesce(e.path,d.path,c.path,b.path) pathstr,
   concat(ifnull(b.sortIndex,0)+10,ifnull(c.sortIndex,0)+10,ifnull(d.sortIndex,0)+10,ifnull(e.sortIndex,0)+10) sortIndex,
   coalesce(e.doctype,d.doctype,c.doctype,b.doctype) type_str,
   coalesce(e.devicetype,d.devicetype,c.devicetype,b.devicetype) devicetype
from t1 a   -- 目录根节点
   left join t1 b on a.id = b.parentId     -- 1
   left join t1 c on b.id = c.parentId     -- 2
   left join t1 d on c.id = d.parentId     -- 3
   left join t1 e on d.id = e.parentId     -- 4
where a.displayname = 'Dec-Entry_Management'
order by b.sortIndex,c.sortIndex
;
分享扩散:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0回帖数 1关注人数 219浏览人数
最后回复于:昨天 15:22

返回顶部 返回列表