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 met behulp van generatieve AI een query laten genereren door middel van een tekstprompt. 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:
-
Selecteer in Transformeren de gegevensverzamelingen die moeten worden opgenomen in de query en klik op SQL-transformatie toevoegen.
SQL-transformatie toevoegen wordt weergegeven waar u de instellingen voor de transformatie kunt opgeven.
-
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.
-
-
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. -
-
Klik op Toevoegen als u klaar bent om de SQL-transformatie te maken.
SQL-transformatie bewerken wordt weergegeven.
-
Typ de query om de op SQL gebaseerde tabel te retourneren in SELECT-query.
De query kan alleen lezen van de brongegevensverzamelingen die u hebt geselecteerd, maar u kunt met behulp van Toevoegen meer brongegevensverzamelingen toevoegen.
U kunt selecteren vanuit de Gegevensverzameling en Kolommen.
U kunt ook 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.
-
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.
-
Klik op Parameters extraheren om de parameters in de SELECT-query te parseren.
De parameters moeten zijn toegewezen aan de bron- of doelobjecten. 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. -
-
Klik op Tabel beschrijven om een voorbeeld te bekijken van de metagegevens van de query-uitvoer.
U kunt de resultaten ook controleren met behulp van een sample van de gegevens.
-
Zorg dat de tabel een primaire sleutel bevat.
U kunt ook instellingen voor metagegevens bewerken.
-
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.
-
-
Wanneer u tevreden bent met de resultaten van de query, klikt u op OK. De gegevensverzameling wordt nu toegevoegd aan de lijst met doelen en u kunt er een voorbeeld van bekijken.
Voorbeeld van gegevens bekijken
U kunt de resultaten controleren met behulp van een sample van de gegevens.
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.
Om een voorbeeld van resultaten te bekijken:
-
Klik op Gegevens weergeven.
Resultaten worden weergegeven op basis van een sample van de gegevens. U kunt met Aantal rijen instellen hoeveel gegevensrijen in het voorbeeld worden opgenomen.
U kunt de voorbeeldgegevens op twee manieren filteren:
-
Gebruik om te filteren welke voorbeeldgegevens worden opgehaald.
Als u het filter ${OrderYear}>2023 gebruikt en Aantal rijen is ingesteld op 10, krijgt u een voorbeeld met 10 orders van 2024.
-
U kunt de voorbeeldgegevens sorteren op een specifieke kolom.
Dit is alleen van invloed op de bestaande voorbeeldgegevens. Als u hebt gebruikt om alleen orders van 2024 op te nemen en u stelt de kolomfilter in om orders van 2022 te tonen, dan krijgt u een leeg resultaat.
U kunt de gegevensample sorteren op een specifieke kolom. Het sorteren is allleen van invloed op de bestaande voorbeeldgegevens. Als u 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.
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:
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:
Dit is de volledige query, waarbij de filtermacro wordt gebruikt en met de tabelnamen vervangen met de notatie ${TABLE}:
Dit resulteert in een initiële ladingsquery:
En een incrementele ladingsquery:
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.
Dit is de basisquery:
Dit is het filter dat moet worden toegepast tijdens de incrementele uitvoering. “ORDERS_DERIVED” is de naam van de doelgegevensset.
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:
Dit resulteert in een initiële ladingsquery:
En een incrementele ladingsquery:
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.