Ga naar hoofdinhoud Ga naar aanvullende inhoud

SQL-transformaties toevoegen

U kunt SQL-gebaseerde tabellen opnemen in transformatietaken. Met een SQL-transformatie kunt u een SQL SELECT query invoeren in een gegevenspijplijn om complexe of simpele transformaties te definiëren. U kunt de SQL-assistent een query laten genereren vanuit een tekstprompt met behulp van generatieve AI. U kunt ook macro's gebruiken om de query aan te passen om uitgevoerd te worden als een initiële lading of een incrementele lading wordt uitgevoerd.

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

Een SQL-transformatie toevoegen

Ga als volgt te werk om een SQL-tranformatie toe te voegen in een transformatiegegevenstaak:

  1. Selecteer in Transformeren de gegevensverzamelingen die moeten worden opgenomen in de query en klik op SQL-transformatie toevoegen.

    Stel de naam van de transformatie in in Name. Ga voor meer informatie over de andere instellingen naar Instellingen.

    Klik op Toevoegen als u klaar bent om de SQL-transformatie te maken.

    SQL-transformatie bewerken wordt weergegeven.

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

    Ga voor meer informatie naar De SQL-query bewerken.

  3. Klik op Run query.

    Hiermee worden metagegevens en een voorbeeld van de gegevens opgehaald.

  4. Controleer de parameters in Parameters.

    Ga voor meer informatie naar Parameters.

  5. Stel een primaire sleutel in Metadata.

    Ga voor meer informatie naar Metagegevens.

  6. Wanneer u tevreden bent met de resultaten van de query, klikt u op Opslaan en sluiten. De gegevensverzameling wordt 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 te retourneren in het queryvenster. De query kan alleen lezen van de brongegevensverzamelingen die u hebt geselecteerd, maar u kunt met behulp van Toevoegen meer brongegevensverzamelingen toevoegen.

  • U kunt een instructie maken om een dataset te laden vanuit Objecten. Klik op meer en vervolgens op Select-instructie genereren in editor.

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

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

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

InformatieU kunt de SQL-assistent gebruiken om met behulp van generatieve AI een query te genereren. Ga voor meer informatie naar Een SQL-transformatie generen door middel van een tekstprompt. SQL-assistent is nu beschikbaar in Qlik Cloud Government.

Als incrementele lading wordt gebruikt, kunt u Macro's gebruiken om de query aan te passen om uitgevoerd te worden als een initiële lading of een incrementele lading wordt uitgevoerd.

Ga voor meer informatie naar Macro's gebruiken om de query aan te passen aan ladingstype.

Sneltoetsen

InformatieBij de beschrijving van sneltoetsen wordt ervan uitgegaan dat u in Windows werkt. Voor macOS gebruikt u Command in plaats van Ctrl.
  • Ctrl+F Zoeken en vervangen

  • Ctrl+/ De huidige regel van commentaar voorzien/commentaar verwijderen

  • Ctrl+Enter De query uitvoeren

  • Ctrl+Z Ongedaan maken

  • Ctrl+Y Opnieuw uitvoeren

Resultaten bekijken

U kunt de resultaten controleren met behulp van een sample van de gegevens in Resultaten.

InformatieVoorbeeld van gegevens moet zijn ingeschakeld op tenantniveau in Beheer. U vindt de optie Gegevens weergeven in Gegevensintegratie in Instellingen onder Kenmerkbeheer.

De volgende rollen moeten aan u zijn toegewezen om gegevens te kunnen controleren:

  • Kan gegevens bekijken in de ruimte waarin de verbinding zich bevindt.

  • Kan bekijken in de ruimte waarin het project zich bevindt.

Resultaten worden weergegeven op basis van een sample van de gegevens. U kunt met Aantal rijen instellen hoeveel gegevensrijen in het voorbeeld worden opgenomen.

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

Resultaten filteren

U kunt de resultaten filteren op een of meer kolommen.

  • Klik op meer in de eerste kolom om te filteren en klik vervolgens op Filter.

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

    U kunt meer kolomfilters toevoegen door op Filter toevoegen te klikken.

Het filter is alleen van invloed op de bestaande voorbeeldgegevens.

Resultaten sorteren

U kunt de gegevensample sorteren op een specifieke kolom.

  • Klik meer op de kolom waarop u wilt sorteren en vervolgens Oplopend sorteren of Aflopend sorteren.

Het sorteren is allleen van invloed op de bestaande voorbeeldgegevens. Als u een filter hebt gebruikt om alleen orders van 2024 op te nemen en u keert de sorteervolgorde om, dan bevatten de voorbeeldgegevens nog steeds alleen orders van 2024.

Beheer van weergegeven kolommen

U kunt selecteren welke kolommen u wilt weergeven in de resultaten. De selectie wordt niet opgeslagen wanneer u de transformatie opslaat.

  • Verberg een kolom door te klikken op meer op de kolom en vervolgens op Kolom verbergen.

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

Parameters

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

Parameters worden automatisch toegewezen wanneer u:

  • Gebruik Select-instructie genereren in editor in Objecten.

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

  • Een parameternaam komt overeen met een tabelnaam van de tabellen in Objecten.

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

U kunt toewijzen aan

  • Geschiedenis type 2-structuren (_history)

  • Huidige structuren

  • Doelobjecten

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

TipU kunt een parameter vervangen door een referentie om een query te krijgen die eenvoudiger te lezen is. Wijzig de waarde in Parameter en de referentie in SELECT-query wordt ook gewijzigd.

Metagegevens

U kunt de instellingen voor metagegevens bewerken in Metadata.

  • Stel primaire sleutels in de kolom Sleutel in.

  • Stel in de kolom Null-waarde toegestaan in of een null-waarde is toegestaan voor de kolom.

  • Selecteer een kolom en klik op Bewerken om een kolomnaam, sleutel, null-waarde toestaan en gegevenstype in te stellen.

De query uitvoeren

U kunt de query op elk moment tijdens de ontwikkeling uitvoeren door op Query uitvoeren 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 één query uitvoeren door de query te selecteren en te klikken op Query uitvoeren.

Macro's gebruiken om de query aan te passen aan ladingstype

Als incrementele lading wordt gebruikt, kunt u Macro's gebruiken om de query aan te passen om uitgevoerd te worden als een initiële lading of een incrementele lading wordt uitgevoerd.

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

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

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

U hoeft niet de volledige query te specificeren voor elke macro. U kunt code aanpassen of toevoegen op basis van uw gebruiksscenario.

Usecase: incrementeel filter met behulp van datumbereik:

In dit gebruiksscenario moet een set bestellingsgegevens worden getransformeerd met aangepaste SQL. Omdat dit de grootste gegevensset is, moet u incrementeel filteren opnemen om ervoor te zorgen dat de incrementele lading alleen bestellingen van de afgelopen 12 uur in acht 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 rekening houdt met bestellingen die de afgelopen 12 uur zijn toegevoegd:

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

Dit is de volledige query, waarbij de filtermacro wordt gebruikt en met de tabelnamen vervangen met 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 ladingsquery:

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 ladingsquery:

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

Usecase: incrementeel filter met gebruik van gegevens in het doel:

In dit gebruiksscenario moet een set bestellingsgegevens worden getransformeerd met aangepaste SQL. Omdat bestellingen een grote gegevensset zijn, moet u incrementeel filteren opnemen om ervoor te zorgen dat de incrementele lading alleen rekening houdt met records voor bestellingsdetails die nieuwer zijn dan de gegevens in de doeltabel. U moet ook markeren of een rij is verwerkt door de initiële lading of een incrementele lading.

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

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 doelgegevensset.

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

Dit is de volledige query, waarbij de filtermacro wordt gebruikt en met tabelnamen vervangen met de notatie ${TABLE}. LOADED_BY is ingesteld op INIT als de lading initieel is en op INCR als de lading 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 ladingsquery:

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 ladingsquery:

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.
  • Aanbevolen procedure

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

    • Maak niet handmatig kolomkoppen aan in de getransformeerde uitvoer.

    • Vermijd het gebruik van SELECT met *, omdat hierdoor verschillende kolommen worden weergegeven elke keer nadat een query is uitgevoerd. Als het schema is gewijzigd, wijzig de query dan ook en voer Tabel omschrijven nogmaals uit. U kunt alle kolommen bewerken en tabellen wijzigen.

    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!