Сегодня я расскажу про еще одну возможность продукта QlikView – работу с иерархическими списками. Очень часто информация (особенно каталоги продуктов и справочники подразделений компании) может быть сгруппирована, каталогизирована определенным образом. Поэтому продукт анализа данных просто обязан легко работать с иерархическими списками и тут QlikView оправдывает ожидания пользователя.
Итак, я легко нашла функцию скрипта HIERARCHY в справке, а вот правильно ее использовать получилось, если честно, не сразу. Но, помня фразу (кстати, не помню, откуда это) «….это Вы просто не умеете правильно готовить», начала пробовать и искать информацию.
Проще всего, оказалось, отобразить иерархию в объекте типа Список, но подготовка данных для такого простого отображения оказалось достаточно сложной, было очень сложно поверить, что QlikView требует так мучиться с данными. Оказалось, все просто!!
В качестве источника данных я просто решила использовать каталог товаров с Qzon.ru не рекламы для, а только и исключительно по причине его многоуровневости. Я думаю, что при желании каждый сможет найти оригинал этого списка. Итак, я выбрала несколько разделов каждого уровня и сформировала вот такой Excel-файл:
Что бы, сделать представление списка более наглядным , каждый уровень его иерархии я раскрасила в разные цвета. Очевидно, что первое поле NoteID – уникальный первичный ключ нашей будущей таблицы – код узла (кстати, он может быть любым, просто такой вид кодировки очень быстро и удобно сделать в Excel). Второе поле – NoteName - название нашего узла. Третье поле Parent ID – ссылка на родительский уровень нашего иерархического списка. Очевидно, что самый верхний элемент не имеет ссылки ни какой другой.
Теперь загружаем наш файл в QlikView. Создаем новое приложение, открываем редактор скрипта (Файл – Редактор Скрипта) и выбираем опцию загрузки данных из файла ( Вставить – Оператор Load – Загрузить данные из файла).Далее выбираем наш Excel-файл и убеждаемся, что в поле Метки выбрана опция Встроенные метки, что бы можно было рассматривать первую строку файла как строку с заголовками полей. Теперь нажимаем 2 раза на кнопку Далее, мы пропустили одну страницу мастера и оказываемся на странице Опции. Далее нажимаем кнопку Иерархия.
К сожалению, следующая страницу переведена на русский язык очень плохо, поэтому я была вынуждена переключится на английский язык, а Вы можете воспользоваться следующим скрин-шотом с пояснениями:
Нажимаем OK и Готово.
У нас сформировался вот такой скрипт:Directory;
HIERARCHY(NoteID, ParentID, NoteName, ИмяРодительскогоУзла, NoteName, ПолныйПуть, '/')
LOAD NoteID,
NoteName,
ParentID
FROM
HIERARCHY.xlsx
(ooxml, embedded labels, table is Лист1);
Обращаем внимание, что из 3х полей-источников мы ожидаем получить 6 полей. Что бы проверить наши ожидания поострим простую таблицу в QlikView (Объект- Новый объект листа – Простая таблица) и добавим туда все поля новой таблицы и получим, на мой взгляд, удивительный результат: для каждого уровня иерархии создано отдельное поле (NoteName1; NoteName2….), название родительского узла (поле ИмяРодительскогоУзла) и полный «путь» каждого узла в своем уровне иерархии (поле ПолныйПуть) сформировались автоматически.
Теперь каждый узел иерархии можно использовать для поиска и анализа.
Что бы продолжить удивляться добавим на лист объект Список. И выберем поле ПолныйПуть. Нажмем готово и посмотрим результат – пока ничего интересного нет, все то же, что мы видим в соответствующем поле таблицы.
Чуть-чуть изменим свойства объекта. На закладке Общие активируем поле Показать как дерево и проверим, что бы для разделения уровней иерархии использовался «наш» разделитель.
Вот так изменился наш скучный список:
Кстати, если Вы просто сформируете данные в виде «пути» (по образцу нашего исходного поля ПолныйПуть) и просто загрузите данные вместе , например, с каталогом товаров в QlikView, то Вы получите тот же результат в объекте Список (только на самом нижнем уровне у Вас будут товары).
Но это еще не все. В QlikView есть другой оператор, позволяющий работать со списком. Его мы разберем позже (продолжение следует).
Спасибо, всё действительно ясно и просто оказалось =)
ОтветитьУдалитьА может быть Вы можете подсказать, какие есть способы просмотра ветвей дерева с возможностью изменять наименования узлов-детей в зависимости от значения узла-родителя? (все данные загружаются в *.qvd файла) Т.е. например,в описываемом Вами случае всем "детям" дописать к имени "love", если в наименовании их родителя (или родителя родителя и т д до вершины дерева) есть подстрока "люб" ?
спасибо, что читаете мой блог.
УдалитьВот только я не очень поняла Вашей задачи. У Вас есть qvd-файл нужного формата и Вам нужно просто изменить наименования (только наименования) для отдельных ветвей дерева?