Indatafält
QlikView har stöd för en speciell typ av fält som kan ändras utan att skriptet måste exekveras, nämligen indatafältet.
Ett indatafält är som vilket annat fält som helst i QlikView, med den enda skillnaden att dess värden, så som de lästs i skriptet, senare kan ändras utan att skriptet körs igen. Indatafält används på samma sätt som andra fält i alla typer av arkobjekt.
När indatafälten används skapar skriptet platshållare för varje fältvärde. Dessa kan senare redigeras och få nytt datainnehåll. Alla fält kan göras om till indatafält genom att fältet förs in i en inputfield-sats i skriptet innan det förekommer i en LOAD- eller SELECT-sats.
Värdena i ett indatafält kan ändras i celler i listrutor, tabellboxar samt i uttrycksceller i tabelldiagram. Endast listboxar och tabellkolumner som innehåller indatafält är redigerbara. När man hovrar över en redigerbar cell syns en indataikon. Klicka på ikonen för att cellen ska hamna i redigeringsläge för indata. Man kan använda piltangenterna upp/ned för att flytta sig mellan celler medan redigeringsläget för indata bibehålls. Hela QlikView-dokumentet gör automatiskt uppdaterade beräkningar när nya värden anges.
En uttryckscell i ett tabelldiagram kan innehålla en speciell aggregeringsfunktion för indatafält och ändå vara öppen för indata. Ändringen fördelas då tillbaka till de underliggande fältvärdena baserat på fördefinierade algoritmer, t.ex. ”fördela lika” eller ”fördela proportionerligt”.
Det går att ange relativ förändring.
Följande syntax används (n är ett tal):
Syntax | Beskrivning |
---|---|
%+n | ökar aktuellt värde med n % |
%-n | minskar aktuellt värde med n % |
+=n | ökar aktuellt värde med n |
-=n | minskar aktuellt värde med n |
*=n | multiplicerar aktuellt värde med n |
/=n | dividerar aktuellt värde med n |
Exempel:
%+10 ökar aktuellt värde med 10 %.
+=56 ökar aktuellt värde med 56.
*=2 multiplicerar värdet med 2.
/=2 dividerar värdet med 2.
/=0 ingen förändring.
Det finns även Automation-API för att extrahera och ange värden programmatiskt.
Begränsningar
- Ett beräknat fält och nyckelfält kan inte användas som indatafält. Indatafältets funktionalitet stängs automatiskt av.
- Indatafält är inte tänkta att användas för stora datamängder, eftersom data inte sparas lika effektivt här som i vanliga fält.
- Nyckeln mellan indatafältet och det logiska fältet måste vara unik. Den får inte innehålla några dubblettvärden.
Exempel med indatafält
Det här exemplet visar hur ett indatafält läggs till i data och hur du kan uppdatera värdena interaktivt.
-
Ladda följande data i laddningsskriptet.
Inputfield Value;
Table1:
LOAD * INLINE
[
Key, Attribute, Value
Bob, Jan, 100
Bob, Feb, 200
Bob, Mar, 300
Kate, Jan, 400
Kate, Feb, 500
Kate, Mar, 600
];
- När du har laddat data skapar du en Tabellbox och lägger till de tre fälten.
-
Skapa ett Rak tabell-diagram och lägg till Key som dimension. Lägg till följande uttryck:
- Sum(Value)
- InputSum(Value)
Båda uttrycken visar samma värde men du kan bara uppdatera InputSum(Value) i den raka tabellen, inte Sum(Value).
Nu kan du ändra Value interaktivt i tabellboxen. De aggregerade värdena för uttrycken i den raka tabellen uppdateras enligt ändringarna.
Du kan även uppdatera värdena för InputSum(Value)-uttrycket i den raka tabellen. De underliggande värdena uppdateras i tabellboxen. Ändringen fördelas lika till alla värden, men du kan ändra fördelningsläget i funktionen InputSum().