SQL-transformaties toevoegen | Qlik Cloud Help
Ga naar hoofdinhoud Ga naar aanvullende inhoud

SQL-transformaties toevoegen

U kunt op SQL gebaseerde tabellen opnemen in transformatietaken. Met een SQL-transformatie kunt u een SQL SELECT-query invoeren in een pijplijn om complexe of eenvoudige transformaties te definiëren. U kunt SQL assistant een query laten genereren op basis van een tekstprompt met behulp van generatieve AI. U kunt ook macro's gebruiken om de query aan te passen zodat deze wordt uitgevoerd als er een initiële laadbewerking of een incrementele laadbewerking wordt uitgevoerd.

U kunt SQL workbench gebruiken om gegevens te verkennen en alleen-lezen SQL te valideren voordat u SQL toevoegt aan een transformatie. Zie Gegevens verkennen met SQL Workbench voor meer informatie.

Zie Gegevens transformeren voor meer informatie over het maken van een transformatietaak.

Een SQL-transformatie toevoegen

Een SQL-transformatie toevoegen in een gegevenstaak Transform:

  1. Selecteer in Transform de gegevensverzamelingen die u in de query wilt opnemen en klik op Add SQL transformation.

    Stel de naam van de transformatie in bij Name. Zie Instellingen voor meer informatie over de andere instellingen.

    Klik op Add wanneer u klaar bent om de SQL-transformatie te maken.

    Edit SQL transformation wordt weergegeven.

  2. Schrijf de query om de op SQL gebaseerde tabel in het queryvenster te retourneren.

    Zie De SQL-query bewerken voor meer informatie.

  3. Klik op Run query.

    Hiermee worden metagegevens en een voorbeeld van de gegevens opgehaald.

  4. Controleer de parameters in Parameters.

    Zie Parameters voor meer informatie.

  5. Stel een primaire sleutel in bij Metadata.

    Zie Metagegevens voor meer informatie.

  6. Wanneer u tevreden bent met de resultaten van de query, klikt u op Save and close. De gegevensverzameling is nu toegevoegd aan de lijst met doelen en u kunt er een voorbeeld van bekijken.

De SQL-query bewerken

Typ de query om de op SQL gebaseerde tabel in het queryvenster te retourneren. De query kan alleen lezen uit de brongegevensverzamelingen die u hebt geselecteerd, maar u kunt meer brongegevensverzamelingen toevoegen met Add.

  • U kunt een instructie maken om een gegevensverzameling te laden vanuit Objects. Klik op meer en vervolgens op Add SELECT statement.

  • U kunt de naam van een gegevensverzameling naar het klembord kopiëren door op meer en vervolgens op Copy te klikken.

  • Klik op > om een gegevensverzameling of kolomnaam naar de editor te verplaatsen.

  • Klik op Zoeken om tekst in de editor te zoeken en te vervangen.

InformatieU kunt SQL assistant gebruiken om een query te genereren met behulp van generatieve AI. Zie Een SQL-transformatie generen door middel van een tekstprompt voor meer informatie. SQL assistant is niet beschikbaar in Qlik Cloud Government.

Als incrementeel laden wordt gebruikt, kunt u Macros gebruiken om de query aan te passen zodat deze wordt uitgevoerd als er een initiële laadbewerking of een incrementele laadbewerking wordt uitgevoerd.

Zie Macro's gebruiken om de query aan te passen aan het laadtype voor meer informatie.

Sneltoetsen

InformatieSneltoetsen worden uitgedrukt in de veronderstelling dat u in Windows werkt. Gebruik voor macOS Command in plaats van Ctrl.
  • Ctrl+F Zoeken en vervangen

  • Ctrl+/ De huidige regel als opmerking markeren/markering opheffen

  • Ctrl+Enter De query uitvoeren

  • Ctrl+Z Ongedaan maken

  • Ctrl+Y Opnieuw uitvoeren

Voorbeeld van resultaten bekijken

U kunt een voorbeeld van de resultaten bekijken met behulp van een steekproef van de gegevens in Results.

InformatieGegevensvoorbeeld moet zijn ingeschakeld op tenant-niveau in Beheer. U vindt de optie Viewing data in Gegevensintegratie in Settings, onder Feature control.

