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.