Udostępnij za pośrednictwem


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.

Aby uzyskać listę zmiennych systemowych, których można używać w wyrażeniach, zobacz Zmienne systemowe.