U moet de volgende rollen toegewezen hebben gekregen om een voorbeeld van gegevens te kunnen bekijken:

  • Can view data in de ruimte waar de verbinding zich bevindt.

  • Can view in de ruimte waar het project zich bevindt.

Resultaten met behulp van een steekproef van de gegevens worden weergegeven. U kunt instellen hoeveel gegevensrijen in de steekproef moeten worden opgenomen met Number of rows.

  • Klik op Last executed query om de laatste uitvoeringstijd en duur van de laatst uitgevoerde query te zien.

De resultaten filteren

U kunt de resultaten filteren op een of meer kolommen.

  • Klik op meer op de eerste kolom waarop u wilt filteren en vervolgens op Filter.

    Selecteer welke operator u wilt gebruiken en op welke waarde u wilt filteren.

    U kunt meer kolomfilters toevoegen door op Add filter te klikken.

Het filter is alleen van invloed op de bestaande voorbeeldgegevens.

De resultaten sorteren

U kunt de gegevenssteekproef sorteren op een specifieke kolom.

  • Klik op meer op de kolom waarop u wilt sorteren en vervolgens op Sort ascending of Sort descending.

Sorteren is alleen van invloed op de bestaande voorbeeldgegevens. Als u een filter hebt gebruikt om alleen bestellingen uit 2024 op te nemen en de sorteervolgorde omkeert, bevatten de voorbeeldgegevens nog steeds alleen bestellingen uit 2024.

Weergegeven kolommen beheren

U kunt selecteren welke kolommen in de resultaten moeten worden weergegeven. De selectie wordt niet opgeslagen wanneer u de transformatie opslaat.

  • Verberg een kolom door op meer op de kolom te klikken en vervolgens op Hide column.

  • Beheer de weergave van alle kolommen door op meer op een willekeurige kolom te klikken en vervolgens op Displayed columns.

Parameters

Klik op Parameters om de parameters in de SELECT-query te wijzigen. De parameters moeten worden toegewezen aan de bron- of doelobjecten.

Parameters worden automatisch toegewezen wanneer u:

  • Add SELECT statement gebruikt in Objects.

  • Op > klikt om een gegevensverzameling of kolomnaam naar de editor te verplaatsen.

  • Een parameternaam overeenkomt met een tabelnaam uit de tabellen in Objects.

InformatieAls u willekeurige parameternamen gebruikt, moet u de parameters handmatig toewijzen. Alleen parameternamen die overeenkomen met namen van gegevensverzamelingen worden automatisch toegewezen.

U kunt toewijzen aan

  • Geschiedenistype 2-structuren (_history)

  • Huidige structuren

  • Doelobjecten

    U kunt doelobjecten alleen toewijzen wanneer een parameter is gedefinieerd binnen een incrementele macro.

TipU kunt een parameter vervangen door een verwijzing om een query te krijgen die gemakkelijker te lezen is. Wijzig de waarde in Parameter en de verwijzing in SELECT query zal ook veranderen.

Metagegevens

U kunt de instellingen voor metagegevens bewerken in Metadata.

  • Stel primaire sleutels in in de kolom Key.

    U kunt suggesties krijgen voor geschikte primaire sleutels en de sleutels valideren door op Suggest and validate keys te klikken.

  • Stel in of de kolom nullable is in de kolom Nullable.

  • Selecteer een kolom en klik op Edit om de kolomnaam, sleutel, nullable en het gegevenstype in te stellen.

Sleutels suggereren en valideren

