Arbeiten mit Kreuztabellen im Datenladeskript
Kreuztabellen sind eine häufig verwendete Art von Tabellen, die aus einer Matrix von Werten an den Schnittstellen zweier rechtwinklig angeordneten Listen von Spalten- und Zeilenüberschriften bestehen. Dieses Format ist üblicherweise eher ungeeignet, um die Daten mit anderen Datentabellen zu verknüpfen.
Dieser Abschnitt beschreibt, wie Sie eine Kreuztabelle entpivotieren – d. h., bestimmte Teile der Daten in Zeilen umwandeln –, indem Sie einer LOAD-Anweisung das Präfix crosstable voranstellen.
Entpivotieren einer Kreuztabelle mit nur einer qualifizierenden Spalte
Manchmal stehen vor der Kreuztabelle noch mehrere qualifizierende Spalten, die als normale Felder zu betrachten sind. In diesem Fall gibt es eine Spalte, Year, und eine Umsatzdatenmatrix pro Monat.
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 |
Wird diese Tabelle auf die übliche Weise in Qlik Sense eingelesen, ergeben sich ein Feld mit der Bezeichnung Year und je ein Feld für jeden der aufgeführten Monate. Dies ist allerdings ungünstig. Sinnvoller ist es, wenn drei Felder entstehen:
- In diesem Fall ist die Spalte Year in der vorstehenden Tabelle grün markiert.
- Das Attribut-Feld – in diesem Fall die MonatsnamenJan - Jun – ist gelb markiert. Dieses Feld kann entsprechend Month benannt werden.
- Die Datenmatrixwerte sind blau gekennzeichnet. In diesem Fall stehen sie für die Umsatzzahlen, die entsprechendSales benannt werden können.
Dies erreichen Sie, indem Sie den Zusatz crosstable vor dem entsprechenden Befehl LOAD oder SELECT einfügen.
crosstable (Month, Sales) LOAD * from ex1.xlsx;
Damit wird die folgende Tabelle in Qlik Sense erzeugt:
Year | Month | Sales |
---|---|---|
2008 | Jan | 45 |
2008 | Feb | 65 |
2008 | Mär | 78 |
2008 | Apr | 12 |
2008 | Mai | 78 |
2008 | Jun | 22 |
2009 | Jan | 11 |
2009 | Feb | 23 |
... | ... | ... |
Entpivotieren einer Kreuztabelle mit zwei qualifizierenden Spalten
Hier befinden sich zwei Spalten vor der Wertematrix.
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 |
Die Zahl dieser Spalten wird als dritter Parameter zum Zusatz crosstable eingefügt:
crosstable (Month, Sales, 2) LOAD * from ex2.xlsx;
Qlik Sense zeigt dann folgendes Ergebnis an:
Vertriebsmitarbeiter | Year | Month | Sales |
---|---|---|---|
A | 2008 | Jan | 45 |
A | 2008 | Feb | 65 |
A | 2008 | Mär | 78 |
A | 2008 | Apr | 12 |
A | 2008 | Mai | 78 |
A | 2008 | Jun | 22 |
A | 2009 | Jan | 11 |
A | 2009 | Feb | 23 |
... | ... | ... | ... |