Преобразование данных
Преобразовывать и изменять данные можно с помощью большого количества различных методов в Редактор загрузки данных.
Одним из преимуществ в управлении данными является возможность выбрать только загрузку подмножества данных из файла, например нескольких выбранных столбцов из таблицы, чтобы обработка данных выполнялась более эффективно. Данные можно загрузить несколько раз, чтобы разбить необработанные данные на несколько новых логических таблиц. Также можно загрузить данные из нескольких источников и объединить их в одной таблице в программе Qlik Sense.
В этом разделе справки будут выполнены некоторые основные преобразования данных с помощью оператора Resident load, а затем оператора Preceding load.
Resident LOAD
Можно использовать классификатор источника Resident в операторе LOAD, чтобы загрузить данные из ранее загруженной таблицы. Это также удобно, когда необходимо выполнить вычисления с данными, загруженными с помощью оператора SELECT, когда нет возможности использовать функции Qlik Sense, такие как обработка даты или числовых значений.
В этом примере вы создадите новую таблицу с именем Sales_Buckets, а затем загрузите данные из таблицы Table1 с помощью резидентной загрузки. В таблице Sales_Buckets вы создадите переменную с именем quantity_threshold, а затем воспользуетесь оператором Where, чтобы загрузить только данные, удовлетворяющие этому пороговому значению.
- Откройте редактор загрузки данных в приложении Scripting Tutorial.
- Щелкните вкладку Sales.
- Добавьте следующее выражение в конец скрипта:
- Щелкните команду Загрузить данные.
- Откройте раздел Просмотр модели данных. Можно увидеть, что создана новая таблица с именем Sales_Buckets, содержащая данные, загруженные в соответствии с указанными вами полями и заданным вами пороговым значением.
- Добавьте данные в таблицу в приложении. Добавьте Item и Customer в качестве измерений. Добавьте High-Quantity в качестве меры, агрегированной по Count, а затем снова агрегированной по Sum. Затем добавьте новый столбец в качестве меры со следующей формулой:
- Теперь, когда мы завершили этот пример, закомментируйте скрипт для переменной quantity_threshold и таблицы Sales_Buckets.
SET quantity_threshold = 12000;
Sales_Buckets:
LOAD
"Sales Qty" as "High_Quantity",
"Item Description" as "Item",
"Customer Number" as "Customer"
Resident Table1
Where ("Sales Qty" > $(quantity_threshold));
Скрипт должен выглядеть следующим образом:
= Sum(High_Quantity) / Count(High_Quantity)
В вашей таблице, например, показано, что клиент Customer 10025737 сделал 4 больших заказа Качественных сушеных грибов со средним количеством 14 800. Чтобы выполнить сортировку данных в этих полях, закройте режим изменения, щелкнув элемент Готов.
Конец скрипта должен выглядеть теперь следующим образом:
Предшествующий оператор LOAD
Предшествующий оператор load позволяет выполнять преобразования и применять фильтры таким образом, чтобы загрузка данных осуществлялась за один проход. По существу, именно оператор LOAD выполняет загрузку из нижеуказанных операторов LOAD или SELECT, не указывая классификатор источника, такой как From или Resident, который обычно указывается. Таким образом, можно выстроить стопкой любое количество операторов LOAD. Сначала будет оценен самый нижний оператор, затем оператор над ним и так до самого верхнего оператора.
Как отмечалось ранее в этом учебном пособии, данные в Qlik Sense можно загружать с помощью операторов LOAD и SELECT. Каждый из них создает внутреннюю таблицу. Оператор LOAD используется для загрузки данных из файлов или из встроенной таблицы, тогда как оператор SELECT используется для загрузки данных из баз данных. В этом учебном пособии вы использовали данные из файлов. В этом примере будет использоваться встроенная таблица. Однако следует отметить, что предшествующий оператор load может быть использован выше оператора SELECT для изменения данных. Основания для этого являются такими же, как вы увидите при использовании оператора LOAD.
Данный пример не относится к данным, которые мы загружаем в этом учебном пособии. Он используется только в качестве примера того, как выглядит предшествующий оператор load. Вы создадите встроенную таблицу редактора загрузки данных с именем Transactions. Интерпретация даты будет выполнена в предшествующем операторе LOAD, где будет создано новое поле с именем transaction_date. Это поле создается из поля sale_date.
- Создайте новое приложение и назовите его ReformatDate.
- Откройте редактор загрузки данных, а затем создайте новую вкладку с именем TransactionData.
- Добавьте следующий скрипт:
- Щелкните команду Загрузить данные.
- Откройте раздел Просмотр модели данных. Выберите и разверните таблицу Transactions. Можно увидеть, что все поля были загружены, как указано символом «*» в предшествующем операторе load. Было создано новое поле с именем transaction_date. В данном поле имеется преобразованная дата.
Transactions:
Load *,
Date(Date#(sale_date,'YYYYMMDD'),'DD/MM/YYYY') as transaction_date;
Load * Inline [ transaction_id, sale_date, transaction_amount, transaction_quantity, customer_id, size, color_code
3750, 20180830, 23.56, 2, 2038593, L, Red
3751, 20180907, 556.31, 6, 203521, m, orange
3752, 20180916, 5.75, 1, 5646471, S, blue
3753, 20180922, 125.00, 7, 3036491, l, Black
3754, 20180922, 484.21, 13, 049681, xs, Red
3756, 20180922, 59.18, 2, 2038593, M, Blue
3757, 20180923, 177.42, 21, 203521, XL, Black ];
Скрипт должен выглядеть следующим образом: