Gå till huvudinnehåll
Använda prefixet Crosstable

PÅ DEN HÄR SIDAN

Använda prefixet Crosstable

Korstabeller är en vanlig tabelltyp, som består av en datamatris med värden mellan två ortogonala listor av rubrikdata. När du har en korstabell med data kan du använda prefixet Crosstable för att omvandla data och skapa önskade fält.

Prefixet Crosstable

I följande Product-tabell har du en kolumn per månad och en rad per produkt.

Produkttabell
Produkt Jan 2014 Feb 2014 Mars 2014 Apr 2014 Maj 2014 Jun 2014
A 100 98 100 83 103 82
B 284 279 297 305 294 292
C 50 53 50 54 49 51

När du laddar tabellen får du en tabell med ett fält för Product och ett fält för varje månad.

Product tabellen med fältet Product och ett fält för varje månad
Product table with Product field, and one field each for the months.

Om du vill analysera dessa data är det mycket enklare att ha alla tal i ett fält och alla månader i ett annat. I detta fall handlar det om en tabell med tre kolumner och en kolumn för varje kategori (Product, Month, Sales).

Product-tabell med fälten Product, Month och Sales
Product table with Product, Month, and Sales fields.

Crosstable-prefixet omvandlar data till en tabell med en kolumn för Month och en annan för Sales. Ett annat sätt att uttrycka det på är att säga att det tar fältnamn och omvandlar dem till fältvärden.

Gör följande:

  1. Skapa en ny app och kalla den för Introduktionskurs om avancerade skript.
  2. Lägg till ett nytt skriptavsnitt i Skriptredigeraren.
  3. Ge delavsnittet namnet Product.
  4. Klicka på Välj data under DataFiles i menyn till höger.

  5. Ladda upp och välj sedan Product.xlsx.
  6. Välj tabellen Product i fönstret Välj data från.
  7. Anteckning om tipsSe till att Inbäddade fältnamn under Fältnamn har valts för att inkludera namnen på tabellfälten när du laddar data.
  8. Klicka på Infoga skript.
  9. Ditt skript bör se ut så här:

    LOAD Product, "Jan 2014", "Feb 2014", "Mar 2014", "Apr 2014", "May 2014", "Jun 2014" FROM [lib://DataFiles/Product.xlsx] (ooxml, embedded labels, table is Product);

  10. Klicka på Ladda data.
  11. Öppna datamodellvyn. Datamodellen ser ut så här:
  12. Product-tabellen med fältet Product och ett fält för varje månad
    Product table with Product field, and one field each for the months.

  13. Klicka på fliken Product i Skriptredigeraren.
  14. Ange följande över LOAD-satsen:
  15. CrossTable(Month, Sales)

  16. Klicka på Ladda data.
  17. Öppna datamodellvyn. Datamodellen ser ut så här:
  18. Product tabell med fälten Product, Month och Sales
    Product table with Product, Month, and Sales fields.

    Observera att indata normalt bara har en kolumn som kvalificerande fält; som en intern nyckel (Product i exemplet ovan). Det går dock att ha flera. I sådana fall måste alla kvalificerande fält räknas upp före attributfälten i LOAD-satsen, och Crosstable-prefixets tredje parameter måste användas för att definiera antalet kvalificerande fält. Det går inte att ha en föregående LOAD eller ett prefix framför Crosstable-nyckelordet. Det går dock att använda automatisk konkatenering.

    I en tabell i Qlik Sense ser dina data ut så här:

    Tabellen visar data som har laddats med prefixet Crosstable
    Table showing data loaded using Crosstable prefix.

    Nu kan du till exempel skapa ett stapeldiagram med hjälp av dessa data:

    Stapeldiagrammet visar data som laddats med Crosstable-prefixet
    Bar chart showing data loaded using the Crosstable prefix.

Anteckning om informationMer information om Crosstable finns i det här blogginlägget i Qlik Community: Korstabelladdning. Beteenden diskuteras i ett sammanhang som avser QlikView. Logiken gäller dock i samma utsträckning för Qlik Sense.

Numerisk tolkning fungerar inte för attributfälten. Detta innebär att om du har månader som kolumnrubriker kommer dessa inte att tolkas automatiskt. Du kan avhjälpa problemet genom att använda Crosstable-prefixet för att skapa en tillfällig tabell och köra ett andra pass på den så att tolkningarna blir som i följande exempel.

Observera att detta bara är ett exempel. Det finns inga övningar för dessa data att göra i Qlik Sense.

tmpData: Crosstable (MonthText, Sales) LOAD Product, [Jan 2014], [Feb 2014], [Mar 2014], [Apr 2014], [May 2014], [Jun 2014] FROM ... Final: LOAD Product, Date(Date#(MonthText,'MMM YYYY'),'MMM YYYY') as Month, Sales Resident tmpData; Drop Table tmpData;

Rensa minnescachen

Du kan ta bort tabeller som du skapar för att rensa cacheminnet. Om du läser in till en tillfällig tabell som i föregående avsnitt bör du ta bort den när den inte behövs längre. Exempel:

DROP TABLE Table1, Table2, Table3, Table4; DROP TABLES Table1, Table2, Table3, Table4;

Du kan även släppa fält. Exempel:

DROP FIELD Field1, Field2, Field3, Field4; DROP FIELDS Field1, Field2, Field3, Field4; DROP FIELD Field1 from Table1; DROP FIELDS Field1 from Table1;

Som du kan se kan nyckelorden TABLE och FIELD vara singular eller plural.