Jak używać parametrów, wyrażeń i funkcji w usłudze Azure Data Factory
DOTYCZY: Azure Data Factory Azure Synapse Analytics
Napiwek
Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !
W tym dokumencie skupimy się przede wszystkim na poznaniu podstawowych pojęć z różnymi przykładami, aby poznać możliwość tworzenia sparametryzowanych potoków danych w usłudze Azure Data Factory. Parametryzacje i wyrażenia dynamiczne są takie istotne dodatki do usługi ADF, ponieważ mogą zaoszczędzić ogromny czas i umożliwić znacznie bardziej elastyczne wyodrębnianie, przekształcanie, ładowanie (ETL) lub wyodrębnianie, ładowanie, przekształcanie (ELT), co znacznie zmniejszy koszty konserwacji rozwiązania i przyspieszy implementację nowych funkcji w istniejących potokach. Te zyski są spowodowane tym, że parametryzacja minimalizuje ilość kodowania twardego i zwiększa liczbę obiektów i procesów wielokrotnego użytku w rozwiązaniu.
Interfejs użytkownika i parametry usługi Azure Data Factory
Jeśli dopiero zaczynasz korzystać z parametrów usługi Azure Data Factory w interfejsie użytkownika usługi ADF, zapoznaj się z tematem Interfejs użytkownika usługi Data Factory dla połączonych usług z parametrami i interfejsem użytkownika usługi Data Factory dla potoku opartego na metadanych z parametrami w celu uzyskania wizualnego wyjaśnienia.
Pojęcia dotyczące parametrów i wyrażeń
Parametry umożliwiają przekazywanie wartości zewnętrznych do potoków, zestawów danych, połączonych usług i przepływów danych. Po przekazaniu parametru do zasobu nie można go zmienić. Parametryzując zasoby, można użyć ich ponownie z różnymi wartościami za każdym razem. Parametry mogą być używane indywidualnie lub jako część wyrażeń. Wartości JSON w definicji mogą być literałami lub wyrażeniami, które są oceniane w czasie wykonywania.
Na przykład:
"name": "value"
lub
"name": "@pipeline().parameters.password"
Wyrażenia mogą być wyświetlane w dowolnym miejscu w wartości ciągu JSON i zawsze powodować inną wartość JSON. Tutaj hasło jest parametrem potoku w wyrażeniu. Jeśli wartość JSON jest wyrażeniem, treść wyrażenia jest wyodrębniona przez usunięcie znaku at-sign (@). Jeśli potrzebny jest ciąg literału rozpoczynający się od @, należy go użyć przy użyciu @@. W poniższych przykładach pokazano, jak są oceniane wyrażenia.
Wartość JSON | Result |
---|---|
"parameters" (parametry) | Zwracane są znaki "parameters". |
"parameters[1]" | Zwracane są znaki "parameters[1]". |
"@@" | Zwracany jest 1 ciąg znaków zawierający znak "@". |
" @" | Zwracany jest 2-znakowy ciąg zawierający znak @. |
Wyrażenia mogą również pojawiać się wewnątrz ciągów przy użyciu funkcji nazywanej interpolacją ciągów, w której wyrażenia są opakowane w @{ ... }
. Na przykład: "name" : "First Name: @{pipeline().parameters.firstName} Last Name: @{pipeline().parameters.lastName}"
.
Przy użyciu interpolacji ciągów wynik jest zawsze ciągiem. Załóżmy, że zdefiniowałem myNumber
jako i myString
jako 42
foo
:
Wartość JSON | Result |
---|---|
"@pipeline().parameters.myString" | Zwraca foo jako ciąg. |
"@{pipeline().parameters.myString}" | Zwraca foo jako ciąg. |
"@pipeline().parameters.myNumber" | Zwraca 42 jako liczbę. |
"@{pipeline().parameters.myNumber}" | Zwraca 42 jako ciąg. |
"Odpowiedź brzmi: @{pipeline().parameters.myNumber}" | Zwraca ciąg Answer is: 42 . |
"@concat('Odpowiedź brzmi: ', string(pipeline().parameters.myNumber))" | Zwraca ciąg Answer is: 42 |
"Odpowiedź brzmi: @@{pipeline().parameters.myNumber}" | Zwraca ciąg Answer is: @{pipeline().parameters.myNumber} . |
Przykłady użycia parametrów w wyrażeniach
Przykład wyrażenia złożonego
Poniższy przykład przedstawia złożony przykład, który odwołuje się do głębokiego pola podrzędnego danych wyjściowych działań. Aby odwołać się do parametru potoku, który oblicza pole podrzędne, użyj składni [] zamiast operatora dot(.) (tak jak w przypadku podpola1 i podpola2)
@activity('*activityName*').output.*subfield1*.*subfield2*[pipeline().parameters.*subfield3*].*subfield4*
Edytor zawartości dynamicznej
Edytor zawartości dynamicznej automatycznie usuwa znaki w zawartości po zakończeniu edycji. Na przykład następująca zawartość w edytorze zawartości to interpolacja ciągów z dwiema funkcjami wyrażeń.
{
"type": "@{if(equals(1, 2), 'Blob', 'Table' )}",
"name": "@{toUpper('myData')}"
}
Dynamiczny edytor zawartości konwertuje powyższą zawartość na wyrażenie "{ \n \"type\": \"@{if(equals(1, 2), 'Blob', 'Table' )}\",\n \"name\": \"@{toUpper('myData')}\"\n}"
. Wynikiem tego wyrażenia jest ciąg formatu JSON pokazany poniżej.
{
"type": "Table",
"name": "MYDATA"
}
Zestaw danych z parametrami
W poniższym przykładzie zestaw blobDataset przyjmuje parametr o nazwie path. Jego wartość służy do ustawiania wartości dla właściwości folderPath przy użyciu wyrażenia: dataset().path
.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": "@dataset().path"
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
Potok z parametrami
W poniższym przykładzie potok przyjmuje parametry inputPath i outputPath . Ścieżka sparametryzowanego zestawu danych obiektów blob jest ustawiana przy użyciu wartości tych parametrów. Składnia używana tutaj to: 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"
}
}
}
}
Wywoływanie funkcji w wyrażeniach
Funkcje można wywoływać w wyrażeniach. Poniższe sekcje zawierają informacje o funkcjach, które mogą być używane w wyrażeniu.
Funkcje ciągów
Aby pracować z ciągami, możesz użyć tych funkcji ciągów, a także niektórych funkcji kolekcji. Funkcje ciągów działają tylko na ciągach.
Funkcja ciągu | Zadanie |
---|---|
concat | Połącz co najmniej dwa ciągi i zwróć połączony ciąg. |
endsWith | Sprawdź, czy ciąg kończy się określonym podciągem. |
guid | Wygeneruj unikatowy identyfikator globalny (GUID) jako ciąg. |
indexOf | Zwróć pozycję początkową dla podciągów. |
lastIndexOf | Zwróć pozycję początkową ostatniego wystąpienia podciągów. |
replace | Zastąp podciąg określonym ciągiem i zwróć zaktualizowany ciąg. |
split | Zwraca tablicę zawierającą podciągi oddzielone przecinkami od większego ciągu na podstawie określonego znaku ogranicznika w oryginalnym ciągu. |
startsWith | Sprawdź, czy ciąg rozpoczyna się od określonego podciągu. |
Podciąg | Zwraca znaki z ciągu, zaczynając od określonej pozycji. |
toLower | Zwraca ciąg w formacie małych liter. |
toUpper | Zwraca ciąg w formacie wielkiej litery. |
przycinać | Usuń białe znaki wiodące i końcowe z ciągu i zwróć zaktualizowany ciąg. |
Funkcje odbioru
Aby pracować z kolekcjami, zazwyczaj tablicami, ciągami, a czasami słownikami, można użyć tych funkcji kolekcji.
Funkcja Collection | Zadanie |
---|---|
Contains | Sprawdź, czy kolekcja ma określony element. |
empty | Sprawdź, czy kolekcja jest pusta. |
pierwszy | Zwróć pierwszy element z kolekcji. |
skrzyżowanie | Zwróć kolekcję zawierającą tylko wspólne elementy w określonych kolekcjach. |
join | Zwróć ciąg zawierający wszystkie elementy z tablicy oddzielone określonym znakiem. |
ostatni | Zwróć ostatni element z kolekcji. |
length | Zwraca liczbę elementów w ciągu lub tablicy. |
pominąć | Usuń elementy z przodu kolekcji i zwróć wszystkie inne elementy. |
brać | Zwracanie elementów z przodu kolekcji. |
unia | Zwróć kolekcję zawierającą wszystkie elementy z określonych kolekcji. |
Funkcje logiczne
Te funkcje są przydatne wewnątrz warunków, mogą służyć do oceny dowolnego typu logiki.
Funkcja porównania logicznego | Zadanie |
---|---|
and | Sprawdź, czy wszystkie wyrażenia są prawdziwe. |
equals | Sprawdź, czy obie wartości są równoważne. |
greater | Sprawdź, czy pierwsza wartość jest większa niż druga wartość. |
greaterOrEquals | Sprawdź, czy pierwsza wartość jest większa, czy równa drugiej wartości. |
jeśli | Sprawdź, czy wyrażenie ma wartość true, czy false. Na podstawie wyniku zwróć określoną wartość. |
less | Sprawdź, czy pierwsza wartość jest mniejsza niż druga wartość. |
lessOrEquals | Sprawdź, czy pierwsza wartość jest mniejsza, czy równa drugiej wartości. |
nie | Sprawdź, czy wyrażenie jest fałszywe. |
or | Sprawdź, czy co najmniej jedno wyrażenie ma wartość true. |
Funkcje konwersji
Te funkcje są używane do konwertowania między poszczególnymi typami natywnymi w języku:
- string
- integer
- liczba zmiennoprzecinkowa
- boolean
- Tablice
- Słowniki
Funkcja konwersji | Zadanie |
---|---|
tablica | Zwraca tablicę z jednego określonego danych wejściowych. Aby uzyskać wiele danych wejściowych, zobacz createArray. |
base64 | Zwróć wersję zakodowaną w formacie base64 dla ciągu. |
base64ToBinary | Zwróć wersję binarną dla ciągu zakodowanego w formacie base64. |
base64ToString | Zwraca wersję ciągu dla ciągu zakodowanego w formacie base64. |
dwójkowy | Zwraca wersję binarną dla wartości wejściowej. |
bool | Zwróć wersję logiczną dla wartości wejściowej. |
Łączonej | Zwraca pierwszą wartość inną niż null z co najmniej jednego parametru. |
createArray | Zwraca tablicę z wielu danych wejściowych. |
dataUri | Zwraca identyfikator URI danych dla wartości wejściowej. |
dataUriToBinary | Zwróć wersję binarną identyfikatora URI danych. |
dataUriToString | Zwróć wersję ciągu dla identyfikatora URI danych. |
dekodujBase64 | Zwraca wersję ciągu dla ciągu zakodowanego w formacie base64. |
decodeDataUri | Zwróć wersję binarną identyfikatora URI danych. |
decodeUriComponent | Zwraca ciąg, który zastępuje znaki ucieczki dekodowanym wersjami. |
encodeUriComponent | Zwróć ciąg, który zastępuje znaki niebezpieczne adresu URL znakami ucieczki. |
float | Zwraca liczbę zmiennoprzecinkową dla wartości wejściowej. |
int | Zwróć wersję całkowitą dla ciągu. |
JSON | Zwróć wartość typu JavaScript Object Notation (JSON) lub obiekt dla ciągu lub XML. |
string | Zwraca wersję ciągu dla wartości wejściowej. |
uriComponent | Zwróć wersję zakodowaną w formacie URI dla wartości wejściowej, zastępując znaki niebezpieczne adresu URL znakami ucieczki. |
uriComponentToBinary | Zwróć wersję binarną dla ciągu zakodowanego identyfikatorem URI. |
uriComponentToString | Zwróć wersję ciągu dla ciągu zakodowanego identyfikatorem URI. |
xml | Zwróć wersję XML dla ciągu. |
xpath | Sprawdź kod XML dla węzłów lub wartości, które są zgodne z wyrażeniem XPath (XML Path Language) i zwraca pasujące węzły lub wartości. |
Funkcje matematyczne
Te funkcje mogą być używane w przypadku obu typów liczb: liczb całkowitych i zmiennoprzecinkowych.
Math, funkcja | Zadanie |
---|---|
add | Zwróć wynik z dodania dwóch liczb. |
div | Zwróć wynik z dzielenia dwóch liczb. |
Max | Zwraca najwyższą wartość z zestawu liczb lub tablicy. |
Min | Zwraca najniższą wartość z zestawu liczb lub tablicy. |
mod | Zwróć resztę z dzielenia dwóch liczb. |
mul | Zwróć produkt z mnożenia dwóch liczb. |
rand | Zwraca losową liczbę całkowitą z określonego zakresu. |
range | Zwraca tablicę całkowitą rozpoczynającą się od określonej liczby całkowitej. |
Sub | Zwróć wynik odejmowania drugiej liczby z pierwszej liczby. |
Funkcje daty
Funkcja daty lub godziny | Zadanie |
---|---|
addDays | Dodaj liczbę dni do znacznika czasu. |
addHours | Dodaj liczbę godzin do znacznika czasu. |
addMinutes | Dodaj liczbę minut do znacznika czasu. |
addSeconds | Dodaj liczbę sekund do znacznika czasu. |
addToTime | Dodaj liczbę jednostek czasu do znacznika czasu. Zobacz również getFutureTime. |
convertFromUtc | Przekonwertuj znacznik czasu z uniwersalnego czasu koordynowanego (UTC) na docelową strefę czasową. |
convertTimeZone | Przekonwertuj znacznik czasu ze źródłowej strefy czasowej na docelową strefę czasową. |
convertToUtc | Przekonwertuj znacznik czasu ze źródłowej strefy czasowej na uniwersalny czas koordynowany (UTC). |
dayOfMonth | Zwróć dzień składnika miesiąca ze znacznika czasu. |
dayOfWeek | Zwróć dzień składnika tygodnia ze znacznika czasu. |
dayOfYear | Zwraca dzień składnika roku ze znacznika czasu. |
formatDateTime | Zwróć znacznik czasu jako ciąg w formacie opcjonalnym. |
getFutureTime | Zwróć bieżący znacznik czasu oraz określoną liczbę jednostek czasu. Zobacz również addToTime. |
getPastTime | Zwróć bieżący znacznik czasu minus określoną liczbę jednostek czasu. Zobacz również odejmowanieFromTime. |
startOfDay | Zwróć początek dnia dla znacznika czasu. |
startOfHour | Zwróć początek godziny dla znacznika czasu. |
startOfMonth | Zwróć początek miesiąca dla znacznika czasu. |
odejmowanieFromTime | Odejmij liczbę jednostek czasu z znacznika czasu. Zobacz również getPastTime. |
Kleszcze | ticks Zwraca wartość właściwości dla określonego znacznika czasu. |
utcNow | Zwraca bieżący znacznik czasu jako ciąg. |
Szczegółowe przykłady dotyczące praktyki
Szczegółowy potok kopiowania usługi Azure Data Factory z parametrami
Ten samouczek przekazywania parametru kopiowania potoku usługi Azure Data Factory przeprowadzi Cię przez proces przekazywania parametrów między potokiem i działaniem, a także między działaniami.
Szczegółowy potok przepływu mapowania danych z parametrami
Postępuj zgodnie z instrukcjami przepływu mapowania danych z parametrami , aby uzyskać kompleksowy przykład użycia parametrów w przepływie danych.
Szczegółowy potok oparty na metadanych z parametrami
Postępuj zgodnie z potokiem opartym na metadanych z parametrami , aby dowiedzieć się więcej o sposobie używania parametrów do projektowania potoków opartych na metadanych. Jest to popularny przypadek użycia parametrów.
Powiązana zawartość
Aby uzyskać listę zmiennych systemowych, których można używać w wyrażeniach, zobacz Zmienne systemowe.