U kunt suggesties krijgen voor geschikte primaire sleutels en de sleutels valideren door op Suggest and validate keys te klikken. De volledige SQL-query moet ten minste één keer zijn uitgevoerd.

  • GenAI wordt gebruikt om sleutels te suggereren als u zich hebt aangemeld voor cross-regionale inferentie. Hierdoor kan Qlik Cloud inferentieverzoeken verzenden buiten uw tenant-regio. Zie Regio-overschrijdende inferentie inschakelen voor details en de meest recente informatie over locaties voor inferentieverwerking.

    InformatieQlik heeft geen controle over de gegenereerde uitvoer. Vanwege de aard van GenAI produceren antwoorden mogelijk geen SQL die aan uw vereisten voldoet zonder beoordeling of bewerking. De gegenereerde query wordt beschouwd als "Inhoud" onder de voorwaarden van de Qlik-klantovereenkomst.
    Opmerking over Qlik Cloud Government

    Door GenAI ondersteunde sleutelsuggestie is niet beschikbaar in Qlik Cloud Government.

    Als GenAI niet is ingeschakeld, worden sleutels programmatisch gesuggereerd op basis van de brontabelgegevens.

  • Validatie wordt altijd uitgevoerd zonder GenAI te gebruiken door een SQL-query uit te voeren om ervoor te zorgen dat er geen duplicaten of NULL-waarden zijn.

    InformatieValidatie is alleen beschikbaar wanneer de query gegevens heeft geretourneerd.
  • Suggest and validate keys

    Hiermee worden de query en brontabelsleutels beoordeeld en worden geldige primaire sleutels gesuggereerd. Deze bewerking kan enige tijd duren.

  • Validate keys

    Hiermee worden de bestaande primaire sleutels gevalideerd om ervoor te zorgen dat ze uniek en niet-NULL zijn. Deze bewerking kan enige tijd duren.

  • Suggest without validation

    Hiermee worden de query en brontabelsleutels beoordeeld en worden primaire sleutels gesuggereerd zonder validatie. Beoordeel en valideer de sleutels handmatig voordat u ze toepast.

De query uitvoeren

U kunt de query op elk moment tijdens de ontwikkeling uitvoeren door op Run query te klikken. De eerste keer dat u een query uitvoert, worden metagegevens opgehaald. Wanneer de query is uitgevoerd, kunt u naar Metadata gaan en een primaire sleutel instellen, wat vereist is om de transformatie te voltooien.

InformatieAls de editor meer dan één query bevat, kunt u een enkele query uitvoeren door de query te selecteren en op Run query te klikken.

Macro's gebruiken om de query aan te passen aan het laadtype

Als incrementeel laden wordt gebruikt, kunt u Macros gebruiken om de query aan te passen zodat deze wordt uitgevoerd als er een initiële laadbewerking of een incrementele laadbewerking wordt uitgevoerd.

Selecteer de macro en voeg de query toe binnen de respectievelijke clausule.

  • Q_RUN_INCREMENTAL voegt een clausule toe waarin u een query kunt plaatsen die alleen wordt uitgevoerd wanneer een incrementele laadbewerking wordt uitgevoerd.

  • Q_RUN_INITIAL_LOAD voegt een clausule toe waarin u een query kunt plaatsen die alleen wordt uitgevoerd wanneer een initiële laadbewerking wordt uitgevoerd.

U hoeft niet bij elke macro de volledige query op te geven. U kunt code aanpassen of toevoegen op basis van uw use case.

Use case: Incrementeel filter met behulp van datumbereik:

In deze use case moet een set bestellingsgegevens worden getransformeerd met aangepaste SQL. Omdat dit een grote gegevensverzameling is, wilt u incrementele filtering opnemen om ervoor te zorgen dat de incrementele laadbewerking alleen bestellingen van de afgelopen 12 uur in overweging neemt.

Dit is de basisquery:

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

Dit is het filter dat moet worden toegepast tijdens de incrementele uitvoering, waarbij u alleen bestellingen in overweging neemt die de afgelopen 12 uur zijn toegevoegd:

WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP())
TipBij het implementeren van een op SQL gebaseerde tabel wordt aanbevolen om de tabelnamen te vervangen door de notatie ${TABLE}. Dit voorkomt het hardcoderen van database- en schemanamen die van omgeving tot omgeving kunnen veranderen, bijvoorbeeld bij de overgang van ontwikkeling naar productie.

Dit is de volledige query, met behulp van de filtermacro en waarbij tabelnamen zijn vervangen door de notatie ${TABLE}:

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}}

Dit resulteert in een initiële laadquery:

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

En een incrementele laadquery:

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() )

Use case: Incrementeel filter met behulp van gegevens in het doel:

In deze use case moet een set bestellingsgegevens worden getransformeerd met aangepaste SQL. Omdat bestellingen een grote gegevensverzameling zijn, wilt u incrementele filtering opnemen om ervoor te zorgen dat de incrementele laadbewerking alleen records met bestelgegevens in overweging neemt die nieuwer zijn dan de gegevens in de doeltabel. U wilt ook markeren of een rij is verwerkt door de initiële laadbewerking of een incrementele laadbewerking.

