Bestaat transformatie in toewijzingsgegevensstroom

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

Gegevensstromen zijn beschikbaar in Zowel Azure Data Factory als 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.

De bestaande transformatie is een transformatie voor het filteren van rijen die controleert of uw gegevens zich in een andere bron of stroom bevinden. De uitvoerstroom bevat alle rijen in de linkerstroom die bestaan of die niet in de rechterstroom bestaan. De bestaanstransformatie is vergelijkbaar met SQL WHERE EXISTS en SQL WHERE NOT EXISTS.

Configuratie

  1. Kies welke gegevensstroom u controleert op bestaan in de vervolgkeuzelijst Rechtse stroom .
  2. Geef op of u op zoek bent naar de gegevens die al dan niet bestaan in de instelling Bestaan.
  3. Selecteer of u een aangepaste expressie wilt.
  4. Kies welke sleutelkolommen u wilt vergelijken als uw voorwaarden bestaan. Standaard zoekt de gegevensstroom naar gelijkheid tussen één kolom in elke stroom. Als u wilt vergelijken via een berekende waarde, plaatst u de muisaanwijzer op de vervolgkeuzelijst kolom en selecteert u Berekende kolom.

Exists settings

Meerdere voorwaarden bestaan

Als u meerdere kolommen uit elke stroom wilt vergelijken, voegt u een nieuwe voorwaarde toe door op het pluspictogram naast een bestaande rij te klikken. Elke aanvullende voorwaarde wordt samengevoegd met een 'and'-instructie. Het vergelijken van twee kolommen is hetzelfde als de volgende expressie:

source1@column1 == source2@column1 && source1@column2 == source2@column2

Aangepaste expressie

Als u een vrije expressie wilt maken die andere operatoren bevat dan 'and' en 'is gelijk aan', selecteert u het veld Aangepaste expressie . Voer een aangepaste expressie in via de opbouwfunctie voor gegevensstroomexpressies door op het blauwe vak te klikken.

Exists custom settings

Als u dynamische patronen in uw gegevensstromen bouwt met behulp van 'late binding' van kolommen via schemadrift, kunt u de byName() expressiefunctie gebruiken om de bestaande transformatie te gebruiken zonder de kolomnamen (bijvoorbeeld vroege binding) vast te stellen. Voorbeeld: toString(byName('ProductNumber','source1')) == toString(byName('ProductNumber','source2'))

Optimalisatie van broadcasts

Broadcast Join

In joins, zoekacties en bestaat transformatie, als een of beide gegevensstromen in het geheugen van het werkknooppunt passen, kunt u de prestaties optimaliseren door Broadcasting in te schakelen. Standaard bepaalt de spark-engine automatisch of er wel of 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.

Script voor gegevensstroom

Syntaxis

<leftStream>, <rightStream>
    exists(
        <conditionalExpression>,
        negate: { true | false },
        broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
    ) ~> <existsTransformationName>

Opmerking

Het onderstaande voorbeeld is een transformatie met de naam checkForChanges die linkse stroom NameNorm2 en de rechterstream TypeConversionsneemt. De voorwaarde bestaat, is de expressie NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region die waar retourneert als zowel de als Region de EMPID kolommen in elke stroom overeenkomen. Omdat we controleren op bestaan, negate is onwaar. We schakelen geen uitzending in op het tabblad Optimaliseren, dus broadcast heeft waarde 'none'.

In de gebruikersinterface ziet deze transformatie eruit als in de onderstaande afbeelding:

Exists example

Het gegevensstroomscript voor deze transformatie bevindt zich in het onderstaande codefragment:

NameNorm2, TypeConversions
    exists(
        NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region,
	    negate:false,
	    broadcast: 'auto'
    ) ~> checkForChanges

Vergelijkbare transformaties zijn Lookup en Join.