Jak používat parametry, výrazy a funkce ve službě Azure Data Factory
PLATÍ PRO: Azure Data Factory
Azure Synapse Analytics
Tip
Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.
V tomto dokumentu se zaměříme především na výuku základních konceptů s různými příklady, abychom prozkoumali možnost vytvářet parametrizované datové kanály ve službě Azure Data Factory. Parametrizace a dynamické výrazy jsou tak výraznými doplňky ADF, protože můžou ušetřit obrovské množství času a umožňují mnohem flexibilnější řešení extrakce, transformace, načítání (ETL) nebo extrakce, načítání, transformace (ELT), které výrazně sníží náklady na údržbu řešení a urychlí implementaci nových funkcí do stávajících kanálů. Tyto zisky jsou způsobené tím, že parametrizace minimalizuje objem pevného kódování a zvyšuje počet opakovaně použitelných objektů a procesů v řešení.
Pokud s používáním parametrů služby Azure Data Factory v uživatelském rozhraní ADF začínáte, projděte si uživatelské rozhraní služby Data Factory, kde najdete odkazované služby s parametry a uživatelským rozhraním služby Data Factory, kde najdete vizuální vysvětlení v kanálu řízeném metadaty s parametry.
Pomocí parametrů můžete předávat externí hodnoty do kanálů, datových sad, propojených služeb a toků dat. Jakmile se parametr předá do prostředku, nelze ho změnit. Když parametrizujete prostředky, můžete je pokaždé znovu použít s různými hodnotami. Parametry lze použít jednotlivě nebo jako součást výrazů. Hodnoty JSON v definici můžou být literály nebo výrazy, které se vyhodnocují za běhu.
Příklad:
"name": "value"
nebo
"name": "@pipeline().parameters.password"
Výrazy se můžou objevit kdekoli v řetězcové hodnotě JSON a vždy vést k jiné hodnotě JSON. Tady je heslo parametrem kanálu ve výrazu. Pokud je hodnota JSON výrazem, text výrazu se extrahuje odebráním znaku at(@). Pokud je potřeba řetězec literálu, který začíná znakem @, musí být uchvácen pomocí @@. Následující příklady ukazují, jak se výrazy vyhodnocují.
Hodnota JSON | Výsledek |
---|---|
"parameters" | Vrátí se znaky "parameters". |
"parameters[1]" | Vrátí se znaky parameters[1]. |
"@@" | Vrátí se řetězec 1 znaku, který obsahuje znak @. |
" @" | Vrátí se řetězec 2 znaků, který obsahuje znak @. |
Výrazy se mohou objevit také uvnitř řetězců pomocí funkce označované jako interpolace řetězců, ve které jsou výrazy zabaleny @{ ... }
. Příklad: "name" : "First Name: @{pipeline().parameters.firstName} Last Name: @{pipeline().parameters.lastName}"
Pomocí interpolace řetězců je výsledkem vždy řetězec. Řekněme, že jsem definoval myNumber
jako 42
a myString
jako foo
:
Hodnota JSON | Výsledek |
---|---|
"@pipeline().parameters.myString" | Vrátí foo jako řetězec. |
"@{pipeline().parameters.myString}" | Vrátí foo jako řetězec. |
"@pipeline().parameters.myNumber" | Vrátí 42 jako číslo. |
"@{pipeline().parameters.myNumber}" | Vrátí 42 jako řetězec. |
"Odpověď je: @{pipeline().parameters.myNumber}" | Vrátí řetězec Answer is: 42 . |
"@concat('Answer is: ', string(pipeline().parameters.myNumber)" | Vrátí řetězec. Answer is: 42 |
"Odpověď je: @@{pipeline().parameters.myNumber}" | Vrátí řetězec Answer is: @{pipeline().parameters.myNumber} . |
Následující příklad ukazuje složitý příklad, který odkazuje na hluboké dílčí pole výstupu aktivity. Pokud chcete odkazovat na parametr kanálu, který se vyhodnotí jako dílčí pole, použijte místo operátoru tečk(.) syntaxi [] (jako v případě dílčího pole1 a dílčího pole2).
@activity('*activityName*').output.*subfield1*.*subfield2*[pipeline().parameters.*subfield3*].*subfield4*
Editor dynamického obsahu po dokončení úprav automaticky uchytá znaky v obsahu. Například následující obsah v editoru obsahu je interpolace řetězců se dvěma funkcemi výrazů.
{
"type": "@{if(equals(1, 2), 'Blob', 'Table' )}",
"name": "@{toUpper('myData')}"
}
Editor dynamického obsahu převede nad obsah na výraz "{ \n \"type\": \"@{if(equals(1, 2), 'Blob', 'Table' )}\",\n \"name\": \"@{toUpper('myData')}\"\n}"
. Výsledkem tohoto výrazu je řetězec formátu JSON uvedený níže.
{
"type": "Table",
"name": "MYDATA"
}
V následujícím příkladu přebírá blobDataset parametr pojmenovanou cestu. Jeho hodnota se používá k nastavení hodnoty vlastnosti folderPath pomocí výrazu: dataset().path
.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": "@dataset().path"
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
V následujícím příkladu kanál přebírá parametry inputPath a outputPath . Cesta pro parametrizovanou datovou sadu objektů blob je nastavena pomocí hodnot těchto parametrů. Syntaxe použitá tady je: 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"
}
}
}
}
Funkce můžete volat ve výrazech. Následující části obsahují informace o funkcích, které lze použít ve výrazu.
Pro práci s řetězci můžete použít tyto řetězcové funkce a také některé funkce kolekce. Řetězcové funkce fungují jenom na řetězcích.
Řetězcová funkce | Úloha |
---|---|
concat | Zkombinujte dva nebo více řetězců a vraťte sloučený řetězec. |
endsWith | Zkontrolujte, jestli řetězec končí zadaným podřetězcem. |
identifikátor guid | Vygenerujte globálně jedinečný identifikátor (GUID) jako řetězec. |
indexOf | Vrátí počáteční pozici podřetězdce. |
lastIndexOf | Vrátí počáteční pozici posledního výskytu podřetězdce. |
replace | Nahraďte podřetězce zadaným řetězcem a vraťte aktualizovaný řetězec. |
split | Vrátí pole, které obsahuje podřetězce oddělené čárkami, od většího řetězce založeného na zadaném znaku oddělovače v původním řetězci. |
startsWith | Zkontrolujte, jestli řetězec začíná určitým podřetězcem. |
podřetězec | Vrátí znaky z řetězce počínaje zadanou pozicí. |
toLower | Vrátí řetězec ve formátu malými písmeny. |
toUpper | Vrátí řetězec ve formátu velkými písmeny. |
zastřihnout | Odeberte počáteční a koncové prázdné znaky z řetězce a vraťte aktualizovaný řetězec. |
Pokud chcete pracovat s kolekcemi, obecně polemi, řetězci a někdy slovníky, můžete tyto funkce kolekce používat.
Funkce Kolekce | Úloha |
---|---|
obsahuje | Zkontrolujte, jestli kolekce obsahuje konkrétní položku. |
empty | Zkontrolujte, jestli je kolekce prázdná. |
první | Vrátí první položku z kolekce. |
křižovatka | Vrátí kolekci, která obsahuje pouze společné položky v zadaných kolekcích. |
join | Vrátí řetězec, který obsahuje všechny položky z pole oddělené zadaným znakem. |
poslední | Vrátí poslední položku z kolekce. |
length | Vrátí počet položek v řetězci nebo poli. |
přeskočit | Odeberte položky z přední části kolekce a vraťte všechny ostatní položky. |
vzít | Vrátí položky z přední části kolekce. |
svaz | Vrátí kolekci, která obsahuje všechny položky ze zadaných kolekcí. |
Tyto funkce jsou užitečné v podmínkách, lze je použít k vyhodnocení libovolného typu logiky.
Logická funkce porovnání | Úloha |
---|---|
and | Zkontrolujte, jestli jsou všechny výrazy pravdivé. |
equals | Zkontrolujte, jestli jsou obě hodnoty ekvivalentní. |
greater | Zkontrolujte, jestli je první hodnota větší než druhá hodnota. |
greaterOrEquals | Zkontrolujte, jestli je první hodnota větší nebo rovna druhé hodnotě. |
když | Zkontrolujte, jestli je výraz pravdivý nebo nepravda. Na základě výsledku vrátí zadanou hodnotu. |
less | Zkontrolujte, jestli je první hodnota menší než druhá hodnota. |
lessOrEquals | Zkontrolujte, jestli je první hodnota menší nebo rovna druhé hodnotě. |
not | Zkontrolujte, jestli je výraz nepravda. |
nebo | Zkontrolujte, jestli je alespoň jeden výraz pravdivý. |
Tyto funkce slouží k převodu mezi jednotlivými nativními typy v jazyce:
- string
- integer
- float (číslo s plovoucí řádovou čárkou)
- boolean
- pole
- slovníky
Převodní funkce | Úloha |
---|---|
pole | Vrátí pole z jednoho zadaného vstupu. Více vstupů naleznete v tématu createArray. |
base64 | Vrátí verzi zakódovanou v base64 pro řetězec. |
base64ToBinary | Vrátí binární verzi řetězce s kódováním base64. |
base64ToString | Vrátí verzi řetězce pro řetězec kódovaný v base64. |
binární | Vrátí binární verzi pro vstupní hodnotu. |
bool | Vrátí logickou verzi pro vstupní hodnotu. |
splynout | Vrátí první hodnotu, která není null, z jednoho nebo více parametrů. |
createArray | Vrátí pole z více vstupů. |
identifikátor dataURI | Vrátí identifikátor URI dat pro vstupní hodnotu. |
dataUriToBinary | Vrátí binární verzi identifikátoru URI dat. |
dataUriToString | Vrátí verzi řetězce pro identifikátor URI dat. |
decodeBase64 | Vrátí verzi řetězce pro řetězec kódovaný v base64. |
decodeDataUri | Vrátí binární verzi identifikátoru URI dat. |
decodeUriComponent | Vrátí řetězec, který nahradí řídicí znaky dekódovanými verzemi. |
encodeUriComponent | Vrátí řetězec, který nahradí nebezpečné znaky adresy URL řídicími znaky. |
float | Vrátí číslo s plovoucí desetinou čárkou pro vstupní hodnotu. |
int | Vrátí celočíselnou verzi řetězce. |
json | Vrátí hodnotu typu JSON (JavaScript Object Notation) nebo objekt pro řetězec nebo XML. |
string | Vrátí verzi řetězce pro vstupní hodnotu. |
uriComponent | Vrátí verzi zakódovanou identifikátorem URI pro vstupní hodnotu nahrazením nebezpečných znaků adresy URL řídicími znaky. |
uriComponentToBinary | Vrátí binární verzi řetězce kódovaného identifikátorem URI. |
uriComponentToString | Vrátí verzi řetězce pro řetězec kódovaný identifikátorem URI. |
xml | Vrátí verzi XML pro řetězec. |
xpath | Zkontrolujte kód XML pro uzly nebo hodnoty, které odpovídají výrazu XPath (XML Path Language) a vrátí odpovídající uzly nebo hodnoty. |
Tyto funkce lze použít pro některý z typů čísel: celá čísla a float.
Matematické funkce | Úloha |
---|---|
add | Vrátí výsledek sčítání dvou čísel. |
div | Vrátí výsledek dělení dvou čísel. |
Max | Vrátí nejvyšší hodnotu ze sady čísel nebo pole. |
Min | Vrátí nejnižší hodnotu ze sady čísel nebo pole. |
zkratka modulo | Vrátí zbytek od dělení dvou čísel. |
mul | Vrátí součin od vynásobení dvou čísel. |
rand | Vrátí náhodné celé číslo ze zadaného rozsahu. |
range | Vrátí celočíselnou matici, která začíná zadaným celočíselnou hodnotou. |
pod | Vrátí výsledek od odečtení druhého čísla od prvního čísla. |
Funkce data nebo času | Úloha |
---|---|
addDays | Přidejte do časového razítka počet dní. |
addHours | Přidejte do časového razítka počet hodin. |
addMinutes | Přidejte do časového razítka několik minut. |
addSeconds | Přidejte do časového razítka několik sekund. |
addToTime | Přidejte do časového razítka řadu časových jednotek. Viz také getFutureTime. |
convertFromUtc | Převeďte časové razítko z standardu UTC (Universal Time Coordinated) na cílové časové pásmo. |
convertTimeZone | Převeďte časové razítko ze zdrojového časového pásma na cílové časové pásmo. |
convertToUtc | Převeďte časové razítko ze zdrojového časového pásma na standard UTC (Universal Time Coordinated). |
denOfMonth | Vrátí den součásti měsíce z časového razítka. |
denOfWeek | Vrátí součást dne v týdnu z časového razítka. |
denOfYear | Vrátí den v roce z časového razítka. |
formatDateTime | Vrátí časové razítko jako řetězec ve volitelném formátu. |
getFutureTime | Vrátí aktuální časové razítko a zadané časové jednotky. Viz také addToTime. |
getPastTime | Vrátí aktuální časové razítko minus zadané časové jednotky. Viz také odečítáníFromTime. |
startOfDay | Vrátí začátek dne pro časové razítko. |
startOfHour | Vrátí začátek hodiny pro časové razítko. |
startOfMonth | Vrátí začátek měsíce pro časové razítko. |
odečístFromTime | Odečte počet časových jednotek od časového razítka. Viz také getPastTime. |
tiká | ticks Vrátí hodnotu vlastnosti pro zadané časové razítko. |
UtcNow | Vrátí aktuální časové razítko jako řetězec. |
Tento kurz předávání parametrů kanálu kopírování služby Azure Data Factory vás provede předáním parametrů mezi kanálem a aktivitou i mezi aktivitami.
Postupujte podle mapování toku dat s parametry , které poskytují komplexní příklad použití parametrů v toku dat.
Pokud chcete získat další informace o tom, jak pomocí parametrů navrhovat kanály řízené metadaty, postupujte podle parametrů . Toto je oblíbený případ použití parametrů.
Seznam systémových proměnných, které můžete použít ve výrazech, najdete v tématu Systémové proměnné.