InformatieZoals u in dit voorbeeld kunt zien, kunnen de macro's worden gebruikt om elk deel van de query aan te passen voor initiële laadbewerking of incrementele laadbewerking.

Dit is de basisquery:

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

Dit is het filter dat moet worden toegepast tijdens de incrementele uitvoering. “ORDERS_DERIVED” is de naam van de doelgegevensverzameling.

WHERE OD.UPDATE_DTM > = (SELECT MAX(LAST_UPDATE_DTM) FROM “mydb”.”myTrasformTask”.”ORDERS_DERIVED” )
TipIncrementeel laden kan ook een ${TABLE}-notatie toewijzen aan de doelobjecten die door de transformatietaak zijn gemaakt.

Dit is de volledige query, met behulp van de filtermacro en waarbij tabelnamen zijn vervangen door de notatie ${TABLE}. LOADED_BY is ingesteld op INIT als de laadbewerking initieel is, en INCR als de laadbewerking incrementeel is:

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}}

Dit resulteert in een initiële laadquery:

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

En een incrementele laadquery:

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} )

Instellingen

Klik op Instellingen om de instellingen van de SQL-transformatie te bewerken.

  • Voer een naam in voor de doelgegevensverzameling in Naam.

    U kunt ook een langere beschrijving toevoegen in Beschrijving.

  • Selecteer in Materialisatie of de getransformeerde uitvoer gematerialiseerd moet worden of niet. U kunt ervoor kiezen de instelling over te nemen vanuit de gegevenstaakinstellingen.

    • Met Aan worden tabellen gemaakt en wordt de bijbehorende ELT-verwerking afgehandeld.

    • Met Uit worden weergaven gemaakt die transformaties ad-hoc uitvoeren.

  • Selecteer in Historische gegevensopslag (Type 2) of u historische gegevens wilt bewaren. U kunt ervoor kiezen de instelling over te nemen vanuit de gegevenstaakinstellingen. Deze instelling vereist dat Materialisatie aan staat.

  • Met Incrementele lading kunt u de query aanpassen voor een incrementele gegevenslading door filters of andere voorwaarden toe te passen om de set gegevens die wordt verwerkt te verkleinen met behulp van macro's. Incrementele lading is alleen beschikbaar als de gegevens worden gematerialiseerd als tabellen.

    • Wanneer Incrementele lading is ingesteld op Aan

      De eerste uitvoering van de taak voert een initiële lading uit, waarbij alle resultaten van de query in uw doeltabel worden ingevoerd. Opvolgende uitvoeringen voeren incrementele ladingen uit waarbij filters of specifieke voorwaarden worden gebruikt die u hebt gedefinieerd voor incrementele verwerking. Tijdens de incrementele lading verwerkt de taak alleen gegevens als een update of een invoeging, verwijderingen worden niet beheerd.

    • Wanneer Incrementele lading is ingesteld op Uit

      De eerste uitvoering van de taak voert een initiële lading uit, waarbij alle resultaten van de query in uw doeltabel worden ingevoerd. Opvolgende uitvoeringen verwerken alle resultaten van de query door deze te vergelijken met uw doeltabel, en verwerkingsrecords die nieuw, gewijzigd of verwijderd zijn.

    InformatieStel Incrementele lading in op Uit als de query alle records selecteert die in het doel moeten voorkomen. Records die niet geselecteerd zijn, worden in het doel verwijderd.
  • Best practice

    • Wanneer u een SQL-transformatie toevoegt, wordt er niet automatisch een primaire sleutel gedefinieerd. Voeg een sleutel toe aan de gegevensverzameling op het tabblad Dataset.

    • Maak kolomkoppen in de getransformeerde uitvoer niet handmatig aan.

    • Vermijd het gebruik van SELECT met *, omdat dit elke keer dat de query wordt uitgevoerd andere kolommen kan retourneren. Als er een wijziging in het schema is opgetreden, wijzigt u de query dienovereenkomstig en voert u Describe table opnieuw uit. Vervolgens kunt u kolommen bewerken en tabellen aanpassen.

    Was deze pagina nuttig?

    Als u problemen ervaart op deze pagina of de inhoud onjuist is – een tikfout, een ontbrekende stap of een technische fout – laat het ons weten!