Parameters, expressies en functies gebruiken in Azure Data Factory
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 .
In dit document richten we ons voornamelijk op het leren van basisconcepten met verschillende voorbeelden om de mogelijkheid te verkennen om geparameteriseerde gegevenspijplijnen te maken in Azure Data Factory. Parameterisatie en dynamische expressies zijn dergelijke belangrijke toevoegingen aan ADF omdat ze een enorme hoeveelheid tijd kunnen besparen en een veel flexibelere ETL-oplossing (Extract, Transform, Load, Load) of Extract, Load, Transform (ELT) kunnen besparen, waardoor de kosten van het onderhoud van oplossingen aanzienlijk worden verminderd en de implementatie van nieuwe functies in bestaande pijplijnen wordt versneld. Deze voordelen komen doordat parameterisatie de hoeveelheid harde codering minimaliseert en het aantal herbruikbare objecten en processen in een oplossing verhoogt.
Gebruikersinterface en parameters van Azure Data Factory
Als u geen toegang hebt tot het gebruik van azure Data Factory-parameters in de ADF-gebruikersinterface, raadpleegt u de Gebruikersinterface van Data Factory voor gekoppelde services met parameters en de gebruikersinterface van Data Factory voor pijplijn op basis van metagegevens met parameters voor een visuele uitleg.
Concepten van parameters en expressies
U kunt parameters gebruiken om externe waarden door te geven aan pijplijnen, gegevenssets, gekoppelde services en gegevensstromen. Zodra de parameter is doorgegeven aan de resource, kan deze niet meer worden gewijzigd. Door resources te parameteriseren, kunt u ze telkens opnieuw gebruiken met verschillende waarden. Parameters kunnen afzonderlijk of als onderdeel van expressies worden gebruikt. JSON-waarden in de definitie kunnen letterlijk zijn of expressies die tijdens runtime worden geëvalueerd.
Voorbeeld:
"name": "value"
or
"name": "@pipeline().parameters.password"
Expressies kunnen overal in een JSON-tekenreekswaarde worden weergegeven en resulteren altijd in een andere JSON-waarde. Hier is het wachtwoord een pijplijnparameter in de expressie. Als een JSON-waarde een expressie is, wordt de hoofdtekst van de expressie geëxtraheerd door het at-sign (@) te verwijderen. Als er een letterlijke tekenreeks nodig is die begint met @, moet deze worden ontsnapt met @@. In de volgende voorbeelden ziet u hoe expressies worden geëvalueerd.
JSON-waarde | Resultaat |
---|---|
"parameters" | De tekens parameters worden geretourneerd. |
"parameters[1]" | De tekens 'parameters[1]' worden geretourneerd. |
"@@" | Er wordt een tekenreeks van 1 tekenreeks met @geretourneerd. |
" @" | Er wordt een tekenreeks van 2 tekens geretourneerd die @bevat. |
Expressies kunnen ook worden weergegeven in tekenreeksen, met behulp van een functie genaamd tekenreeksinterpolatie waarin expressies worden verpakt @{ ... }
. Bijvoorbeeld: "name" : "First Name: @{pipeline().parameters.firstName} Last Name: @{pipeline().parameters.lastName}"
Met behulp van tekenreeksinterpolatie is het resultaat altijd een tekenreeks. Stel dat ik heb gedefinieerd myNumber
als 42
en myString
als foo
:
JSON-waarde | Resultaat |
---|---|
"@pipeline().parameters.myString" | Retourneert foo als een tekenreeks. |
"@{pipeline().parameters.myString}" | Retourneert foo als een tekenreeks. |
"@pipeline().parameters.myNumber" | Retourneert 42 als een getal. |
"@{pipeline().parameters.myNumber}" | Retourneert 42 als een tekenreeks. |
"Antwoord is: @{pipeline().parameters.myNumber}" | Retourneert de tekenreeks Answer is: 42 . |
"@concat('Answer is: ', string(pipeline().parameters.myNumber))' | Retourneert de tekenreeks Answer is: 42 |
"Antwoord is: @@{pipeline().parameters.myNumber}" | Retourneert de tekenreeks Answer is: @{pipeline().parameters.myNumber} . |
Voorbeelden van het gebruik van parameters in expressies
Voorbeeld van complexe expressie
In het onderstaande voorbeeld ziet u een complex voorbeeld dat verwijst naar een diep subveld van de uitvoer van de activiteit. Als u wilt verwijzen naar een pijplijnparameter die naar een subveld evalueert, gebruikt u de syntaxis [] in plaats van dot(.) operator (zoals in het geval van subveld1 en subveld2)
@activity('*activityName*').output.*subfield1*.*subfield2*[pipeline().parameters.*subfield3*].*subfield4*
Dynamische inhoudseditor
Dynamische inhoudseditor escapet automatisch tekens in uw inhoud wanneer u klaar bent met bewerken. De volgende inhoud in de inhoudseditor is bijvoorbeeld een tekenreeksinterpolatie met twee expressiefuncties.
{
"type": "@{if(equals(1, 2), 'Blob', 'Table' )}",
"name": "@{toUpper('myData')}"
}
Dynamische inhoudseditor converteert boven inhoud naar expressie "{ \n \"type\": \"@{if(equals(1, 2), 'Blob', 'Table' )}\",\n \"name\": \"@{toUpper('myData')}\"\n}"
. Het resultaat van deze expressie is een tekenreeks voor JSON-indeling die hieronder wordt weergegeven.
{
"type": "Table",
"name": "MYDATA"
}
Een gegevensset met parameters
In het volgende voorbeeld gebruikt de BlobDataset een parameter met de naam van het pad. De waarde wordt gebruikt om een waarde in te stellen voor de eigenschap folderPath met behulp van de expressie: dataset().path
.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": "@dataset().path"
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
Een pijplijn met parameters
In het volgende voorbeeld gebruikt de pijplijn inputPath - en outputPath-parameters . Het pad voor de geparameteriseerde blobgegevensset wordt ingesteld met behulp van waarden van deze parameters. De syntaxis die hier wordt gebruikt, is: 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"
}
}
}
}
Aanroepende functies binnen expressies
U kunt functies aanroepen binnen expressies. De volgende secties bevatten informatie over de functies die kunnen worden gebruikt in een expressie.
Tekenreeksfuncties
Als u met tekenreeksen wilt werken, kunt u deze tekenreeksfuncties en ook enkele verzamelingsfuncties gebruiken. Tekenreeksfuncties werken alleen voor tekenreeksen.
Tekenreeksfunctie | Opdracht |
---|---|
concat | Combineer twee of meer tekenreeksen en retourneer de gecombineerde tekenreeks. |
endsWith | Controleer of een tekenreeks eindigt met de opgegeven subtekenreeks. |
Guid | Genereer een GUID (Globally Unique Identifier) als een tekenreeks. |
indexOf | De beginpositie voor een subtekenreeks retourneren. |
lastIndexOf | Retourneert de beginpositie voor het laatste exemplaar van een subtekenreeks. |
replace | Vervang een subtekenreeks door de opgegeven tekenreeks en retourneer de bijgewerkte tekenreeks. |
split | Retourneert een matrix die subtekenreeksen bevat, gescheiden door komma's, van een grotere tekenreeks op basis van een opgegeven scheidingsteken in de oorspronkelijke tekenreeks. |
startsWith | Controleer of een tekenreeks begint met een specifieke subtekenreeks. |
Subtekenreeks | Retourneert tekens uit een tekenreeks, beginnend vanaf de opgegeven positie. |
toLower | Retourneert een tekenreeks in kleine letters. |
toUpper | Retourneert een tekenreeks in hoofdletters. |
trim | Verwijder voorloop- en volgspaties uit een tekenreeks en retourneer de bijgewerkte tekenreeks. |
Verzamelingsfuncties
Als u wilt werken met verzamelingen, over het algemeen matrices, tekenreeksen en soms woordenlijsten, kunt u deze verzamelingsfuncties gebruiken.
Verzamelingsfunctie | Opdracht |
---|---|
Bevat | Controleer of een verzameling een specifiek item heeft. |
empty | Controleer of een verzameling leeg is. |
eerste | Retourneert het eerste item uit een verzameling. |
kruispunt | Retourneert een verzameling met alleen de algemene items in de opgegeven verzamelingen. |
join | Hiermee wordt een tekenreeks geretourneerd die alle items uit een matrix bevat, gescheiden door het opgegeven teken. |
laatste | Retourneer het laatste item uit een verzameling. |
length | Retourneert het aantal items in een tekenreeks of matrix. |
skip | Verwijder items aan de voorzijde van een verzameling en retourneer alle andere items. |
nemen | Items retourneren van de voorzijde van een verzameling. |
unie | Hiermee wordt een verzameling geretourneerd die alle items uit de opgegeven verzamelingen bevat. |
Logische functies
Deze functies zijn handig binnen voorwaarden, ze kunnen worden gebruikt om elk type logica te evalueren.
Logische vergelijkingsfunctie | Opdracht |
---|---|
and | Controleer of alle expressies waar zijn. |
is gelijk aan | Controleer of beide waarden gelijkwaardig zijn. |
greater | Controleer of de eerste waarde groter is dan de tweede waarde. |
greaterOrEquals | Controleer of de eerste waarde groter is dan of gelijk is aan de tweede waarde. |
if | Controleer of een expressie waar of onwaar is. Op basis van het resultaat retourneert u een opgegeven waarde. |
less | Controleer of de eerste waarde kleiner is dan de tweede waarde. |
lessOrEquals | Controleer of de eerste waarde kleiner is dan of gelijk is aan de tweede waarde. |
niet | Controleer of een expressie onwaar is. |
or | Controleer of ten minste één expressie waar is. |
Conversiefuncties
Deze functies worden gebruikt om te converteren tussen elk van de systeemeigen typen in de taal:
- tekenreeks
- geheel getal
- zwevend
- boolean
- Arrays
- Woordenboeken
Conversiefunctie | Opdracht |
---|---|
array | Retourneert een matrix van één opgegeven invoer. Zie CreateArray voor meerdere invoerwaarden. |
base64 | Retourneert de base64-gecodeerde versie voor een tekenreeks. |
base64ToBinary | Retourneert de binaire versie voor een met base64 gecodeerde tekenreeks. |
base64ToString | Retourneert de tekenreeksversie voor een met base64 gecodeerde tekenreeks. |
binair | Retourneert de binaire versie voor een invoerwaarde. |
bool | Retourneert de Boole-versie voor een invoerwaarde. |
samensmelten | Retourneert de eerste niet-null-waarde van een of meer parameters. |
createArray | Retourneert een matrix van meerdere invoerwaarden. |
dataUri | Retourneert de gegevens-URI voor een invoerwaarde. |
dataUriToBinary | Retourneert de binaire versie voor een gegevens-URI. |
dataUriToString | Retourneert de tekenreeksversie voor een gegevens-URI. |
decoderenBase64 | Retourneert de tekenreeksversie voor een met base64 gecodeerde tekenreeks. |
decodeDataUri | Retourneert de binaire versie voor een gegevens-URI. |
decodeUriComponent | Retourneert een tekenreeks die escape-tekens vervangt door gedecodeerde versies. |
encodeUriComponent | Retourneert een tekenreeks die URL-onveilige tekens vervangt door escapetekens. |
drijven | Retourneert een drijvende-kommanummer voor een invoerwaarde. |
int | Retourneert de gehele versie voor een tekenreeks. |
json | Retourneert de JSON-typewaarde (JavaScript Object Notation) of het object voor een tekenreeks of XML. |
snaar | Retourneert de tekenreeksversie voor een invoerwaarde. |
uriComponent | Retourneert de URI-gecodeerde versie voor een invoerwaarde door URL-onveilige tekens te vervangen door escapetekens. |
uriComponentToBinary | Retourneert de binaire versie voor een URI-gecodeerde tekenreeks. |
uriComponentToString | Retourneert de tekenreeksversie voor een URI-gecodeerde tekenreeks. |
xml | Retourneer de XML-versie voor een tekenreeks. |
xpath | Controleer XML op knooppunten of waarden die overeenkomen met een XPath-expressie (XML Path Language) en retourneer de overeenkomende knooppunten of waarden. |
Wiskundige functies
Deze functies kunnen worden gebruikt voor beide typen getallen: gehele getallen en floats.
Wiskundige functie | Opdracht |
---|---|
add | Retourneert het resultaat van het optellen van twee getallen. |
div | Retourneert het resultaat van het delen van twee getallen. |
max | Retourneert de hoogste waarde uit een set getallen of een matrix. |
min | Retourneert de laagste waarde uit een set getallen of een matrix. |
Mod | Retourneert de rest van het delen van twee getallen. |
mul | Retourneer het product van het vermenigvuldigen van twee getallen. |
rand | Retourneert een willekeurig geheel getal uit een opgegeven bereik. |
range | Retourneert een matrix met gehele getallen die begint met een opgegeven geheel getal. |
sub | Retourneert het resultaat van het aftrekken van het tweede getal van het eerste getal. |
Datumfuncties
Datum- of tijdfunctie | Opdracht |
---|---|
addDays | Voeg een aantal dagen toe aan een tijdstempel. |
addHours | Voeg een aantal uren toe aan een tijdstempel. |
addMinutes | Voeg een aantal minuten toe aan een tijdstempel. |
addSeconds | Voeg een aantal seconden toe aan een tijdstempel. |
addToTime | Voeg een aantal tijdseenheden toe aan een tijdstempel. Zie ook getFutureTime. |
convertFromUtc | Converteer een tijdstempel van Universal Time Coordinated (UTC) naar de doeltijdzone. |
convertTimeZone | Converteer een tijdstempel van de brontijdzone naar de doeltijdzone. |
convertToUtc | Converteer een tijdstempel van de brontijdzone naar Universal Time Coordinated (UTC). |
dayOfMonth | Retourneer de dag van het maandonderdeel uit een tijdstempel. |
dayOfWeek | Retourneert de dag van de weekcomponent uit een tijdstempel. |
dayOfYear | Retourneer de dag van het jaaronderdeel uit een tijdstempel. |
formatDateTime | Retourneert de tijdstempel als een tekenreeks in optionele notatie. |
getFutureTime | Retourneer de huidige tijdstempel plus de opgegeven tijdseenheden. Zie ook addToTime. |
getPastTime | Retourneert de huidige tijdstempel minus de opgegeven tijdseenheden. Zie ook aftrekkenVanTijd. |
startOfDay | Retourneer het begin van de dag voor een tijdstempel. |
startOfHour | Retourneert het begin van het uur voor een tijdstempel. |
startOfMonth | Retourneer het begin van de maand voor een tijdstempel. |
aftrekkenFromTime | Trek een aantal tijdseenheden af van een tijdstempel. Zie ook getPastTime. |
Teken | Retourneert de ticks eigenschapswaarde voor een opgegeven tijdstempel. |
utcNow | Retourneert de huidige tijdstempel als een tekenreeks. |
Gedetailleerde voorbeelden voor de praktijk
Gedetailleerde azure Data Factory-kopieerpijplijn met parameters
In deze zelfstudie voor het kopiëren van een pijplijnparameter van Azure Data Factory wordt stapsgewijs uitgelegd hoe u parameters doorgeeft tussen een pijplijn en activiteit en tussen de activiteiten.
Gedetailleerde pijplijn voor toewijzingsgegevensstromen met parameters
Volg de toewijzingsgegevensstroom met parameters voor uitgebreid voorbeeld over het gebruik van parameters in de gegevensstroom.
Gedetailleerde pijplijn op basis van metagegevens met parameters
Volg de pijplijn op basis van metagegevens met parameters voor meer informatie over het gebruik van parameters voor het ontwerpen van pijplijnen op basis van metagegevens. Dit is een populair gebruiksvoorbeeld voor parameters.
Gerelateerde inhoud
Zie Systeemvariabelen voor een lijst met systeemvariabelen die u in expressies kunt gebruiken.