Gå till huvudinnehåll Gå till ytterligare innehåll

Lägga till SQL-transformeringar

Du kan inkludera SQL-baserade tabeller i omvandlingsuppgifter. En SQL-transformering gör det möjligt för dig att ställa en SQL SELECT-fråga i en pipeline för att definiera komplexa eller enkla transformeringar. Du kan använda SQL-assistenten för att generera en fråga med hjälp av generativ AI. Du kan också använda makron för att anpassa frågan att köras om en initial laddning eller inkrementell laddning utförs.

Mer information om att skapa en omvandlingsuppgift finns i Omvandla data.

Lägga till en SQL-omvandling

För att lägga till en SQL-omvandling i en Omvandlingsdatauppgift:

  1. I Omvandla väljer du de datauppsättningar som ska ingå i frågan och klickar sedan på Lägg till SQL-omvandling.

    Ange namnet på transformeringen i Name. Mer information om de andra inställningarna finns i Inställningar.

    Klicka på Lägg till när du är redo att skapa SQL-omvandlingen.

    Redigera SQL-omvandling visas.

  2. Skriv frågan för att returnera den SQL-baserade tabellen i frågerutan.

    Mer information finns i Redigera SQL-frågan.

  3. Klicka på Run query.

    Detta hämtar metadata och en förhandsgranskning av data.

  4. Granska parametrarna i Parameters.

    Mer information finns i Parametrar.

  5. Ange en primärnyckel i Metadata.

    Mer information finns i Metadata.

  6. När du är nöjd med resultatet av frågan klickar du på Save and close. Datauppsättningen läggs nu till i listan över mål och du kan förhandsgranska den.

Redigera SQL-frågan

Skriv frågan för att returnera den SQL-baserade tabellen i frågerutan. Frågan kan bara läsa från de källdatauppsättningar du har valt, men du kan lägga till fler källdatauppsättningar med Lägg till.

  • Du kan skapa en sats för att läsa in en datauppsättning från Objekt. Klicka på mer och sedan Generera SELECT-sats i redigeraren.

  • Du kan kopiera namnet på en datauppsättning till Urklipp genom att klicka på mer och sedan Kopiera.

  • Klicka på > för att flytta en datauppsättning eller ett kolumnnamn till redigeraren.

  • Klicka på Söka för att söka efter och ersätta text i redigeraren.

Anteckning om informationDu kan använda SQL-assistenten för att generera en fråga med generativ AI. Mer information finns i Generera en SQL-transformering från en textprompt. SQL-assistenten är inte tillgänglig i Qlik Cloud Government.

Om du använder inkrementell laddning kan du använda makron för att anpassa frågan att köras om en initial laddning eller inkrementell laddning utförs.

Mer information finns i Använda makron för att anpassa frågan efter laddningstyp.

Snabbkommandon för tangentbord

Anteckning om informationAnvisningarna om snabbkommandon för tangentbord utgår från att du arbetar i Windows. Använd Kommando istället för Ctrl för macOS.
  • Ctrl+F Sök och ersätt

  • Ctrl+/ Kommentera/avkommentera den aktuella raden

  • Ctrl+Enter Kör frågan

  • Ctrl+Z Ångra

  • Ctrl+Y Gör om

Förhandsgranskar resultat

Du kan förhandsgranska resultaten med ett urval av data i Resultat.

Anteckning om informationFörhandsgranskning av data måste vara aktiverad på klientorganisationsnivå i Administration. Du kan hitta alternativet Visa data i Dataintegrering i Inställningar under Funktionskontroll.

Du måste ha tilldelats följande roller för att kunna förhandsgranska data:

  • Kan visa data i det utrymme där kopplingen finns.

  • Kan visa i det utrymme där projektet finns.

Resultat från användning av ett urval av data visas. Du kan ställa in hur många datarader som ska tas med i exemplet med Antal rader.

  • Klicka på Senast körda fråga för att se den senast körda tidpunkten och varaktigheten för den senast körda frågan.

Filtrera resultat

Du kan filtrera resultaten efter en eller flera kolumner.

  • Klicka på mer på den första kolumnen att filtrera efter och sedan Filter.

    Välj vilken operator som ska användas och vilket värde som ska filtreras efter.

    Du kan lägga till fler kolumnfilter genom att klicka på Add filter.

