Arbeta med korstabeller i dataladdningsskriptet
En korstabell är en vanlig tabelltyp, som består av en datamatris mellan två ortogonala listor av rubrikdata. Det brukar inte vara det optimala dataformatet om du vill associera data till andra datatabeller.
I detta avsnitt beskrivs hur du kan ta bort pivoteringen av en korstabell med hjälp av crosstable-prefixet på en LOAD-sats i dataladdningsskriptet.
Ta bort pivoteringen av en korstabell med en kvalificerande kolumn
En korstabell föregås ofta av ett antal kvalificerande kolumner som ska läsas på ett enkelt sätt. I det här fallet finns det en kvalificerande kolumn, Year, och en matris med försäljningsdata per månad.
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 |
Om denna tabell läses in i Qlik Sense på vanligt sätt, blir resultatet ett fält för Year och ett fält för varje månad. Detta är oftast inte det resultat man vill ha. Du vill förmodligen att tre fält ska skapas:
- Den kvalificerande kolumnen, i det här fallet Year, markeras med grönt i tabellen ovan.
- Attributfältet, i det här fallet representerat av månadsnamnen Jan - Jun gulmarkeras. Det här fältet ges lämpligen namnet Month.
- Datamatrisvärdena, markerade med blått. I det här fallet symboliserar de försäljningsdata så det är lämpligt att välja namnet Sales.
För att åstadkomma detta kan du låta prefixet crosstable föregå LOAD- eller SELECT-satsen. Exempel:
crosstable (Month, Sales) LOAD * from ex1.xlsx;
Detta skapar följande tabell i Qlik Sense:
Year | Month | Sales |
---|---|---|
2008 | Jan | 45 |
2008 | Feb | 65 |
2008 | Mar | 78 |
2008 | Apr | 12 |
2008 | Maj | 78 |
2008 | Jun | 22 |
2009 | Jan | 11 |
2009 | Feb | 23 |
... | ... | ... |
Ta bort pivoteringen av en korstabell med två kvalificerande kolumner
Här föregås matriskolumnerna av två kvalificerande kolumner.
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 |
Antalet kvalificerande kolumner kan sättas som tredje parameter till crosstable-prefixet på följande sätt:
crosstable (Month, Sales, 2) LOAD * from ex2.xlsx;
Detta leder till följande resultat i Qlik Sense:
Salesman | Year | Month | Sales |
---|---|---|---|
A | 2008 | Jan | 45 |
A | 2008 | Feb | 65 |
A | 2008 | Mar | 78 |
A | 2008 | Apr | 12 |
A | 2008 | Maj | 78 |
A | 2008 | Jun | 22 |
A | 2009 | Jan | 11 |
A | 2009 | Feb | 23 |
... | ... | ... | ... |