Omvandla data
Du kan omvandla och ändra data med hjälp av många olika tekniker i Skriptredigeraren.
En av fördelarna med datamanipulering är att du kan välja att bara ladda en underuppsättning av data från en fil, t.ex. ett fåtal valda kolumner från en tabell, för att göra datahanteringen mer effektivt. Du kan också ladda data mer än en gång för att dela upp rådata i flera nya logiska tabeller. Du kan ladda data från fler än en källa och slå ihop den till en tabell i Qlik Sense.
I det här avsnittet kommer du att utföra grundläggande dataomvandling med en Resident-load och sedan en Preceding-load.
Resident LOAD
Du kan använda Resident-källpredikatet i en LOAD-sats för att ladda data från en tidigare inläst tabell. Detta är användbart när du vill utföra beräkningar för data som har lästs in med en SELECT-sats där du inte har möjlighet att använda Qlik Sense-funktioner, exempelvis datum eller numerisk värdehantering.
I det här exemplet kommer du att skapa en ny tabell som heter Sales_Buckets och sedan ladda data från Table1 med hjälp av resident-load. I tabellen Sales_Buckets kommer du att skapa en variabel som heter quantity_threshold och sedan använda en Where-sats för att endast ladda data som uppfyller tröskelvärdet.
- Öppna Skriptredigeraren i appen Scripting Tutorial.
- klicka på fliken Sales.
- Lägg till följande i slutet av skriptet:
- Klicka på Ladda data.
- Öppna datamodellvyn. Du kan se att du har skapat en ny tabell som heter Sales_Buckets med data inlästa enligt de fält som du har angett och den tröskel som du har ställt in.
- Lägg till data till en tabell i appen. Lägg till Item och Customer som dimensioner. Lägg till High-Quantity som ett mått som aggregerats på Count och sedan igen på Sum. Lägg sedan till en ny kolumn som ett mått med följande formel:
- Nu när detta exempel är klart kommenterar du ut skriptet för variabeln quantity_threshold och tabellen Sales_Buckets.
SET quantity_threshold = 12000;
Sales_Buckets:
LOAD
"Sales Qty" as "High_Quantity",
"Item Description" as "Item",
"Customer Number" as "Customer"
Resident Table1
Where ("Sales Qty" > $(quantity_threshold));
Ditt skript bör se ut så här:
= Sum(High_Quantity) / Count(High_Quantity)
Tabellen visar till exempel att Customer 10025737 har gjort 4 stora beställningar av High Top Dried Mushrooms, med en genomsnittlig kvantitet på 14 800. För att sortera på data i fälten stänger du redigeringsläget genom att klicka på Klar.
Skriptets slut bör nu se ut enligt följande:
Föregående LOAD
En föregående laddning gör det möjligt att utföra omvandlingar och använda filter så att du kan ladda data i ett svep. I grunden är det en LOAD-sats som laddas från LOAD- eller SELECT-satsen nedan, utan att en källkvalificerare som From eller Resident anges, som man normalt skulle göra. Du kan stapla valfritt antal LOAD-satser på det här sättet. Satsen nederst kommer att utvärderas först, och sedan satsen ovan, och så vidare tills det översta satsen har utvärderats.
Som nämnts tidigare i den här introduktionskursen kan du ladda data till Qlik Sense med hjälp av LOAD- och SELECT-satser. Varje sådan sats genererar en intern tabell. LOAD används för att ladda data från filer eller från en inline-tabell, medan SELECT används för att ladda data från databaser. Du har använt data från filer i den här introduktionskursen. I det här exemplet kommer du att använda en inline-tabell. Det är dock värt att notera att en föregående load kan användas över en SELECT-sats för att ändra på dina data. Grunderna är desamma, som du ser här med LOAD.
Det här exemplet är inte relaterade till de data som laddas i den här introduktionskursen. Det används bara för att visa hur en föregående load kan se ut. Du kommer att skapa en inline-tabell i Skriptredigeraren som heter Transaktioner. Datumtolkningen görs i den föregående LOAD, där ett nytt fält som heter transaction_date kommer att skapas. Fältet skapas från fältet sale_date.
- Skapa en ny app och kalla den för ReformatDate.
- Öppna Skriptredigeraren och skapa sedan en ny flik som heter TransactionData.
- Lägg till följande skript:
- Klicka på Ladda data.
- Öppna datamodellvyn. Markera och expandera tabellen Transaktioner. Du kan se att alla fälten har laddats enligt vad som specificerats av * i den föregående load-satsen. Ett nytt fält som heter transaction_date skapades. Fältet har det omformaterade datumet.
Transactions:
Load *,
Date(Date#(sale_date,'YYYYMMDD'),'DD/MM/YYYY') as transaction_date;
Load * Inline [ transaction_id, sale_date, transaction_amount, transaction_quantity, customer_id, size, color_code
3750, 20180830, 23.56, 2, 2038593, L, Red
3751, 20180907, 556.31, 6, 203521, m, orange
3752, 20180916, 5.75, 1, 5646471, S, blue
3753, 20180922, 125.00, 7, 3036491, l, Black
3754, 20180922, 484.21, 13, 049681, xs, Red
3756, 20180922, 59.18, 2, 2038593, M, Blue
3757, 20180923, 177.42, 21, 203521, XL, Black ];
Ditt skript bör se ut så här: