# Beprövade metoder för datamodellering

Detta delavsnitt beskriver ett antal olika sätt att ladda dina data i en Qlik Sense applikation, beroende på hur data är strukturerade och vilken datamodell du vill uppnå.



## Omvandla datakolumner till rader

Mina data ser förmodligen ut så här, och jag vill ha data om försäljning i ett separat fält:

Ursprunglig datatabell

| År | Q1 | Q2 | Q3 | Q4 |
| --- | --- | --- | --- | --- |
| 2013 | 34 | 54 | 53 | 52 |
| 2014 | 47 | 56 | 65 | 67 |
| 2015 | 57 | 56 | 63 | 71 |

Föreslagen åtgärd

Använd prefixet Crosstable när du laddar tabellen.

Resultatet följer nedan:

Tabell efter att prefixet Crosstable tillämpats

| Year | Quarter | Sales |
| --- | --- | --- |
| 2013 | Q1 | 34 |
| 2013 | Q2 | 54 |
| 2013 | Q3 | 53 |
| 2013 | Q4 | 52 |
| 2014 | Q1 | 47 |
| ... | ... | ... |

Mer information om Crosstable finns i [Arbeta med korstabeller i dataladdningsskriptet](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/work-with-cross-tables.htm) och [Crosstable](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/crosstable.htm).

## Omvandla datarader till fält

Jag har en generisk tabell med tre fält som liknar denna och jag vill ha varje attribut i en separat tabell:

Generisk tabell med tre fält

| Object | Attribute | Value |
| --- | --- | --- |
| ball | color | red |
| ball | diameter | 25 |
| ball | weight | 3 |
| box | color | 56 |
| box | height | 30 |
| box | length | 20 |
| box | width | 25 |

Föreslagen åtgärd

Skapa en generisk datamodell med hjälp av laddningsprefixet Generisk.

Du får en datamodell som ser ut så här:

![Generisk datamodell.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/ex_gen_GenericDatabase_300x300.png)

Mer information om generiska data finns i [Generiska databaser](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataSource/generic-databases.htm) och [Generic](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Generic.htm).

## Ladda data som har organiserats på hierarkiska nivåer, till exempel ett schema för en organisation

Mina data är sparade i en tabell med angränsade noder som ser ut så här:

Tabell med angränsande noder

| NodeID | ParentNodeID | Title |
| --- | --- | --- |
| 1 | - | General manager |
| 2 | 1 | Country manager |
| 3 | 2 | Region manager |

Föreslagen åtgärd

Ladda data med prefixet Hierarki för att skapa en tabell med expanderade noder:

Tabell med expanderade noder

| NodeID | ParentNodeID | Title | Level1 | Level2 | Level3 |
| --- | --- | --- | --- | --- | --- |
| 1 | - | General manager | General manager | - | - |
| 2 | 1 | Country manager | General manager | Country manager | - |
| 3 | 2 | Region manager | General manager | Country manager | Region manager |

Mer information om hierarkiska nivåer finns i [Ladda hierarkiska data](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataSource/hierarchies.htm) och [Hierarchy](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Hierarchy.htm).

## Ladda endast nya eller uppdaterade poster från en stor databas

Jag har en databas med ett stort antal poster, och jag vill inte ladda om hela databasen för att uppdatera data i min applikation. Jag vill bara ladda nya eller uppdaterade poster och eliminera poster som har tagits bort från databasen.

Föreslagen åtgärd

Implementera en lösning för inkrementell laddning med hjälp av QVD-filer.

Mer information finns i [Ladda nya och uppdaterade poster med inkrementell laddning](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/use-QVD-files-incremental-load.htm).

## Kombinera data från två tabeller med ett gemensamt fält

Qlik Sense jag kommer att associera tabeller med ett gemensamt fält automatiskt, men jag vill kontrollera hur tabellen kombineras.

Föreslagen åtgärd : Join / Keep

Du kan kombinera två tabeller i en enda intern tabell med hjälp av prefixen Join eller Keep.

Mer information finns i [Kombinera tabeller med Join och Keep](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm).

Föreslagen åtgärd : Mappning

Ett alternativ till att sammanfoga tabeller är att använda mappning, för att leta rätt på associerade värden i en mappningstabell automatiskt. På så sätt kan man minska mängden data som måste laddas.

Mer information finns i [Använda mappning som ett alternativ till länkning](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/use-mapping-as-alternative-join.htm).

## Matcha ett diskret värde med ett intervall

Jag har en tabell med diskreta numeriska värden (Event), och jag vill matcha den till ett eller fler intervaller (Start och End).

Tabell med diskreta numeriska värden (EventEvent)

| Tid | Händelse | Kommentar |
| --- | --- | --- |
| 00:00 | 0 | Start för skift 1 |
| 01:18 | 1 | Tillverkningsstopp |
| 02:23 | 2 | Tillverkningsomstart 50 % |
| 04:15 | 3 | Tillverkningshastighet 100 % |
| 08:00 | 4 | Start för skift 2 |
| 11:43 | 5 | Slut eller produktion |

