Skapa uttryck i mappning av dataflöde

gäller för: Azure Data Factory Azure Synapse Analytics

I mappning av dataflöde anges många transformeringsegenskaper som uttryck. Dessa uttryck består av kolumnvärden, parametrar, funktioner, operatorer och literaler som utvärderas till en Spark-datatyp vid körning. Mappning av dataflöden har en dedikerad upplevelse som hjälper dig att skapa dessa uttryck som kallas Expression Builder. Med intelliSense-kodkomplettering för markering, syntaxkontroll och automatisk komplettering är uttrycksverktyget utformat för att göra det enkelt att skapa dataflöden. Den här artikeln förklarar hur du använder uttrycksverktyget för att effektivt bygga din affärslogik.

Expression Builder

Öppna Expression Builder

Det finns flera startpunkter för att öppna uttrycksverktyget. Dessa är alla beroende av den specifika kontexten för dataflödesomvandlingen. Det vanligaste användningsfallet är transformationer som härledda kolumner och aggregeringar där användare skapar eller uppdaterar kolumner med hjälp av språket för dataflödesuttryck. Du kan öppna uttrycksverktyget genom att välja Open expression builder ovanför listan med kolumner. Du kan också klicka på en kolumnkontext och öppna uttrycksverktyget direkt till uttrycket.

Open Expression Builder härled

I vissa omvandlingar, till exempel filter,öppnas uttrycksverktyget genom att klicka på en textruta med blå uttryck.

Blå uttrycksruta

När du refererar till kolumner i ett matchande villkor eller gruppera efter-villkor kan ett uttryck extrahera värden från kolumner. Om du vill skapa ett uttryck väljer du Beräknad kolumn.

Alternativet Beräknad kolumn

Om ett uttryck eller ett literalvärde är giltiga indata väljer du Lägg till dynamiskt innehåll för att skapa ett uttryck som utvärderas till ett literalvärde.

Alternativet Lägg till dynamiskt innehåll

Uttryckselement

Vid mappning av dataflöden kan uttryck bestå av kolumnvärden, parametrar, funktioner, lokala variabler, operatorer och literaler. Dessa uttryck måste utvärderas till en Spark-datatyp, till exempel sträng, boolesk eller heltal.

Uttryckselement

Functions

Mappning av dataflöden har inbyggda funktioner och operatorer som kan användas i uttryck. En lista över tillgängliga funktioner finns i språkreferensen för mappning av dataflöden.

Adressera matrisindex

När du hanterar kolumner eller funktioner som returnerar matristyper använder du hakparenteser ([]) för att komma åt ett visst element. Om indexet inte finns utvärderas uttrycket till NULL.

Expression Builder-matris

Viktigt

Vid mappning av dataflöden är matriser en-baserade, vilket innebär att det första elementet refereras till av index ett. Till exempel kommer myArray[1] åt det första elementet i en matris med namnet "myArray".

Indataschema

Om ditt dataflöde använder ett definierat schema i någon av dess källor kan du referera till en kolumn efter namn i många uttryck. Om du använder schemaavdrift kan du referera till kolumner explicit med hjälp av byName() funktionerna eller eller matcha med hjälp av byNames() kolumnmönster.

Kolumnnamn med specialtecken

När du har kolumnnamn som innehåller specialtecken eller blanksteg omger du namnet med kparenteser för att referera till dem i ett uttryck.

{[dbo].this_is my complex name$$$}

Parametrar

Parametrar är värden som skickas till ett dataflöde vid körning från en pipeline. Om du vill referera till en parameter klickar du antingen på parametern från vyn Uttryckselement eller refererar till den med ett dollartecken framför namnet. Till exempel skulle en parameter med namnet parameter1 refereras av $parameter1 . Mer information finns i parametrisera mappningsdataflöden.

Cachelagrad sökning

Med en cachelagrad sökning kan du göra en infogade sökning av utdata från en cachelagrad mottagare. Det finns två funktioner som kan användas på varje mottagare, lookup() och outputs() . Syntaxen för att referera till dessa funktioner är cacheSinkName#functionName() . Mer information finns i cache-mottagare.

lookup() tar in de matchande kolumnerna i den aktuella transformeringen som parametrar och returnerar en komplex kolumn som motsvarar raden som matchar nyckelkolumnerna i cache-mottagaren. Den komplexa kolumn som returneras innehåller en underkolumn för varje kolumn som mappas i cache-mottagaren. Om du till exempel har en cache-mottagare för errorCodeCache felkod som har en nyckelkolumn som matchar koden och en kolumn med namnet Message . Om errorCodeCache#lookup(errorCode).Message du anropar returneras meddelandet som motsvarar koden som skickades.

outputs() tar inga parametrar och returnerar hela cache-mottagaren som en matris med komplexa kolumner. Detta kan inte anropas om nyckelkolumner anges i mottagaren och ska endast användas om det finns ett litet antal rader i cache-mottagaren. Ett vanligt användningsfall är att använda maxvärdet för en inkrementerande nyckel. Om en cachelagrad enskild aggregerad rad CacheMaxKey innehåller en kolumn kan du referera till det första värdet genom att anropa MaxKey CacheMaxKey#outputs()[1].MaxKey .

