Opzoektransformaties in toewijzingsgegevensstroom

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Gegevensstromen zijn beschikbaar in Azure Data Factory en Azure Synapse Pipelines. Dit artikel is van toepassing op toewijzingsgegevensstromen. Als u geen ervaring hebt met transformaties, raadpleegt u het inleidende artikel Gegevens transformeren met behulp van een toewijzingsgegevensstroom.

Gebruik de opzoektransformatie om te verwijzen naar gegevens uit een andere bron in een gegevensstroomstroom. Met de opzoektransformatie worden kolommen van overeenkomende gegevens toegevoegd aan uw brongegevens.

Een opzoektransformatie is vergelijkbaar met een left outer join. Alle rijen van de primaire stream bestaan in de uitvoerstroom met extra kolommen uit de opzoekstroom.

Configuratie

Screenshot shows the Lookup settings tab with the labels described in the following text.

Primaire stroom: De binnenkomende gegevensstroom. Deze stream is gelijk aan de linkerkant van een join.

Opzoekstroom: De gegevens die worden toegevoegd aan de primaire stroom. Welke gegevens worden toegevoegd, wordt bepaald door de opzoekvoorwaarden. Deze stream is gelijk aan de rechterkant van een join.

Overeenkomen met meerdere rijen: Als deze optie is ingeschakeld, retourneert een rij met meerdere overeenkomsten in de primaire stream meerdere rijen. Anders wordt slechts één rij geretourneerd op basis van de voorwaarde Overeenkomst op.

Overeenkomst op: Alleen zichtbaar als 'Meerdere rijen vergelijken' niet is geselecteerd. Kies of u wilt overeenkomen met een rij, de eerste overeenkomst of de laatste overeenkomst. Elke rij wordt aanbevolen omdat deze het snelst wordt uitgevoerd. Als de eerste rij of laatste rij is geselecteerd, moet u sorteervoorwaarden opgeven.

Opzoekvoorwaarden: Kies op welke kolommen u wilt overeenkomen. Als aan de gelijkheidsvoorwaarde wordt voldaan, worden de rijen beschouwd als een overeenkomst. Beweeg de muisaanwijzer en selecteer Berekende kolom om een waarde te extraheren met behulp van de expressietaal van de gegevensstroom.

Alle kolommen van beide streams worden opgenomen in de uitvoergegevens. Als u dubbele of ongewenste kolommen wilt verwijderen, voegt u een selectietransformatie toe na de opzoektransformatie. Kolommen kunnen ook worden verwijderd of een andere naam geven in een sinktransformatie.

Niet-equi joins

Als u een voorwaardelijke operator wilt gebruiken, zoals niet gelijk is aan (!=) of groter dan (>) in de opzoekvoorwaarden, wijzigt u de vervolgkeuzelijst van de operator tussen de twee kolommen. Voor niet-equi joins moet ten minste één van de twee streams worden uitgezonden met vaste uitzending op het tabblad Optimaliseren .

Non-equi lookup

Overeenkomende rijen analyseren

Na de opzoektransformatie kan de functie isMatch() worden gebruikt om te zien of de opzoekactie overeenkomt met afzonderlijke rijen.

Lookup pattern

Een voorbeeld van dit patroon is het gebruik van de voorwaardelijke splitstransformatie om de isMatch() functie te splitsen. In het bovenstaande voorbeeld gaan overeenkomende rijen door de bovenste stroom en stromen niet-overeenkomende rijen door de NoMatch stroom.

Opzoekvoorwaarden testen

Wanneer u de opzoektransformatie test met een voorbeeld van gegevens in de foutopsporingsmodus, gebruikt u een kleine set bekende gegevens. Wanneer u rijen uit een grote gegevensset steekt, kunt u niet voorspellen welke rijen en sleutels worden gelezen om te testen. Het resultaat is niet-deterministisch, wat betekent dat uw joinvoorwaarden mogelijk geen overeenkomsten retourneren.

Optimalisatie van broadcasts

Broadcast Join

Als een of beide gegevensstromen in het geheugen van het werkknooppunt passen, kunt u de prestaties optimaliseren door Broadcasting in te schakelen in joins, opzoekacties en bestaande transformaties. Standaard bepaalt de spark-engine automatisch of er al dan niet één zijde moet worden uitgezonden. Als u handmatig wilt kiezen welke kant u wilt uitzenden, selecteert u Vast.

Het is niet raadzaam om uitzending uit te schakelen via de optie Uit , tenzij uw joins time-outfouten ondervinden.

In de cache opgeslagen zoekopdrachten

Als u meerdere kleinere zoekacties uitvoert op dezelfde bron, is een sink in de cache en opzoeken mogelijk een beter gebruiksvoorbeeld dan de opzoektransformatie. Veelvoorkomende voorbeelden waarbij een cache-sink beter een maximumwaarde opzoekt in een gegevensarchief en overeenkomende foutcodes aan een database met foutberichten. Meer informatie over cache-sinks en opzoekacties in de cache.

Script voor gegevensstroom

Syntax

<leftStream>, <rightStream>
    lookup(
        <lookupConditionExpression>,
        multiple: { true | false },
        pickup: { 'first' | 'last' | 'any' },  ## Only required if false is selected for multiple
        { desc | asc }( <sortColumn>, { true | false }), ## Only required if 'first' or 'last' is selected. true/false determines whether to put nulls first
        broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
    ) ~> <lookupTransformationName>

Voorbeeld

Screenshot shows the Lookup settings tab for the following code.

Het gegevensstroomscript voor de bovenstaande opzoekconfiguratie bevindt zich in het onderstaande codefragment.

SQLProducts, DimProd lookup(ProductID == ProductKey,
    multiple: false,
    pickup: 'first',
    asc(ProductKey, true),
    broadcast: 'auto')~> LookupKeys

Volgende stappen