Tabell med intervallen (StartStart och End End)

| Starta | Slut | Ordning |
| --- | --- | --- |
| 01:00 | 03:35 | A |
| 02:30 | 07:58 | B |
| 03:04 | 10:27 | C |
| 07:23 | 11:43 | D |

Föreslagen åtgärd

Använd prefixet IntervalMatch för att länka fältet Time med intervallet som definieras av Start och End.

Mer information finns här [Länka diskreta data till intervall](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/matching-intervals-to-discrete-data.htm).

Om intervallet inte definieras explicit vid starten och i slutet, utan endast med en ändring av tidsmarkören som i tabellen nedan, måste du skapa en intervalltabell.

Tabell med en tidsmarkör för ändring

| Valuta | Ändra data | Kurs |
| --- | --- | --- |
| EUR | - | 8.59 |
| EUR | 28/01/2013 | 8.69 |
| EUR | 15/02/2013 | 8.45 |
| USD | - | 6.50 |
| USD | 10/01/2013 | 6.56 |
| USD | 03/02/2013 | 6.30 |

Mer information finns i [Skapa ett datumintervall från ett enskilt datum](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/create-date-interval-from-single-date.htm).

## Hantera inkonsekventa fältvärden

Mina data innehåller fältvärden som inte har beskrivits konsekvent i de olika tabellerna. Till exempel innehåller en tabell värdet US i Land samtidigt som en annan tabell innehåller United States. Då kan associationer inte utföras korrekt.

Tabell 1

| Land | Region |
| --- | --- |
| USA | Maryland |
| USA | Idaho |
| USA | New York |
| USA | Kalifornien |

Table 2

| Country | Population |
| --- | --- |
| United States | 304 |
| Japan | 128 |
| Brazil | 192 |
| China | 1333 |

Föreslagen åtgärd

Genomför en datarensning med hjälp av en mappningstabell som jämför fältvärdet och aktiverar korrekta associationer.

Mer information finns här [Datatvätt](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/data-cleansing.htm).

## Hantera inkonsekventa versaler i fältvärden

Mina data innehåller fältvärden som inte är konsekvent formaterade i de olika tabellerna. Till exempel innehåller en tabell värdet single i Type medan en annan tabell innehåller Single i samma fält. Denna situation förhindrar associationer. Eftersom Type-fältet kommer att innehålla både single- och Single-värden spelar bruket av versaler en roll.

Tabell 1

| Typ | Pris |
| --- | --- |
| enstaka | 23 |
| dubbel | 39 |

Tabell 2

| Typ | Färg |
| --- | --- |
| En färg | Röd |
| En färg | Blå |
| Dubbel | Vit |
| Dubbel | Svart |

Föreslagen åtgärd

Om du laddade data med Lägg till data kan du åtgärda detta i Datahanteraren.

Gör följande:

1. Öppna Table2 i tabellredigeraren i Datahanteraren.

2. Byt namn på fältet Type till Table2.Type.

   Om du precis lade till tabellen med Lägg till data med dataprofilering aktiverat kanske fältet redan har namnet Table2.Type för att förhindra en automatisk association. I så fall kommer den här proceduren att associera de två tabellerna.

3. Skapa ett beräknat fält med uttrycket `Lower(Table2.Type)` och ge det namnet Type.

4. Klicka på Ladda data.

Table1 och Table2 ska nu associeras genom fältet Type, som bara innehåller värden i gemener, som single och double.

Om du vill använda en annan typ av versaler, kan du uppnå det med liknande procedurer men kom ihåg att tabellerna kommer att associeras med hjälp av fälten som har samma namn.

* Om alla värden ska skrivas med inledande versaler, som Single, skapar du det beräknade Type-fältet i Table1 istället och använder uttrycket `Capitalize(Table1.Type)`.
* Om alla värden ska skrivas helt med versaler, som SINGLE, skapar du det beräknade Type-fältet i båda tabellerna och använder uttrycken `Upper(Table1.Type)` respektive `Upper(Table2.Type)`.

Mer information om beräknade fält finns i [Använda beräknade fält](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/add-calculated-field.htm).

Mer information om inledande versal finns i [Capitalize Skript- och diagramfunktion](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Capitalize.htm), [Lower Skript- och diagramfunktion](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Lower.htm) och [Upper Skript- och diagramfunktion](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Upper.htm).

## Ladda geospatiala data för att kunna visualisera data med en karta

Jag har data som jag vill visualisera med hjälp av en karta, till exempel säljdata per land eller per butik. För att använda mappvisualisering måste jag ladda områdes- eller punktdata.

Föreslagen åtgärd

Du kan ladda yt- eller punktdata som matchar dina datavärdesplatser från en KML- eller en Excel-fil. Dessutom måste du ladda den faktiska bakgrunden för kartan.

Mer information finns i [Läs in egen kartdata](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Visualizations/Map/load-map-data.htm).