У меня есть достаточно большой DataTable структурированную что-то вроде этого:Как я могу визуализировать «сломанный» иерархический набор данных?
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 и идентификаторы надзирателей выше. (2,3,4 и т. Д. Относится к боссу в этом классе).
Система полагается на строгую иерархию - если вы мой босс (родитель), то ваш босс должен быть моим дедушкой и бабушкой.
К сожалению, это правило не применяется в рамках модели данных, и данные в конечном итоге исходят от других систем, которые даже не знают о правиле, не говоря уже о его соблюдении. Так что вы и я можем разделять одного и того же босса, но босс нашего босса не будет таким же.
примечание:
- Я не могу изменить модель данных
- я не могу исправить данные в источнике.
Так что (на данный момент) Я должен исправить данные, когда они на месте. Через две недели кто-то сделает что-то, что нарушает модель, и мне нужно будет немного модифицировать procs для решения. Не идеально, но я застрял с этим в течение следующих шести месяцев.
В любом случае, конкретные запросы легко производить, но мне сложно отслеживать большую картинку. Приложение, которое сидит на этом, работает без жалобы независимо от того, что навигационная система становится необычайно запутанной. Так что я задал себе вопрос:
- Может кто-нибудь порекомендовать инструмент (или технику) для создания какой-либо диаграммы «разбитого дерева» в таких обстоятельствах?
Я не хочу, чтобы что-то исправить для меня, или попытаться провести статистический анализ, но, по крайней мере, что-то, что даст визуальное представление о том, как оно сломано в любой момент времени.
Примечание: На данный момент это база данных SQL Server, но я открыт для идей, использующих C#, Perl или Python.
Ваш образец данных разбит по-разному, это действительно трудно понять.Приведите пример правильных данных (строгая иерархия) и неверные данные. – RedFilter