Datatvätt
Vid inläsning av data från olika tabeller, lägg märke till att fältvärden som betecknar samma sak inte alltid har samma namn. Eftersom en sådan brist på överensstämmelse inte bara är irriterande, utan dessutom hindrar programmet från att göra associationer, bör problemet åtgärdas. En bra metod för att göra detta är att skapa en mappningstabell för att jämföra fältvärden.
Mappningstabeller
Tabeller som läses in via mapping load eller mapping select behandlas annorlunda än andra tabeller. De lagras i en separat del av minnet och används bara som mappningstabeller under skriptexekveringen. Efter skriptexekveringen avlägsnas de automatiskt.
Regler:
- En mappningstabell måste ha två kolumner, varav den första ska innehålla värdena som ska jämföras, den andra de önskade mappningsvärdena.
- Kolumnerna måste döpas, men då namnen inte har någon koppling till fältnamn i vanliga interna tabeller är de inte relevanta i sig.
Använda en mappningstabell
Vid inläsning av flera tabeller som innehåller länder noterar du kanske att ett och samma land benämns på flera olika sätt. I detta exempel benämns USA som US, U.S. och United States.
För att undvika förekomsten av tre poster som betecknar USA i den konkatenerade tabellen, ska du skapa en tabell som den visade och ladda den som en mappningstabell.
Ditt slutliga skript bör se ut på följande sätt:
CountryMap:
Mapping LOAD x,y from MappingTable.txt
(ansi, txt, delimiter is ',', embedded
labels);
Map Country using CountryMap;
LOAD Country,City from CountryA.txt
(ansi, txt, delimiter is ',', embedded labels);
LOAD Country, City from CountryB.txt
(ansi, txt, delimiter is ',', embedded labels);
mapping-satsen läser in filen MappingTable.txt i form av en mappningstabell med etiketten CountryMap.
map-satsen gör det möjligt att mappa fältet Country med hjälp av den tidigare inlästa mappningstabellen CountryMap.
LOAD-satserna läser in tabellerna CountryA och CountryB. Dessa tabeller, som kommer att konkateneras p.g.a. att de har samma fältuppsättning, innehåller båda fältet Country, vars fältvärden kommer att jämföras med värdena i mappningstabellens första kolumn. Fältvärdena US, U.S. och United States kommer att påträffas och ersättas av fältvärdena i mappningstabellens andra kolumn, d.v.s. USA.
Den automatiska mappningen inträffar sist i den kedja av händelser som leder fram till att fältet lagras i Qlik Sense-tabellen. För en typisk LOAD- eller SELECT-sats inträffar händelserna ungefär i följande ordning:
- Utvärdering av uttryck
- Omdöpning av fält med as
- Omdöpning av fält med alias
- Tabellbestämning av fältnamn
- Mappning av data om fältnamn matchar
Detta innebär att mappning inte görs varje gång ett fältnamn påträffas som del av ett uttryck, utan när värdet lagras under fältnamnet i Qlik Sense-tabellen.
För att avsluta mappningen, använd unmap-satsen.
För mappning på uttrycksnivå, använd funktionen applymap.
För mappning på delsträngsnivå, använd funktionen mapsubstring.