Przekształcanie danych
W narzędziu Edytor ładowania danych można przekształcać dane i manipulować nimi na wiele różnych sposobów.
Jedną z zalet manipulowania danych jest możliwość wyboru do ładowania tylko podzbioru danych z pliku, np. kilku kolumn z tabeli, co ułatwia obsługę danych. Dane można również załadować więcej niż raz, aby podzielić dane pierwotne na kilka nowych tabel logicznych. Możliwe jest również załadowanie danych z więcej niż jednego źródła oraz scalenie ich w jedną tabelę w programie Qlik Sense.
W tym temacie zostanie wykonane podstawowe przekształcenie danych przy użyciu opcji Resident load, a następnie opcji Preceding load.
Resident LOAD
Aby załadować dane z wcześniej załadowanej tabeli, można użyć kwalifikatora źródła Resident w instrukcji LOAD. Jest to przydatne, gdy wymagane jest wykonanie obliczeń na danych załadowanych przy użyciu instrukcji SELECT, kiedy nie ma możliwości skorzystania z funkcji Qlik Sense, takich jak przetwarzanie dat lub wartości liczbowych.
W tym przykładzie zostanie utworzona nowa tabela o nazwie Sales_Buckets, a następnie za pomocą opcji resident load zostaną załadowane dane z Table1. W tabeli Sales_Buckets zostanie utworzona zmienna o nazwie quantity_threshold, a następnie za pomocą instrukcji Where zostaną załadowane tylko dane spełniające wymagania progowe.
- Otwórz Edytor ładowania danych w aplikacji Scripting Tutorial.
- Kliknij kartę Sales.
- Dodaj następujący kod na końcu skryptu:
- Kliknij polecenie Ładuj dane.
- Otwórz Przeglądarkę modelu danych. Utworzona została nowa tabela o nazwie Sales_Buckets z danymi załadowanymi zgodnie z polami i wartościami progowymi określonymi przez użytkownika.
- Dodaj dane do tabeli w aplikacji. Dodaj Item i Customer jako wymiary. Dodaj High-Quantity jako wymiar zagregowany w Count, a następnie zagregowany ponownie w Sum. Następnie dodaj nową kolumnę jako miarę z następującym wzorem:
- Teraz, po zakończeniu tego przykładu, opatrz komentarzem skrypt zmiennej quantity_threshold i tabeli 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));
Skrypt powinien wyglądać następująco:
= Sum(High_Quantity) / Count(High_Quantity)
W tabeli widać, że Customer 10025737 dokonał 4 dużych zamówień suszonych grzybów High Top Dried Mushrooms ze średnią ilością 14 800 sztuk. Aby posortować dane w polach, zamknij tryb Edycji klikając przycisk Gotowe.
Zakończenie skryptu powinno wyglądać w następujący sposób:
Instrukcja preceding LOAD
Instrukcja preceding load pozwala na wykonywanie przekształceń i stosowanie filtrów w celu ładowania danych w jednym przebiegu. Zasadniczo jest to instrukcja LOAD ładowana z instrukcji LOAD lub SELECT bez określania kwalifikatora źródłowego, takiego jak From lub Resident, jak to się zwykle dzieje. W ten sposób można skumulować dowolną liczbę instrukcji LOAD. Instrukcja na samym dole zostanie obliczona jako pierwsza, następnie zostanie obliczona instrukcja znajdująca się powyżej i tak dalej, aż do instrukcji na samej górze.
Jak opisano to wcześniej w niniejszym kursie, dane do Qlik Sense można załadować za pomocą instrukcji LOAD i SELECT. Każda z tych instrukcji powoduje wygenerowanie tabeli wewnętrznej. LOAD służy do ładowania danych z plików lub z tabeli wbudowanej, natomiast SELECT służy do ładowania danych z baz danych. W tym kursie użyto danych z plików. W tym przykładzie zostanie użyta tabela wbudowana. Warto wiedzieć, że instrukcji preceding load można użyć ponad instrukcją SELECT w celu manipulowania danymi. Podstawowe działania są takie same jak tutaj w przypadku instrukcji LOAD.
Poniższy przykład nie jest powiązany z danymi ładowanymi w tym kursie. Służy tylko do pokazania przykładowej instrukcji preceding load. W edytorze ładowania danych zostanie utworzona tabela wbudowana Transactions. Interpretacja daty zostanie przeprowadzona w instrukcji preceding LOAD, gdzie zostanie utworzone nowe pole transaction_date. To pole jest tworzone na podstawie pola sale_date.
- Utwórz nową aplikację i nadaj jej nazwę ReformatDate.
- Otwórz edytor ładowania danych, a następnie utwórz nową kartę o nazwie TransactionData.
- Dodaj następujący skrypt:
- Kliknij polecenie Ładuj dane.
- Otwórz Przeglądarkę modelu danych. Wybierz i rozwiń tabelę Transactions. Wszystkie pola zostały załadowane w sposób określony przez * w instrukcji preceding load. Utworzone zostało nowe pole transaction_date. Data w tym polu jest sformatowana.
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 ];
Skrypt powinien wyglądać następująco: