Сегодня поговорим еще об одном типе таблиц – таблицах матрицах.
QlikView делает все подготовительную работу удивительно легко и
быстро. Как ? Читайте в моем очередном
уроке.
CrossTable(Магазин, Цена, 2)
LOAD * FROM
C:\GALA\QVBook\Cross\CrossTable_Data2.xls
(biff, embedded labels);
Вы догадались как добавить на лист простую таблицу и вывести
в нее значения всех полей?
Очень часто при обработке данных нам встречаются таблицы,
содержащие информацию в своем динамическом развитии: продажи/расходы/прибыль по месяцам/годам, цены по торговым точкам/городам/поставщикам
и т.п. Обычно таблички имеют вид матрицы:
Обычно требуется
найти минимальную/максимальную/среднюю цену по поставщику/торговым точкам,
проанализировать динамику показателя во времени…. То есть анализировать данные как по отдельной строке
или столбцу, так и по таблице в целом.
Обычно достаточно трудоёмко преобразовать их в таблицу обычного вида. QlikView это делает буквально одним
оператором.
Для начала загрузим наш файл в систему. Это можно сделать
обычным способом с помощью мастера загрузки или написать такой вот несложный
код (только не забудьте указать правильный путь к файлу J) :
SourceData:
LOAD *
FROM
C:\GALA\QVBook\Cross\CrossTable_Data.xls
(biff, embedded labels);
Далее, используя волшебный оператор crosstable, преобразуем нашу табличку к обычному "длинному" формату:
LOAD *
FROM
C:\GALA\QVBook\Cross\CrossTable_Data.xls
(biff, embedded labels);
Далее, используя волшебный оператор crosstable, преобразуем нашу табличку к обычному "длинному" формату:
Price:
CrossTable(Shop, Price)
LOAD * RESIDENT SourceData;
CrossTable(Shop, Price)
LOAD * RESIDENT SourceData;
Рассмотрим оператор CrossTable более подробно.
Как мы видим он состоит из трех логических частей (три строки) .
- Так как в результате работы оператора у нас появится новая таблица, то присвоим ей сразу имя (Price) . Поэтому первая часть оператора – имя таблицы (можно, конечно, и без него обойтись, но это, то, что называют «дурной тон»).
- Вторая часть оператора - непосредственно оператор преобразования матрицы в таблицу:
Указываем название нового поля –атрибутов. В нашем случае - это
список магазинов, поэтому поле назовем Shop.
Далее указываем название нового поля с данным. В нашем
случае – это цена товара – Price.
Кстати, названия полей можно указывать и по-русски (пример,
Вы сможете найти, если дочитаете мой пост)
- Третьей частью оператора является собственно источник данных. Поэтому здесь можно использовать обычный оператор Load или Select.
Обратите внимание, что если мы в качестве источника данных
используем ранее загруженную таблицу, а не «постоянный» источник (файл, БД и пр.), то необходимо
добавить атрибут RESIDENT
Если теперь вы запустите скрипт, то у Вас загрузится 2
таблички, связанные по полю Товары (Вы помните о том, что QlikView сам умеет
связывать таблицы по одноименному полю).
Но нам же этого не надо ? Поэтому добавим оператор удаления ненужной загруженной
таблицы:
DROP TABLE SourceData
Теперь можно загрузить данные и посмотреть результирующую таблицу. Самый простой способ сделать это - добавить на лист приложения объект - простая таблица и отобразить все доступные поля
Между прочим, наш скрипт можно было бы существенно упросить,
если объединить оператор загрузки данных
из источника и их преобразование в «длинную» таблицу. Короткий вариант :
Data:
CrossTable( 'Магазин', 'Цена')
LOAD * FROM
C:\GALA\QVBook\Cross\CrossTable_Data.xls
(biff, embedded labels);
CrossTable( 'Магазин', 'Цена')
LOAD * FROM
C:\GALA\QVBook\Cross\CrossTable_Data.xls
(biff, embedded labels);
Как Вы
видите я использовала русские названия полей данных. Очевидно, что оператор DROP TABLE нам не нужен.
А что делать, если табличка чуть-чуть сложнее и там
содержатся данные не только по списку-товаров, но и выполнена классификация
товаров по группе. Например, вид нашей матрицы может быть такой:
Атрибут Группа не может обрабатываться так же как и атрибут
Магазин?
Умный QlikView сам может обработать (такие поля-исключения), просто
пропустив их. Изменим наш короткий запрос следующим образом:
Data:CrossTable(Магазин, Цена, 2)
LOAD * FROM
C:\GALA\QVBook\Cross\CrossTable_Data2.xls
(biff, embedded labels);
Во второй части выражения мы просто добавили 2 – количество полей
(столбцов) исходной таблицы, которое надо пропустить прежде чем
встретятся столбцы с данными
второго атрибута, необходимые для обработки. Запутано. Я прочитала в Online-Help – русский вариант,
еще более запутан, я бы даже сказала, совсем не понятен в этой части.
Поэтому,
рассматривая наш пример можно объяснить работу QlikView следующим
образом: пропустим 2
первых столбца исходной таблицы (в нашем примере ТОВАР и ГРУППА) и обработаем все остальные следующим образом:
заголовок столбца запишем в поле Магазин, а данные для каждого
наименования товара в поле Цена. В результате Простая
Таблицы в QlikView будет выглядеть следующим образом:
Комментариев нет:
Отправить комментарий