Filtret kommer bara att påverka de befintliga exempeldata.

Sortera resultaten

Du kan också sortera dataurvalet via en specifik kolumn.

  • Klicka på mer i kolumnen att sortera efter och sedan Sortera stigande eller Sortera fallande.

Sorteringen kommer bara att påverka befintliga exempeldata. Om du använde ett filter för att bara inkludera ordrar från 2024 och inverterar sorteringsordningen, kommer exempeldata fortfarande bara innehålla ordrar från 2024.

Hantera visade kolumner

Du kan välja vilka kolumner som ska visas i resultaten. Urvalet sparas inte när du sparar transformeringen.

  • Dölj en kolumn genom att klicka på mer på kolumnen och sedan på Dölj kolumn.

  • Hantera visning av alla kolumner genom att klicka på mer på valfri kolumn och sedan på Visade kolumner.

Parametrar

Klicka på Parameters för att ändra parametrarna i SELECT-frågan. Parametern ska mappas till käll- eller målobjekt.

Parametrar mappas automatiskt när du:

  • Använd Generera SELECT-sats i redigeraren i Objekt.

  • Klicka på > för att flytta ett dataset eller kolumnnamn till redigeraren.

  • Ett parameternamn matchar ett tabellnamn från tabellerna i Objekt.

Anteckning om informationOm du använder godtyckliga parameternamn måste du mappa parametrarna manuellt. Endast parameternamn som matchar datasetnamn kommer att mappas automatiskt.

Du kan mappa till

  • Historik typ 2-strukturer (_history)

  • Aktuella strukturer

  • Målobjekt

    Du kan bara mappa målobjekt när en parameter har definierats inuti ett inkrementellt makro.

Anteckning om tipsDu kan ersätta en parameter med en referens för att få en fråga som är lättare att läsa. Om du ändrar värdet i Parameter ändras även referensen i SELECT-frågan.

Metadata

Du kan redigera inställningarna för metadata i Metadata.

  • Ställ in primära nycklar i kolumnen Nycklar.

  • Ställ in om kolumnen är nullbar i kolumnen Nullbar.

  • Välj en kolumn och klicka på Redigera för att ställa in kolumnens namn, nyckel, nullbarhet och datatyp.

Köra frågan

Du kan köra frågan när som helst under utvecklingen genom att klicka på Kör fråga. Första gången du kör en fråga hämtas metadata. När frågan har körts kan du gå till Metadata och ange en primärnyckel, vilket krävs för att transformeringen ska slutföras.

Anteckning om informationOm redigeraren innehåller mer än en fråga kan du köra en enskild fråga genom att markera frågan och klicka på Kör fråga.

Använda makron för att anpassa frågan efter laddningstyp

Om du använder inkrementell laddning kan du använda makron för att anpassa frågan att köras om en initial laddning eller inkrementell laddning utförs.

Välj makrot och lägg till frågan i motsvarande sats.

  • Q_RUN_INCREMENTAL lägger till en sats där du kan placera en fråga som enbart körs då inkrementell laddning utförs.

  • Q_RUN_INITIAL_LOAD lägger till en sats där du kan placera en fråga som enbart körs då initial laddning utförs.

Du behöver inte ange den fullständiga frågan för varje makro. Du kan justera eller lägga till kod baserat på ditt användningsfall.

Användningsfall: inkrementellt filter med datumintervall:

I detta användningsfall behöver en uppsättning ordnade data omvandlas med anpassad SQL. Eftersom detta är en stor datauppsättning vill du inkludera inkrementell filtrering för att säkerställa att den inkrementella laddningen enbart beaktar de senaste 12 timmarna.

Detta är en basfråga:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

Detta filter används i den inkrementella körningen där du enbart beaktar order som lagts till under senaste 12 timmarna:

WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP())
Anteckning om tipsVid implementering av en SQL-baserad tabell rekommenderar vi att ersätta tabellnamnen med en $(TABLE)-notation. Det förhindrar hårdkodade databas- och schema-namn som kan skifta från miljö till miljö, exempelvis vid flytt från utveckling till produktion.

Detta är den fullständiga frågan som använder filtreringsmakro och har tabellnamnen ersatta med $(TABLE)-notation:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() ) {{/QLIK_FUNC_IF}}

Det resulterar i en initial laddningsfråga:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

