Finns transformering i mappning av dataflöde

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Dataflöden är tillgängliga både i Azure Data Factory och Azure Synapse Pipelines. Den här artikeln gäller för mappning av dataflöden. Om du är nybörjare på transformeringar kan du läsa den inledande artikeln Transformera data med hjälp av ett mappningsdataflöde.

Den finns transformeringen är en radfiltreringstransformering som kontrollerar om dina data finns i en annan källa eller dataström. Utdataströmmen innehåller alla rader i den vänstra strömmen som antingen finns eller inte finns i rätt ström. Den finns transformeringen liknar SQL WHERE EXISTS och SQL WHERE NOT EXISTS.

Konfiguration

  1. Välj vilken dataström du söker efter i listrutan Höger dataström .
  2. Ange om du vill att data ska finnas eller inte finns i inställningen Befintlig typ .
  3. Välj om du vill ha ett anpassat uttryck eller inte.
  4. Välj vilka nyckelkolumner du vill jämföra som dina befintliga villkor. Som standard söker dataflödet efter likhet mellan en kolumn i varje dataström. Om du vill jämföra via ett beräknat värde hovra över listrutan kolumn och välj Beräknad kolumn.

Exists settings

Flera finns villkor

Om du vill jämföra flera kolumner från varje ström lägger du till ett nytt befintligt villkor genom att klicka på plusikonen bredvid en befintlig rad. Varje ytterligare villkor är kopplat till en "och"-instruktion. Att jämföra två kolumner är detsamma som följande uttryck:

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

Anpassat uttryck

Om du vill skapa ett fritt formuläruttryck som innehåller andra operatorer än "och" och "lika med" väljer du fältet Anpassat uttryck . Ange ett anpassat uttryck via dataflödesuttrycksverktyget genom att klicka på den blå rutan.

Exists custom settings

Om du skapar dynamiska mönster i dina dataflöden med hjälp av "sen bindning" av kolumner via schemaavvikelse kan du använda byName() uttrycksfunktionen för att använda den existerande transformeringen utan hårdkodning (dvs. tidig bindning) kolumnnamnen. Exempel: toString(byName('ProductNumber','source1')) == toString(byName('ProductNumber','source2'))

Sändningsoptimering

Broadcast Join

I kopplingar, sökningar och finns transformering, om en eller båda dataströmmarna passar in i arbetsnodminnet, kan du optimera prestanda genom att aktivera Sändning. Spark-motorn avgör som standard automatiskt om en sida ska sändas eller inte. Om du vill välja vilken sida som ska sändas manuellt väljer du Fast.

Vi rekommenderar inte att du inaktiverar sändning via alternativet Av om inte dina kopplingar får timeout-fel.

Dataflödesskript

Syntax

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

Exempel

Exemplet nedan är en befintlig transformering med namnet checkForChanges som tar vänster ström NameNorm2 och högerström TypeConversions. Villkoret finns är det uttryck NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region som returnerar sant om både kolumnerna EMPID och Region i varje ström matchar. När vi söker efter existens, negate är falskt. Vi aktiverar inte några sändningar på fliken optimera så broadcast har värdet 'none'.

I användargränssnittet ser den här omvandlingen ut som bilden nedan:

Exists example

Dataflödesskriptet för den här omvandlingen finns i kodfragmentet nedan:

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

Liknande transformeringar är Lookup och Join.