反馈已提交

网络繁忙

树数据集

  • 文档创建者:Wendy123456
  • 编辑次数:2次
  • 最近更新:Wendy123456 于 2020-08-25
  • 1. 概述

    1.1 版本

    FineBI 版本
    5.0

    1.2 应用场景

    导入用户 或 同步用户 时,如何将部门层级结构同时导入/同步呢?如下图所示:

    4.png

    1.3 功能简介

    在数据库中常常可以看到一种表结构,表中包含了 ID 与 parent ID 两个字段或者某一个字段的长度有一定规律,这种表结构可构成树数据集,通过树数据集可生成树形层级结构。

    2. 示例

    2.1 准备数据表

    1)点击下载表信息:公司部门.xls

    表信息如下图所示:

    1597374309936808.png

    2)将「公司部门表」添加到用户自己的数据库中,或用户在自己数据库中新建用户信息表。

    2.2 新建 SQL 数据集

    管理员进入数据决策系统,点击「管理系统>数据连接>服务器数据集>SQL数据集」,数据集名称为「公司部门」,输入 SQL 语句后,点击「保存」。如下图所示:

    SQL 语句为:

    select *from 公司部门

    31.png

    2.3 新建树数据集

    2.3.1 方法一:依赖所选数据集的父标记字段构建树

    1)点击「树数据集」,数据集名称为「部门树」,原始标记字段为「部门ID」,父标记字段为「上级ID」,如下图所示:

    32.png

    树数据集来源于本文 2.2 节创建的 SQL 数据集,「公司部门」中有一个部门 ID 和上级 ID,故可以使用依赖所选数据集的父标记字段构建树。

    需要特别强调的是,此种情况,需要有唯一根节点(就是「上级 ID 」为空的节点),如果没有,那么构建树时会无法正常建立索引。

    2)点击「预览」按钮,可以看到如下图所示的数据:

    28.png

    可看到数据集中多了三个字段,FR_GEN_0 表示树结构的第一层,FR_GEN_1 表示树结构的第二层,FR_GEN_2 表示树结构的第三层。

    3)点击「保存」按钮,保存创建的树数据集。

    2.3.2 方法二:依赖所选数据集的标记字段的长度构建树

    1)点击「树数据集」,数据集名称为「部门树」,原始标记字段选择「部门ID」,如下图所示:

    33.png

    数据表中的字段没有父级字段,而是通过字段的长度来分辨其级别。公司部门的部门 ID 字段,其字段长度不一致,但是存在一定的规律,截止到第一个数字表示第一层级部门的部门 ID,截止到第二个数字表示第二层级部门的部门 ID,以此类推。

    注:部门 ID,上级部门 ID,部门名是三个建树字段,在实际操作中,部门 ID 和部门名必须对应,不能存在部门 ID 相同的情况。

    2)点击「预览」按钮,可以看到如下图所示的数据:

    30.png

    可看到数据集中多了三个字段,FR_GEN_0 表示树结构的第一层,FR_GEN_1 表示树结构的第二层,FR_GEN_2 表示树结构的第三层。

    3)点击「保存」按钮,保存创建的树数据集。

    3. 生成树数据集的数据表要求

    3.1 原始标记字段、父标记字段为数字

    3.1.1 数据表

    1597384944285981.jpg

    这是个完整的树数据集,构建树数据集时,以「部门 ID」为原始标记字段,「上级 ID」是父标记字段。

    第一行表示总部的标记是 1,父标记为空,表示它是根部门,没有父部门,通常如果一个部门没有父部门,那么父部门标记为空。第二行的意思是「人力资源部」的原始标记为 11,其父部门是标记为 1 的部门(然后可以根据这个标记来查询它的父部门是总部)。

    遍历这个数据集后,能得到所有的部门信息,职位信息;根据「上级 ID」,到「部门 ID」这一列去查找相应的部门名称,从而可以构建父部门。

    3.1.2 具体说明

    「上级 ID」中出现的标记(除了是空),都必须在「部门ID」中找到对应的标记,可以看到上图中所有的「上级 ID」都能在「部门 ID」中找到对应的值。

    如果出现下图的这种情况,「上级 ID」为 2,但是在「部门ID」中找不到是 2 的部门信息,这样就没办法构建「上级ID」为 2 的部门信息,这样就认为树是不完整的。若同步包含用户信息的数据集,同步动作直接返回,不进行同步操作。

    3.2 原始标记字段、父标记字段为汉字

    3.2.1 数据表


    构建树数据集时,原始标记字段为「部门名称」,父标记字段为「上级名称」。

    3.2.2 具体说明

    「上级名称」中出现的标记(除了是空),都必须在「部门名称」中找到对应的标记,否则就认为树是不完整的,若同步包含用户信息的数据集,同步动作直接返回,不进行同步操作。

    3.3 原始标记字段、父标记字段为字母

    3.3.1 数据表


    构建树数据集时,以「部门 ID」为原始标记字段,「上级 ID」是父标记字段。

    同样需要保证「上级 ID」列的能在「部门 ID」中能够找的到,否则也会拒绝同步。

    3.3.2 具体说明

    确保树数据集是正确的充要条件:

    1)父标记字段中出现的值(除了是空),在原始标记字段中都能找到对应的值。

    2)原始标记字段相同的行,其部门名和父标记这两列也必须相同,如上图数据表中的最后两行。

    3)父标记和部门名相同的行,其原始标记列必须相同,如上图数据表中的最后两行。

    无法构成树数据集:

    1)一个确定的部门有两个父部门,显然不是树结构。如下图所示:


    2)一个标记对应的部门名称不同也是错误的,这样也会拒绝同步的。

    3)意思就是在父部门确定的情况下,部门名称是唯一的,那么部门标记也是唯一的。下图为错误示例:

    部门名称是可以相同的,比如销售部有个子部门叫性能组,研发部也可以有个子部门叫性能组。但是当父部门确定的情况下,部门名是不能重复的。

    例如:lyon 和 loy 所在的部门都是性能组,且父部门标记都是 d ,那就表明两个人在同一个部门,那么部门标记就应该相同,上图的两个员工部门标记不相同,那么也会报错,拒绝同步。即在父部门确定的情况下,根据部门名能唯一的确定一个部门。

    4)实际情况中还有一种是互为上下级的情况,这种结构或者说数据有时候会在一些实行扁平化管理的公司出现,即 A 部门是 B 部门的上级,B 部门又是 A 部门的上级,这样的两个部门在组织同步的时候也会失败,但很少见。

    4. 注意事项

    原始字段和父标记字段中不能出现 0、,0000000 类似的字段,因为这些标记会被解析成 0,而 0 是程序中的保留字段,是所有部门的 ID,所以要尽量避免。

    在构建树结构的时候,如果一个部门没有父部门,那么父部门就空着,不要随便写。

    附件列表


    主题: 连接到数据
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    在线QQ:800049425

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