Och en inkrementell laddningsfråga:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() )

Användningsfall: inkrementellt filter som använder data i målet:

I detta användningsfall behöver en uppsättning ordnade data omvandlas med anpassad SQL. Eftersom dessa order är en stor datauppsättning vill du inkludera inkrementell filtrering för att säkerställa att den inkrementella laddningen enbart beaktar orderinformation som är nyare än data i måltabellen. Du vill även markera om en rad har bearbetats av den initiala laddningen eller en inkrementell laddning.

Anteckning om informationSom visas i exemplet kan makron användas för att justera alla delar av frågan för initial laddning eller inkrementell laddning.

Detta är en basfråga:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

Detta filter används under inkrementell körning. “ORDERS_DERIVED” är namnet på måldatauppsättningen.

WHERE OD.UPDATE_DTM > = (SELECT MAX(LAST_UPDATE_DTM) FROM “mydb”.”myTrasformTask”.”ORDERS_DERIVED” )
Anteckning om tipsInkrementell laddning kan också mappa en $(TABLE)-notation till målobjekt som skapas av omvandlingsuppgiften.

Detta är den fullständiga frågan som använder filtreringsmakro och har tabellnamnen ersatta med $(TABLE-notation. LOADED_BY är angivet som INIT om laddningen är initial och INCR om laddningen är inkrementell:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, {{#QLIK_FUNC_IF Q_RUN_INITIAL_LOAD}} ‘INIT’ as LOADED_BY {{/QLIK_FUNC_IF}} {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} ‘INCR’ as LOADED_BY {{/QLIK_FUNC_IF}} FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} ) {{/QLIK_FUNC_IF}}

Det resulterar i en initial laddningsfråga:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INIT’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

Och en inkrementell laddningsfråga:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INCR’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} )

Inställningar

Klicka på Inställningar för att redigera inställningarna för SQL-transformeringen.

  • Ange ett namn för måldatauppsättningen i Namn.

    Du kan även lägga till en längre beskrivning i Beskrivning.

  • I Materialisering väljer du om omvandlad utdata ska materialiseras eller inte. Du kan välja att ärva inställningen från inställningarna för datauppgiften.

    • skapar tabeller och hantera tillhörande ELT-bearbetning.

    • Av skapar vyer som utför omvandlingar direkt.

  • I Historisk datalagring (typ 2) väljer du om du vill spara historiska data. Du kan välja att ärva inställningen från inställningarna för datauppgiften. Den här inställningen kräver att Materialisering är aktiverat.

  • Inkrementella laddningar gör att du kan justera frågan för en inkrementell dataladdning genom att använda filter eller andra villkor för att minska datauppsättningen som bearbetas med makron. Inkrementell laddning är enbart tillgänglig om data är materialiserat som tabeller.

    • När Inkrementell laddning är

      Uppgiftens första körning utför initial laddning och infogar alla resultat av frågan i din måltabell. Efterföljande körningar utför inkrementella laddningar med filter eller specifika villkor som du har definierat för inkrementell bearbetning. Under inkrementell laddning bearbetar uppgiften enbart data som en uppdatering eller infogning. Raderingar hanteras inte.

    • När Inkrementell laddning är Av

      Uppgiftens första körning utför initial laddning och infogar alla resultat av frågan i din måltabell. Efterföljande körningar bearbetar alla resultat av frågan genom att jämföra med din måltabell och bearbeta poster som är nya, ändrade eller raderade.

    Anteckning om informationOm frågan ska välja alla poster som ska finnas i målet inaktiverar du Inkrementell laddning. Poster som inte har valts kommer att raderas i målet.
  • Metodtips

    • När du lägger till en SQL-omvandling definieras inte en primärnyckel automatiskt. Lägg till en nyckel till datauppsättningen på fliken Dataset.

    • Skapa inte kolumnrubriker i omvandlade utdata manuellt.

    • Använd inte SELECT med * eftersom det kan returnera olika kolumner varje gång frågan körs. Om ett schema har ändrats ska även frågan ändras på motsvarande sätt och Beskriv tabell göras igen. Sedan kan du redigera kolumner och justera tabeller.

    Var den här sidan till hjälp för dig?

    Om du stöter på några problem med den här sidan eller innehållet på den, t.ex. ett stavfel, ett saknat steg eller ett tekniskt fel – meddela oss!