Praca ze tabelami krzyżowymi w skrypcie ładowania danych
Tabela krzyżowa to często spotykany typ tabeli. Stanowi ona macierz wartości między dwiema ortogonalnymi listami danych nagłówka. Jeśli chcesz utworzyć asocjację między tymi danymi a innymi tabelami danych, zwykle nie jest to optymalny format danych.
W tym temacie opisano sposób cofania przestawienia danych w formacie tabeli krzyżowej, czyli transponowania jej części na wiersze za pomocą prefiksu crosstable w instrukcji LOAD w skrypcie ładowania danych.
Cofanie przestawiania tabeli krzyżowej z jedną kolumną kwalifikującą
Na początku tabeli krzyżowej często znajduje się kilka kolumn kwalifikujących, które należy odczytywać bezpośrednio. W tym przypadku mamy jedną kolumnę kwalifikującą Year oraz macierz danych sprzedaży dla poszczególnych miesięcy.
Year | Jan | Feb | Mar | Apr | May | Jun |
---|---|---|---|---|---|---|
2008 | 45 | 65 | 78 | 12 | 78 | 22 |
2009 | 11 | 23 | 22 | 22 | 45 | 85 |
2010 | 65 | 56 | 22 | 79 | 12 | 56 |
2011 | 45 | 24 | 32 | 78 | 55 | 15 |
2012 | 45 | 56 | 35 | 78 | 68 | 82 |
Zwykłe załadowanie takiej tabeli do Qlik Sense spowoduje utworzenie jednego pola dla kolumny Year i jednego pola dla każdego z miesięcy. Zazwyczaj nie takie działanie jest oczekiwane. Wygodniej byłoby wygenerować trzy pola:
- Kolumnę kwalifikującą, w tym przypadku Year, zaznaczoną w powyższej tabeli na zielono.
- Pole atrybutu, w tym przypadku reprezentowane przez nazwy miesięcy Jan - Jun zaznaczone na żółto. Polu można nadać nazwę Month.
- Wartości macierzy danych, zaznaczone na niebiesko. W tym przypadku reprezentują one dane sprzedaży, można im nadać nazwę Sales.
Efekt ten można osiągnąć, dodając prefiks crosstable do instrukcji LOAD lub SELECT, na przykład:
crosstable (Month, Sales) LOAD * from ex1.xlsx;
Spowoduje to utworzenie w programie Qlik Sense następującej tabeli:
Year | Month | Sales |
---|---|---|
2008 | Jan | 45 |
2008 | Feb | 65 |
2008 | Mar | 78 |
2008 | Apr | 12 |
2008 | May | 78 |
2008 | Jun | 22 |
2009 | Jan | 11 |
2009 | Feb | 23 |
... | ... | ... |
Cofanie przestawiania tabeli krzyżowej z dwiema kolumnami kwalifikującymi
W tym przypadku pierwsze dwie kolumny od lewej to kolumny kwalifikujące, po których następują kolumny macierzy.
Salesman | Year | Jan | Feb | Mar | Apr | May | Jun |
---|---|---|---|---|---|---|---|
A | 2008 | 45 | 65 | 78 | 12 | 78 | 22 |
A | 2009 | 11 | 23 | 22 | 22 | 45 | 85 |
A | 2010 | 65 | 56 | 22 | 79 | 12 | 56 |
A | 2011 | 45 | 24 | 32 | 78 | 55 | 15 |
A | 2012 | 45 | 56 | 35 | 78 | 68 | 82 |
B | 2008 | 57 | 77 | 90 | 24 | 90 | 34 |
B | 2009 | 23 | 35 | 34 | 34 | 57 | 97 |
B | 2010 | 77 | 68 | 34 | 91 | 24 | 68 |
B | 2011 | 57 | 36 | 44 | 90 | 67 | 27 |
B | 2012 | 57 | 68 | 47 | 90 | 80 | 94 |
Liczbę kolumn kwalifikujących można podać jako trzeci parametr prefiksu crosstable w następujący sposób:
crosstable (Month, Sales, 2) LOAD * from ex2.xlsx;
W programie Qlik Sense zwrócony zostanie następujący wynik:
Salesman | Year | Month | Sales |
---|---|---|---|
A | 2008 | Jan | 45 |
A | 2008 | Feb | 65 |
A | 2008 | Mar | 78 |
A | 2008 | Apr | 12 |
A | 2008 | May | 78 |
A | 2008 | Jun | 22 |
A | 2009 | Jan | 11 |
A | 2009 | Feb | 23 |
... | ... | ... | ... |