Använda parametrar, uttryck och funktioner i Azure Data Factory
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!
I det här dokumentet fokuserar vi främst på att lära oss grundläggande begrepp med olika exempel för att utforska möjligheten att skapa parametriserade datapipelines i Azure Data Factory. Parameterisering och dynamiska uttryck är sådana viktiga tillägg till ADF eftersom de kan spara mycket tid och möjliggöra en mycket mer flexibel lösning för extrahering, transformering, belastning (ETL) eller extrahering, belastning, transformering (ELT), vilket avsevärt minskar kostnaden för lösningsunderhåll och påskyndar implementeringen av nya funktioner i befintliga pipelines. Dessa vinster beror på att parameterisering minimerar mängden hård kodning och ökar antalet återanvändbara objekt och processer i en lösning.
Användargränssnitt och parametrar för Azure Data Factory
Om du inte har använt Azure Data Factory-parametern tidigare i ADF-användargränssnittet kan du läsa Data Factory-användargränssnittet för länkade tjänster med parametrar och Data Factory-användargränssnittet för metadatadriven pipeline med parametrar för en visuell förklaring.
Parameter- och uttrycksbegrepp
Du kan använda parametrar för att skicka externa värden till pipelines, datauppsättningar, länkade tjänster och dataflöden. När parametern har skickats till resursen kan den inte ändras. Genom att parametrisera resurser kan du återanvända dem med olika värden varje gång. Parametrar kan användas individuellt eller som en del av uttryck. JSON-värden i definitionen kan vara literala eller uttryck som utvärderas vid körning.
Till exempel:
"name": "value"
eller
"name": "@pipeline().parameters.password"
Uttryck kan visas var som helst i ett JSON-strängvärde och alltid resultera i ett annat JSON-värde. Här är lösenordet en pipelineparameter i uttrycket. Om ett JSON-värde är ett uttryck extraheras uttryckets brödtext genom att ta bort at-sign (@). Om en literalsträng behövs som börjar med @måste den vara undantagen med hjälp av @@. I följande exempel visas hur uttryck utvärderas.
JSON-värde | Result |
---|---|
"parametrar" | Tecknen "parameters" returneras. |
"parameters[1]" | Tecknen "parameters[1]" returneras. |
"@@" | En sträng med 1 tecken som innehåller @returneras. |
" @" | En sträng med två tecken som innehåller @returneras. |
Uttryck kan också visas inuti strängar med hjälp av en funktion som kallas stränginterpolation där uttryck omsluts i @{ ... }
. Till exempel: "name" : "First Name: @{pipeline().parameters.firstName} Last Name: @{pipeline().parameters.lastName}"
Med stränginterpolation är resultatet alltid en sträng. Säg att jag har definierat myNumber
som 42
och myString
som foo
:
JSON-värde | Result |
---|---|
"@pipeline().parameters.myString" | Returnerar foo som en sträng. |
"@{pipeline().parameters.myString}" | Returnerar foo som en sträng. |
"@pipeline().parameters.myNumber" | Returnerar 42 som ett tal. |
"@{pipeline().parameters.myNumber}" | Returnerar 42 som en sträng. |
"Svaret är: @{pipeline().parameters.myNumber}" | Returnerar strängen Answer is: 42 . |
"@concat('Answer is: ', string(pipeline().parameters.myNumber))" | Returnerar strängen Answer is: 42 |
"Svaret är: @@{pipeline().parameters.myNumber}" | Returnerar strängen Answer is: @{pipeline().parameters.myNumber} . |
Exempel på hur du använder parametrar i uttryck
Exempel på komplext uttryck
Exemplet nedan visar ett komplext exempel som refererar till ett djupt underfält med aktivitetsutdata. Om du vill referera till en pipelineparameter som utvärderas till ett underfält använder du [] syntax i stället för punktoperator (.) (som vid underfält1 och underfält2)
@activity('*activityName*').output.*subfield1*.*subfield2*[pipeline().parameters.*subfield3*].*subfield4*
Redigerare för dynamiskt innehåll
Redigeraren för dynamiskt innehåll undflyr automatiskt tecken i ditt innehåll när du är klar med redigeringen. Följande innehåll i innehållsredigeraren är till exempel en stränginterpolation med två uttrycksfunktioner.
{
"type": "@{if(equals(1, 2), 'Blob', 'Table' )}",
"name": "@{toUpper('myData')}"
}
Redigeraren för dynamiskt innehåll konverterar innehållet till uttrycket "{ \n \"type\": \"@{if(equals(1, 2), 'Blob', 'Table' )}\",\n \"name\": \"@{toUpper('myData')}\"\n}"
. Resultatet av det här uttrycket är en JSON-formatsträng som visas nedan.
{
"type": "Table",
"name": "MYDATA"
}
En datauppsättning med parametrar
I följande exempel tar BlobDataset en parameter med namnet path. Dess värde används för att ange ett värde för egenskapen folderPath med uttrycket : dataset().path
.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": "@dataset().path"
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
En pipeline med parametrar
I följande exempel tar pipelinen inputPath - och outputPath-parametrar . Sökvägen för den parametriserade blobdatauppsättningen anges med hjälp av värdena för dessa parametrar. Syntaxen som används här är: pipeline().parameters.parametername
.
{
"name": "Adfv2QuickStartPipeline",
"properties": {
"activities": [
{
"name": "CopyFromBlobToBlob",
"type": "Copy",
"inputs": [
{
"referenceName": "BlobDataset",
"parameters": {
"path": "@pipeline().parameters.inputPath"
},
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "BlobDataset",
"parameters": {
"path": "@pipeline().parameters.outputPath"
},
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "BlobSource"
},
"sink": {
"type": "BlobSink"
}
}
}
],
"parameters": {
"inputPath": {
"type": "String"
},
"outputPath": {
"type": "String"
}
}
}
}
Anropa funktioner i uttryck
Du kan anropa funktioner i uttryck. Följande avsnitt innehåller information om de funktioner som kan användas i ett uttryck.
Strängfunktioner
Om du vill arbeta med strängar kan du använda dessa strängfunktioner och även vissa samlingsfunktioner. Strängfunktioner fungerar endast på strängar.
Strängfunktion | Uppgift |
---|---|
concat | Kombinera två eller flera strängar och returnera den kombinerade strängen. |
endsWith | Kontrollera om en sträng slutar med den angivna delsträngen. |
GUID | Generera en globalt unik identifierare (GUID) som en sträng. |
indexOf | Returnera startpositionen för en delsträng. |
lastIndexOf | Returnera startpositionen för den sista förekomsten av en delsträng. |
ersätt | Ersätt en delsträng med den angivna strängen och returnera den uppdaterade strängen. |
dela | Returnera en matris som innehåller delsträngar, avgränsade med kommatecken, från en större sträng baserat på ett angivet avgränsartecken i den ursprungliga strängen. |
startsWith | Kontrollera om en sträng börjar med en specifik delsträng. |
Delsträng | Returnera tecken från en sträng med början från den angivna positionen. |
toLower | Returnera en sträng i gemener. |
toUpper | Returnera en sträng i versaler. |
trimma | Ta bort inledande och avslutande blanksteg från en sträng och returnera den uppdaterade strängen. |
Insamlingsfunktioner
Om du vill arbeta med samlingar, vanligtvis matriser, strängar och ibland ordlistor, kan du använda dessa samlingsfunktioner.
Samlingsfunktion | Uppgift |
---|---|
Innehåller | Kontrollera om en samling har ett specifikt objekt. |
empty | Kontrollera om en samling är tom. |
första | Returnera det första objektet från en samling. |
vägkorsning | Returnera en samling som bara har de vanliga objekten i de angivna samlingarna. |
join | Returnera en sträng som innehåller alla objekt från en matris, avgränsad med det angivna tecknet. |
sist | Returnera det sista objektet från en samling. |
length | Returnera antalet objekt i en sträng eller matris. |
skippa | Ta bort objekt från framsidan av en samling och returnera alla andra objekt. |
ta | Returnera objekt från framsidan av en samling. |
union | Returnera en samling som innehåller alla objekt från de angivna samlingarna. |
Logiska funktioner
Dessa funktioner är användbara inuti villkor, de kan användas för att utvärdera alla typer av logik.
Logisk jämförelsefunktion | Uppgift |
---|---|
and | Kontrollera om alla uttryck är sanna. |
Motsvarar | Kontrollera om båda värdena är likvärdiga. |
greater | Kontrollera om det första värdet är större än det andra värdet. |
greaterOrEquals | Kontrollera om det första värdet är större än eller lika med det andra värdet. |
om | Kontrollera om ett uttryck är sant eller falskt. Baserat på resultatet returnerar du ett angivet värde. |
less | Kontrollera om det första värdet är mindre än det andra värdet. |
lessOrEquals | Kontrollera om det första värdet är mindre än eller lika med det andra värdet. |
inte | Kontrollera om ett uttryck är falskt. |
or | Kontrollera om minst ett uttryck är sant. |
Konverteringsfunktioner
Dessa funktioner används för att konvertera mellan var och en av de inbyggda typerna på språket:
- sträng
- integer
- flyttal
- boolean
- Matriser
- Ordböcker
Konverteringsfunktion | Uppgift |
---|---|
samling | Returnera en matris från en enda angiven indata. Flera indata finns i createArray. |
base64 | Returnera den base64-kodade versionen för en sträng. |
base64ToBinary | Returnera den binära versionen för en base64-kodad sträng. |
base64ToString | Returnera strängversionen för en base64-kodad sträng. |
binär | Returnera den binära versionen för ett indatavärde. |
Bool | Returnera den booleska versionen för ett indatavärde. |
sammansmälta | Returnera det första värdet som inte är null från en eller flera parametrar. |
createArray | Returnera en matris från flera indata. |
dataUri | Returnera data-URI:n för ett indatavärde. |
dataUriToBinary | Returnera den binära versionen för en data-URI. |
dataUriToString | Returnera strängversionen för en data-URI. |
avkodaBase64 | Returnera strängversionen för en base64-kodad sträng. |
decodeDataUri | Returnera den binära versionen för en data-URI. |
decodeUriComponent | Returnera en sträng som ersätter escape-tecken med avkodade versioner. |
encodeUriComponent | Returnera en sträng som ersätter URL-osäkra tecken med escape-tecken. |
flyta | Returnera ett flyttalsnummer för ett indatavärde. |
Int | Returnera heltalsversionen för en sträng. |
json | Returnera JSON-typvärdet (JavaScript Object Notation) för en sträng eller XML. |
sträng | Returnera strängversionen för ett indatavärde. |
uriComponent | Returnera den URI-kodade versionen för ett indatavärde genom att ersätta URL-osäkra tecken med escape-tecken. |
uriComponentToBinary | Returnera den binära versionen för en URI-kodad sträng. |
uriComponentToString | Returnera strängversionen för en URI-kodad sträng. |
xml | Returnera XML-versionen för en sträng. |
xpath | Kontrollera XML för noder eller värden som matchar ett XPath-uttryck (XML Path Language) och returnera matchande noder eller värden. |
Matematikfunktioner
Dessa funktioner kan användas för båda typerna av tal: heltal och flyttal.
Matematisk funktion | Uppgift |
---|---|
addera | Returnera resultatet från att lägga till två tal. |
div | Returnera resultatet från att dela upp två tal. |
max | Returnera det högsta värdet från en uppsättning tal eller en matris. |
min | Returnera det lägsta värdet från en uppsättning tal eller en matris. |
mods | Returnera resten från att dela upp två tal. |
mul | Returnera produkten från att multiplicera två tal. |
Rand | Returnera ett slumpmässigt heltal från ett angivet intervall. |
intervall | Returnera en heltalsmatris som startar från ett angivet heltal. |
under | Returnera resultatet från att subtrahera det andra talet från det första talet. |
Datumfunktioner
Datum- eller tidsfunktion | Uppgift |
---|---|
addDays | Lägg till ett antal dagar i en tidsstämpel. |
addHours | Lägg till ett antal timmar i en tidsstämpel. |
addMinutes | Lägg till ett antal minuter i en tidsstämpel. |
addSeconds | Lägg till ett antal sekunder i en tidsstämpel. |
addToTime | Lägg till ett antal tidsenheter i en tidsstämpel. Se även getFutureTime. |
convertFromUtc | Konvertera en tidsstämpel från Universal Time Coordinated (UTC) till måltidszonen. |
convertTimeZone | Konvertera en tidsstämpel från källtidszonen till måltidszonen. |
convertToUtc | Konvertera en tidsstämpel från källtidszonen till Universal Time Coordinated (UTC). |
dayOfMonth | Returnera månadskomponenten från en tidsstämpel. |
dayOfWeek | Returnera veckodag-komponenten från en tidsstämpel. |
dayOfYear | Returnera årskomponentens dag från en tidsstämpel. |
formatDateTime | Returnera tidsstämpeln som en sträng i valfritt format. |
getFutureTime | Returnera den aktuella tidsstämpeln plus de angivna tidsenheterna. Se även addToTime. |
getPastTime | Returnera den aktuella tidsstämpeln minus de angivna tidsenheterna. Se även subtractFromTime. |
startOfDay | Returnera dagens start för en tidsstämpel. |
startOfHour | Returnera timmens start för en tidsstämpel. |
startOfMonth | Returnera början av månaden för en tidsstämpel. |
subtractFromTime | Subtrahera ett antal tidsenheter från en tidsstämpel. Se även getPastTime. |
Fästingar | Returnera egenskapsvärdet ticks för en angiven tidsstämpel. |
utcNow | Returnera den aktuella tidsstämpeln som en sträng. |
Detaljerade exempel för övning
Detaljerad Azure Data Factory-kopieringspipeline med parametrar
Den här azure Data Factory-pipelineparametern som skickar självstudiekursen beskriver hur du skickar parametrar mellan en pipeline och aktivitet samt mellan aktiviteterna.
Detaljerad pipeline för dataflödesmappning med parametrar
Följ Mappa dataflöde med parametrar för omfattande exempel på hur du använder parametrar i dataflödet.
Detaljerad metadatadriven pipeline med parametrar
Följ metadatadriven pipeline med parametrar för att lära dig mer om hur du använder parametrar för att utforma metadatadrivna pipelines. Detta är ett populärt användningsfall för parametrar.
Relaterat innehåll
En lista över systemvariabler som du kan använda i uttryck finns i Systemvariabler.