如何可视化“损坏”的层次结构数据集?

时间:2009-06-28 10:02:43

标签: sql visualization hierarchical-data

我有一个相当大的数据表结构,如下所示:

 StaffNo    Grade    Direct   Boss2    Boss3    Boss4    Boss5    Boss6
 -------    -----    -----    -----    -----    -----    -----    -----
 10001        1      10002    10002    10057    10094    10043    10099
 10002        2      10057    NULL     10057    10094    10043    10099
 10003        1      10004    10004    10057    10094    10043    10099  
 10004        2      10057    NULL     10057    10094    10043    10099  
 10057        3      10094    NULL     NULL     10094    10043    10099

等...

即。一个唯一的ID,他们在层次结构中的级别(等级),他们的老板ID 的记录以及上面的主管的ID 。 (2,3,4等指特定年级的老板)。

系统依赖于严格的等级 - 如果你是我的老板(/父母)那么你的老板必须是我的祖父母。

不幸的是,这条规则并未在数据模型中强制执行,而且数据最终来自其他甚至不了解规则的系统,更不用说观察它了。所以你和我可能会分享同一个老板,但我们的老板老板会不一样。

请注意:

  • 我无法更改数据模型
  • 我无法在源头修复数据。

所以(目前)我必须在数据到位后修复数据。两周后,有人会做一些破坏模型的事情,我需要稍微修改一下以解决问题。不太理想,但在接下来的六个月里我一直坚持这一点。

无论如何,特定的查询很容易产生,但我发现很难跟踪大局。无论如何,应用程序都可以在没有投诉的情况下运行,但在系统周围导航会变得非常混乱。所以我的问题是:

  • 在这种情况下,任何人都可以推荐一种工具(或技术)来生成某种“破树”图吗?

我不想要能为我解决问题的东西,或者尝试进行统计分析,但至少可以用任何方式直观地表明它在任何时候都是如何破碎的。

注意:目前这是在SQL Server数据库中,但我对使用C#,Perl或Python的想法持开放态度。

2 个答案:

答案 0 :(得分:0)

列出boss1拥有多个boss2的所有记录:

select staffno, boss1
from brokentable
where boss1 in
(
 select boss1
 from brokentable
 where count(boss2) > 1
)
order by staffno

答案 1 :(得分:0)

我首先使用仅用于直接报告的原始数据在树结构中严格分层构建组织结构图

- 10099
    - 10043
        - 10094
            - 10057
                - 10002
                    - 10001
                - 10004
                    - 10003

完成此操作后,您可以运行审计例程以验证在此树中是否正确表示了所有bossX数据。

这假设您信任至少足以将树构建为基线的直接报告,当然。如果直接下属最容易被怀疑,那么你就会遇到更大的问题。