建立数据字典

  • 文档创建者:Roxy
  • 编辑次数:5次
  • 最近更新:Roxy 于 2020-02-08
  • 1. 概述

    1.1 应用场景

    数据字典是为了给 IT 和业务提供一个共同维护的指标体系说明,解决 IT 提供的指标是原始名业务不理解指标含义以及数据字典维护不统一、不自动等一系列问题。

    1.2 实现步骤

    实现方案分两种。

    1.2.1 方案一:制作数据字典并使用

    数据字典的实现主要分为 FineBI 配置外接数据库、FineBI 获取数据与处理数据、FineReport 连接 FineBI 并读取 FineBI 处理好的

    Spider 数据集、FineReport 制作填报报表并挂载到 FineBI 平台、IT 和业务人员使用填报报表共同维护等步骤,具体如下图所示:

    1579253326238638.png

    注1 :FineBI可以选择内置数据库与外接数据库,由于正常使用时都是使用外接数据库,此处不对内置数据库的具体使用做说明。

    注2:用到 FineReport 填报是为了解决数据在数据库的输入输出问题,通过 FineReport 填报可以实现数据的输入、输出、修改等操作,并且降低维护成本、避免异步维护情况的发生。

    1.2.2 方案二:已经制作好的数据字典直接进行资源导入并使用

    1580280199926827.png

    2. 制作数据字典并使用

    本例以 MySQL 数据库为例。

    2.1 连接 FineDB 数据库

    2.1.1 为 FineBI 设置外接数据库

     1)新建「finedb」数据库,数据库名必须为「finedb」,设置默认字符集排序规则为 utf_bin( mysql 数据库需要设置排序规则为 utf8_bin),如下图所示:

    1580118430397868.png

     2) FineBI 连接外接数据库,如下图所示:

    1580184908310706.png

    1580208666433609.png

    详情参见:配置外接数据库

    3)在 FineBI 中新建数据连接,连接到外接数据库,测试连接成功,点击保存,如下图所示:

    33.png

    详情参见:配置数据连接

    4)在数据准备界面可查看数据库以及数据库表,如下图所示:

    11.png

    5)在外接数据库中新建「fine_data_dictionary」数据库表,表字段、类型、注释如下图所示:

    261.png

    注:这张表是数据字典维护表, IT 和业务维护的数据字典会存入这张表中。其中业务包名、表名、字段名是必须的,其余字段可以修改,按实际使用增加,填报时拉入字段即可。

    2.1.2 获取相关数据

    1)添加 SQL 数据集,获取 BI 中所有表原始信息。

    输入 SQL 语句如下所示:

    select MID(A.id,32,16) as tableId ,A.VALUE as origName,A.T_ID, REPLACE( REPLACE(B.className,'com.finebi.common.internalimp.config.conf.entryinfo.',' ') , 'EntryInfoConf',' ' ) as tableType from
    (
    SELECT
    REPLACE(id,".name","") as id, `value` , UCASE( CONCAT("T_",mid(id,32,6)) ) as T_ID
    FROM
    fine_conf_entity
    WHERE ID IN
    (
    SELECT
    CONCAT(id,'.name') as nameId
    from
    fine_conf_classname
    where
    id like 'DirectEntryConfStore.mapHolder.________________' and #对应配置表名
    className like 'com.finebi.common.internalimp.config%' #数据表过滤
    )
    ) as A
    left join
    fine_conf_classname as B
    on A.id = B.id

    得到 BI 数据原始信息如下图所示:

    45.png

    2)添加 SQL 数据集,获取 BI 数据表显示名。

    SQL 语句如下所示:

    SELECT mid(AA.id,32,16) as tableId ,AA.`value` AS tableName
    from
    fine_conf_entity AA
    where
    AA.id like 'DirectEntryConfStore.mapHolder.%.escapeMap.________________'

    得到 BI 数据显示名如下图所示:

    6.png

    3)添加 SQL 数据集,获取 BI 所有业务包信息。

    SQL 语句如下所示:

    SELECT CC.tableId,CC.PackId, DD.`value` as PackName
    from
    fine_conf_entity DD ,
    (
    SELECT REPLACE(AA.id,"tableIds","name") as PackId , BB.tableId as tableId
    from fine_conf_entity AA ,
    (select MID(A.id,32,16) as tableId ,A.VALUE as origName,A.T_ID, REPLACE( REPLACE(B.className,'com.finebi.common.internalimp.config.conf.entryinfo.',' ') , 'EntryInfoConf',' ' ) as tableType from
    (
    SELECT
    REPLACE(id,".name","") as id, `value` , UCASE( CONCAT("T_",mid(id,32,6)) ) as T_ID
    FROM
    fine_conf_entity
    WHERE ID IN
    (
    SELECT
    CONCAT(id,'.name') as nameId
    from
    fine_conf_classname
    where
    id like 'DirectEntryConfStore.mapHolder.________________' and #对应配置表名
    className like 'com.finebi.common.internalimp.config%' #数据表过滤 
    )
    ) as A
    left join
    fine_conf_classname as B
    on A.id = B.id
    ) as BB
    where
    AA.id like 'DirectPackageConfStore%' and LOCATE(BB.tableId,AA.`value`) > 0
    ) as CC
    where DD.id = CC.PackId

    得到 BI 数据业务包信息如下图所示:

    622.png

    4)添加 SQL 数据集,获取 BI 数据表字段信息。

    SQL 语句如下所示:

    SELECT A.*,C.fieldnam  from (select id,substring_index((substring(id,32)),'.',1) as tableID,mid(id ,56,8) as scrname ,value as
    filename  from  fine_conf_entity  where id like '%DirectFieldConfStore.mapHolder%name') as A
    LEFT JOIN
    (select id,substring_index((substring(id,32)),'.',1) as tableID,mid(id ,56,8) as scrname,value as b from  fine_conf_entity  where id like '%DirectFieldConfStore.mapHolder%fieldId') as B
    ON A.tableID=B.tableID  AND A.scrname=B.scrname
    LEFT JOIN
    (select id,substring_index((substring(id,32)),'.',1) as tableID,substring_index(id, '.', -1) as b,value as fieldnam from  fine_conf_entity  where id like
    'DirectEntryConfStore.mapHolder.%.escapeMap.%') AS C
    ON A.tableID=C.tableID and B.b=C.b

    得到 BI 数据表字段信息如下图所示:

    363.png

    5) 合并「BI数据原始信息」、「BI数据表显示名」、「BI数据表业务包信息」、「数据表字段信息」为一个自助数据集。

    实现步骤:

    选择「BI数据原始信息」下的所有字段,如下图所示:

    269.png

    选择「BI数据表显示名」所有字段,点击左合并,合并依赖为 tableId ,如下图所示:

    61.png

    选择「BI数据表业务包信息」内的所有字段,点击左合并,合并依赖为 tableId ,如下图所示:

    51.png

    选择「数据表字段信息」内的所有字段,点击左合并,合并依赖为 tableId ,如下图所示:

    74.png

    创建新增列并命名为表显示名,输入公式IF(ISNULL(tableName),tableName,origName),如下图所示:

    27.png

    创建新增列并命名为字段显示名,输入公式IF(ISNULL(fieldnam),filename,fieldnam),如下图所示:

    65.png

    选择 tableId、tableName、PackName、fieldnam、表显示名、字段显示名作为最终字段,并重命名为 表ID 、表名_原始、业务包名_原始、字段名_原始、表名_显示名、字段名_显示名。如下图所示:

    221.png

    过滤掉表名_原始为空的数据(表名为空是 FineReport 模板),输出最终字典自助数据集「BI数据表信息_处理」,如下图所示:

    68.png

    5)将「BI数据表信息_处理」与数据库中创建的「fine_data_dictionary」左合并,合并依据为表名、字段名、业务包名,合并为「BI数据字典」数据集,作为 FineReport 填报模板连接的 spider 数据集,此后只需要使用模板填报以及自动更新 BI 中的「数据字典」业务包即可。如下图所示:

    2211.png

    6)为数据字典整个业务包设置定时更新,以设置每小时更新一次为例,如下图所示:

    76.png

    注:设置步骤详情参见:业务包更新 。若需要实时以及其他更新频率可根据实际情况修改。

    2.2 数据字典报表创建与维护

    2.2.1 FineReport 远程连接 FineBI 获取字典自助数据集

    详情参见:Spider 数据集插件

    2.2.2 创建 Spider 数据集

    1)创建 BI数据字典 Spider 数据集,如下图所示:

    33.png

    2)创建表名过滤控件 Spider 数据集如下图所示:

    227.png

    2.2.3 创建数据字典填报模板

    1)将 BI 数据字典数据集下的所有字段按照顺序拖入单元格并设置单元格颜色和单元格框,如下图所示:

    39.png

    2)对数据示例、业务计算逻辑、应用范围单元格设置 填报控件 和 报表填报属性 ,并给单元格设置编辑结束事件,如下图所示:

    75.png

    1580275845933301.png

    3)在模板>报表填报属性中添加内置 SQL ,如下图所示:

    1580275031873885.png

    4)在插入>单元格元素>插入富文本下,添加富文本,如下图所示:

    1580275131940484.png

    5)在参数面板中设置标签控件、下拉复选框控件 以及查询按钮,如下图所示:

    1580275647697505.png

    模板展示:数据字典.cpt

    2.3 数据字典模板使用与数据字典维护

    1)登录数据决策系统,挂出该填报模板,如下图所示:

    80.png

    1580278729241739.png

    详情参见:管理目录

    2)在目录中查看该模板并填报,如下图所示:

    802.png

    3)若填报模板正常,则可以给不同用户开放权限,共同维护数据字典。详情参见:分级权限分配

    3. 已经制作好的数据字典直接进行资源导入并使用

    3.1 资源导入前提

    资源导入示例基于 MySQL 外接数据库,若外接数据库为 Oracle 等其他数据库,资源同样导入,只是在资源导入后在数据准备中修改对应数据集的 SQL 语句获取正确数据即可,详情参考 数据字典数据获取SQL汇总.docx 文件。

    3.1.1 FineBI 安装 Spider 插件

    数据字典中用到了 FineReport 来连接 BI 的 Spider 数据集,需要根据 BI 版本安装对应版本的插件,详情参见:Spider 数据集插件 。

    3.1.2 外接数据库操作

    1)在配置外接数据库前需在外部数据库中新建名为「finedb」的数据库。

    2)在外接数据库中新建「fine_data_dictionary」数据库表,表字段、类型、注释。操作方法参见本文 2.1 章节。

    注:这张表是数据字典维护表, IT 和业务维护的数据字典会存入这张表中。其中业务包名、表名、字段名是必须的,其余字段可以修改,按实际使用增加,填报时拉入字段即可。

    3.1.3 FineBI 配置外接数据库

    详情参见:配置外接数据库 。

    3.1.4 新建外接数据库对应的数据连接

    进入管理系统>数据连接>数据连接管理,新建数据连接,连接外接数据库,输入相关信息,测试成功点击保存,则连接建立成功。详情参见本文 2.1 章节。

    3.2 资源导入步骤说明

    3.2.1 资源导入

    1)使用管理员账号登录数据决策平台,点击管理系统>智能运维>资源迁移,选择资源导入,然后点击上传文件,将数据字典资源.zip 压缩包文件上传导入到 FineBI 中。

    70.png

    2)然后全选相关的仪表板和数据表资源,直接导入即可(如果 FineBI 中已经存在该数据表,可以选择覆盖导入)。如下图所示:

    58.png

    注:该资源目前只有超级管理员有权限,若需要给其他人开权限,需要在导入成功之后重新给其他人赋予权限。

    详情参见:资源迁移

    3.3 数据更新

    进入数据准备>数据字典业务包,更新该业务包的数据,确保更新完毕且更新成功。如下图所示:

    50.png

    注:首次更新是为了得到系统之前的数据,后续使用过程中,可以根据需要监控的实时性不同选择直连数据库数据或者设置定时更新。

    3.4 仪表板预览

    在目录查看对应目录下的模板,并填报提交实验,若提交成功,在数据库中查询,若成功写入数据库则资源导入成功。如下图所示:

    53.png


    附件列表


    主题: 通用场景
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!