Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 datovou vědu, analýzy v reálném čase, obchodní inteligenci 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í.
Uživatelské rozhraní a parametry služby Azure Data Factory
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 pro odkazované služby s parametry a uživatelské rozhraní služby Data Factory pro metadaty řízený kanál s parametry pro vizuální vysvětlení.
Koncepty parametrů a výrazů
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í při běhu programu.
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 doslovný řetězec, který začíná znakem @, musí být escapován pomocí @@. Následující příklady ukazují, jak se výrazy vyhodnocují.
Hodnota JSON | Výsledek |
---|---|
parametry | Vrátí se znaky 'parameters'. |
parametry[1] | Vrátí se znaky 'parameters[1]'. |
"@@" | Je vrácen řetězec o délce jednoho 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} . |
Příklady použití parametrů ve výrazech
Příklad komplexního výrazu
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 potrubí, který se vyhodnotí jako podpole, použijte syntaxi [] namísto operátoru tečka (.) (například v případě podpole1 a podpole2).
@activity('*activityName*').output.*subfield1*.*subfield2*[pipeline().parameters.*subfield3*].*subfield4*
Editor dynamického obsahu
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 výše uvedený 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 zobrazený níže.
{
"type": "Table",
"name": "MYDATA"
}
Datová sada s parametry
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"
}
}
}
}
Potrubí s parametry
V následujícím příkladu přebírá pipeline parametry inputPath a outputPath. Cesta pro parametrizovanou datovou sadu 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"
}
}
}
}
Volání funkcí ve výrazech
Funkce můžete volat ve výrazech. Následující části obsahují informace o funkcích, které lze použít ve výrazu.
Funkce řetězců
Pro práci s řetězci můžete použít tyto řetězcové funkce a také některé funkce kolekcí. Řetězcové funkce fungují jenom na řetězcích.
Funkce řetězce | Ú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. |
GUID | Vygenerujte globálně jedinečný identifikátor (GUID) jako řetězec. |
indexOf | Vrátit počáteční pozici podřetězce. |
lastIndexOf | Vrátí se počáteční pozice posledního výskytu podřetězce. |
nahradit | 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. |
začíná s | 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 | Odstraňte počáteční a koncové prázdné znaky z řetězce a vraťte aktualizovaný řetězec. |
Funkce kolekcí
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. |
prázdný | 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. |
připojit | 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. |
délka | 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. |
unie | Vrátí kolekci, která obsahuje všechny položky ze zadaných kolekcí. |
Logické funkce
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é. |
rovná se | Zkontrolujte, jestli jsou obě hodnoty ekvivalentní. |
větší | Zkontrolujte, jestli je první hodnota větší než druhá hodnota. |
větší nebo rovno | 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. |
méně | Zkontrolujte, jestli je první hodnota menší než druhá hodnota. |
menší nebo rovno | Zkontrolujte, jestli je první hodnota menší nebo rovna druhé hodnotě. |
ne | Zkontrolujte, jestli je výraz nepravda. |
nebo | Zkontrolujte, jestli je alespoň jeden výraz pravdivý. |
Převodní funkce
Tyto funkce slouží k převodu mezi jednotlivými nativními typy v jazyce:
- řetězec
- integer
- float (plovoucí desetinná čárka)
- booleovský
- pole
- slovníky
Převodní funkce | Úloha |
---|---|
pole | Vrátí pole z jednoho zadaného vstupu. Pro více vstupů viz createArray. |
base64 | Vrátí verzi zakódovanou v base64 pro řetězec. |
base64ToBinary | Vrátit binární verzi řetězce zakódovaného pomocí base64. |
base64ToString | Vrať textovou podobu pro řetězec zakódovaný v base64. |
binární | Vrátit binární podobu zadané hodnoty. |
Bool | Vrátí logickou verzi pro vstupní hodnotu. |
sloučit | Vrátí první hodnotu, která není null, z jednoho nebo více parametrů. |
createArray | Vrátíme pole z více vstupů. |
dataURI | Vrátí datový URI pro vstupní hodnotu. |
dataUriToBinary | Vrátí binární verzi identifikátoru URI dat. |
dataUriToString | Vrátí řetězcovou verzi pro data URI. |
decodeBase64 | Vrať textovou podobu pro řetězec zakódovaný v base64. |
decodeDataUri | Vraťte binární verzi datového URI. |
decodeUriComponent | Vrátí řetězec, který nahradí escape sekvence dekódovanými verzemi. |
encodeUriComponent | Vrátí řetězec, který nahradí znaky, které nejsou bezpečné pro URL, escape sekvencemi. |
plout | Vrátí číslo s plovoucí desetinnou čárkou pro vstupní hodnotu. |
Int | Vrátí celočíselnou verzi pro řetězec. |
json | Vrátí hodnotu typu JSON (JavaScript Object Notation) nebo objekt pro řetězec nebo XML. |
řetězec | Vrátí verzi řetězce pro vstupní hodnotu. |
uriComponent | Vrátí verzi zakódovanou ve formátu URI pro vstupní hodnotu tím, že nebezpečné znaky pro URL nahradí escapovacími znaky. |
uriComponentToBinary | Vrátí binární verzi řetězce kódovaného identifikátorem URI. |
uriComponentToString | Vrátí textovou verzi pro URI-kódovaný řetězec. |
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. |
Matematické funkce
Tyto funkce lze použít pro některý z typů čísel: celá čísla a float.
Matematické funkce | Úloha |
---|---|
přidat | 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. |
mod | Vrátí zbytek z 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. |
Datumové funkce
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. |
převéstNaUtc | Převeďte časové razítko ze zdrojového časového pásma na standard UTC (Universal Time Coordinated). |
denMěsíce | Vrátí den součásti měsíce z časového razítka. |
den týdne | Vrátí součást dne v týdnu z časového razítka. |
denOfYear | Vrátí den roku z časové značky. |
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é subtractFromTime. |
startOfDay | Vrátí začátek dne podle časové značky. |
startOfHour | Vrátí začátek hodiny na časovém razítku. |
startOfMonth | Vrátit začátek měsíce pro časové razítko. |
odečístOdČasu | Odečte počet časových jednotek od časového razítka. Viz také getPastTime. |
klíšťata | Vrátí hodnotu vlastnosti ticks pro zadané časové razítko. |
UtcNow | Vrátí aktuální časové razítko jako řetězec. |
Podrobné příklady pro praxi
Podrobný kanál kopírování služby Azure Data Factory s parametry
Tento návod k předávání parametrů v kopírovacím kanálu služby Azure Data Factory vás provede tím, jak předat parametry mezi kanálem a aktivitou, a také mezi aktivitami.
Podrobný proces mapování toku dat s parametry
Postupujte podle mapování toku dat s parametry , které poskytují komplexní příklad použití parametrů v toku dat.
Podrobný proces řízený metadaty s parametry
Pokud chcete získat další informace o tom, jak pomocí parametrů navrhovat kanály řízené metadaty, postupujte podle Kanál řízený metadaty s parametry. Toto je oblíbený případ použití parametrů.
Související obsah
Seznam systémových proměnných, které můžete použít ve výrazech, najdete v tématu Systémové proměnné.