Cachelagrad sökning

Lokalbefolkningen

Om du delar logik över flera kolumner eller vill dela upp logiken kan du skapa en lokal i en härledd kolumn. Om du vill referera till en lokal klickar du antingen på det lokala från vyn Uttryckselement eller refererar till det med ett kolon framför dess namn. Till exempel refereras en lokal med namnet local1 till :local1 av . Läs mer om lokala i dokumentationen om härledda kolumner.

Resultat av förhandsversionsuttryck

Om felsökningsläget är aktiverat kan du interaktivt använda felsökningsklustret för att förhandsgranska vad uttrycket utvärderas till. Välj Uppdatera bredvid dataförhandsgranskning för att uppdatera resultatet av dataförhandsgranskningen. Du kan se utdata för varje rad givet indatakolumnerna.

Pågående förhandsgranskning

Stränginterpolering

När du skapar långa strängar som använder uttryckselement använder du stränginterpolation för att enkelt skapa komplex stränglogik. Med stränginterpolation undviker du omfattande användning av sammanfogning av strängar när parametrar ingår i frågesträngar. Använd dubbla citattecken för att omge strängtext med literaler tillsammans med uttryck. Du kan inkludera uttrycksfunktioner, kolumner och parametrar. Om du vill använda uttryckssyntax omsluter du den med kparenteser,

Några exempel på stränginterpolering:

  • "My favorite movie is {iif(instr(title,', The')>0,"The {split(title,', The')[1]}",title)}"

  • "select * from {$tablename} where orderyear > {$year}"

  • "Total cost with sales tax is {round(totalcost * 1.08,2)}"

  • "{:playerName} is a {:playerRating} player"

Anteckning

När du använder syntax för stränginterpolering i SQL-källfrågor måste frågesträngen finnas på en enda rad, utan "/n".

Kommentera uttryck

Lägg till kommentarer i dina uttryck med hjälp av syntax för enkelrads- och flerradskommentarer.

Följande exempel är giltiga kommentarer:

  • /* This is my comment */

  • /* This is a

  • multi-line comment */

Om du lägger till en kommentar överst i uttrycket visas den i textrutan transformering för att dokumentera dina transformeringsuttryck.

Kommentar i textrutan för transformering

Reguljära uttryck

Många uttrycksspråksfunktioner använder syntax för reguljära uttryck. När du använder funktioner för reguljära uttryck försöker Expression Builder tolka ett omsnedstreck ( \ ) som en escape-teckensekvens. När du använder omslutna snedstreck i ditt reguljära uttryck omsluter du antingen hela regex i bakåtsnedstreck ( ) eller använder ett ` dubbelt omslutet snedstreck.

Ett exempel som använder backticks:

regex_replace('100 and 200', `(\d+)`, 'digits')

Ett exempel som använder dubbla snedstreck:

regex_replace('100 and 200', '(\\d+)', 'digits')

Kortkommandon

Nedan visas en lista över genvägar som är tillgängliga i uttrycksverktyget. De flesta IntelliSense-genvägar är tillgängliga när du skapar uttryck.

  • Ctrl+K Ctrl+C: Kommentera hela raden.
  • Ctrl+K Ctrl+U: Avkommentering.
  • F1: Ange kommandon för redigeringshjälp.
  • Alt + nedpil: Flytta ned aktuell rad.
  • Alt + Uppåtpil:: Flytta upp aktuell rad.
  • Ctrl+Blanksteg: Visa kontexthjälp.

Vanliga uttryck

Konvertera till datum eller tidsstämplar

Om du vill inkludera stränglitteraler i tidsstämpelutdata omsluter du konverteringen i toString() .

toString(toTimestamp('12/31/2016T00:12:00', 'MM/dd/yyyy\'T\'HH:mm:ss'), 'MM/dd /yyyy\'T\'HH:mm:ss')

Om du vill konvertera millisekunder från epok till ett datum eller en tidsstämpel använder du toTimestamp(<number of milliseconds>) . Om tiden kommer i sekunder multiplicerar du med 1 000.

toTimestamp(1574127407*1000l)

Det avslutande "l" i slutet av det föregående uttrycket innebär konvertering till en lång typ som infogade syntax.

Hitta tid från epok- eller Unix-tid

toLong( currentTimestamp() - toTimestamp('1970-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss. SSS') * 1000l

Utvärdering av dataflödestid

Dataflödesprocesser till millisekunder. För 2018-07-31T20:00:00.2170000 visas 2018-07-31T20:00:00.217 i utdata. I ADF-portalen visas tidsstämpeln i den aktuella webbläsarinställningen , vilket kan eliminera 217, men när du ska köra dataflödet från slut till slut, bearbetas även 217 (millisekunder kommer också att bearbetas). Du kan använda toString(myDateTimeColumn) som uttryck och se data med fullständig precision i förhandsversionen. Bearbeta datetime som datetime i stället för sträng för alla praktiska ändamål.

Nästa steg

Börja skapa datatransformeringsuttryck