QlikView - Добавочная нагрузка
По мере увеличения объема данных в источнике данных документа QlikView время, необходимое для загрузки файла, также увеличивается, что замедляет процесс анализа. Один из способов минимизировать это время, затрачиваемое на загрузку данных, - это загрузка только новых или обновленных записей в источнике. Эта концепция загрузки только новых или измененных записей из источника в документ QlikView называетсяIncremental Load.
Чтобы идентифицировать новые записи из источника, мы используем либо последовательный уникальный ключ, либо отметку даты и времени для каждой строки. Эти значения уникального ключа или поля времени данных должны передаваться из исходного файла в документ QlikView.
Давайте рассмотрим следующий исходный файл, содержащий сведения о продукте в розничном магазине. Сохраните его как файл .csv в локальной системе, где он будет доступен QlikView. Через какое-то время добавляется еще несколько продуктов и изменяется описание некоторых продуктов.
Product_Id,Product_Line,Product_category,Product_Subcategory
1,Sporting Goods,Outdoor Recreation,Winter Sports & Activities
2,"Food, Beverages & Tobacco",Food Items,Fruits & Vegetables
3,Apparel & Accessories,Clothing,Uniforms
4,Sporting Goods,Athletics,Rugby
5,Health & Beauty,Personal Care
6,Arts & Entertainment,Hobbies & Creative Arts,Musical Instruments
7,Arts & Entertainment,Hobbies & Creative Arts,Orchestra Accessories
8,Arts & Entertainment,Hobbies & Creative Arts,Crafting Materials
9,Hardware,Tool Accessories,Power Tool Batteries
10,Home & Garden,Bathroom Accessories,Bath Caddies
11,"Food, Beverages & Tobacco",Food Items,Frozen Vegetables
12,Home & Garden,Lawn & Garden,Power Equipment
Загрузка данных в QlikView
Мы загрузим указанный выше CSV-файл с помощью редактора сценариев (Control + E), выбрав опцию Table Files, как показано ниже. Здесь мы также сохраняем данные в файл QVD в локальной системе. Сохраните документ QlikView как файл .qvw.
Проверка загруженных данных.
Мы можем проверить данные, загруженные в документ QlikView, создав объект листа с именем Table Box. Это доступно в меню «Макет» иNew Sheet Objects подменю.
Создание макета таблицы
При выборе Table Boxлист, мы переходим к следующему экрану, который используется для выбора столбцов и их позиций в создаваемой таблице. Выбираем следующие столбцы и их позиции и нажимаем Готово.
Просмотр существующих данных
Появится следующая диаграмма, показывающая данные, представленные на предыдущем шаге.
Обновление исходных данных
Добавим в исходные данные еще три записи. Здесь идентификаторы продуктов - это уникальные числа, которые представляют новые записи.
13,Office Supplies,Presentation Supplies,Display
14,Hardware,Tool Accessories,Jigs
15,Baby & Toddler,Diapering,Baby Wipes
Скрипт инкрементальной загрузки
Теперь мы пишем сценарий, который извлекает из источника только новые записи.
// Load the data from the stored qvd.
Stored_Products:
LOAD Product_Id,
Product_Line,
Product_category,
Product_Subcategory
FROM
[E:\Qlikview\data\products.qvd]
(qvd);
//Select the maximum value of Product ID.
Max_Product_ID:
Load max(Product_Id) as MaxId
resident Stored_Products;
//Store the Maximum value of product Id in a variable.
Let MaxId = peek('MaxId',-1);
drop table Stored_Products;
//Pull the rows that are new.
NewProducts:
LOAD Product_Id,Product_Line, Product_category,Product_Subcategory
from [E:\Qlikview\data\product_categories.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq)
where Product_Id > $(MaxId);
//Concatenate the new values with existing qvd.
Concatenate
LOAD Product_Id,Product_Line, Product_category,
Product_Subcategory
FROM [E:\Qlikview\data\products.qvd](qvd);
//Store the values in qvd.
store NewProducts into [E:\Qlikview\data\products.qvd](qvd);
Вышеупомянутый скрипт выбирает только новые записи, которые загружаются и сохраняются в файле qvd. Как мы видим записи с новыми идентификаторами продуктов 13, 14 и 15.