If Condition activity in Azure Data Factory and Synapse Analytics pipelines
A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics
Tipp.
Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!
Az If Condition tevékenység ugyanazokat a funkciókat biztosítja, mint a programnyelvek if utasítása. Egy tevékenységkészletet hajt végre, amikor a feltétel kiértékeli, true
és egy másik tevékenységkészletet, amikor a feltétel kiértékelése a következőre false
történik.
If Condition tevékenység létrehozása felhasználói felülettel
Ha if condition tevékenységet szeretne használni egy folyamatban, hajtsa végre a következő lépéseket:
Keresse meg a Ha lehetőséget a folyamattevékenységek panelen, és húzzon egy If Condition tevékenységet a folyamatvászonra.
Ha még nincs kijelölve, jelölje ki az új If Condition tevékenységet a vásznon, és a Tevékenységek fület a részleteinek szerkesztéséhez.
Adjon meg egy kifejezést, amely logikai igaz vagy hamis értéket ad vissza. Ez lehet dinamikus kifejezések, függvények, rendszerváltozók vagy más tevékenységek kimenetei bármilyen kombinációja.
Válassza a Tevékenységek szerkesztése gombot a Ha feltétel Tevékenység lapján, vagy közvetlenül a folyamatvászon If Feltétel lapján, ha olyan tevékenységeket szeretne hozzáadni, amelyek akkor lesznek végrehajtva, amikor a kifejezés kiértékeli a feltételt
true
.false
Syntax
{
"name": "<Name of the activity>",
"type": "IfCondition",
"typeProperties": {
"expression": {
"value": "<expression that evaluates to true or false>",
"type": "Expression"
},
"ifTrueActivities": [
{
"<Activity 1 definition>"
},
{
"<Activity 2 definition>"
},
{
"<Activity N definition>"
}
],
"ifFalseActivities": [
{
"<Activity 1 definition>"
},
{
"<Activity 2 definition>"
},
{
"<Activity N definition>"
}
]
}
}
Típustulajdonságok
Tulajdonság | Leírás | Megengedett értékek | Szükséges |
---|---|---|---|
név | Az if-condition tevékenység neve. | Sztring | Igen |
típus | IfCondition értékre kell állítani | Sztring | Igen |
kifejezés | Igaz vagy hamis értékre kiértékelendő kifejezés | Kifejezés eredménytípusú logikai értékekkel | Igen |
ifTrueActivities | A kifejezés kiértékelésekor végrehajtott tevékenységek halmaza true . |
Tömb | Igen |
ifFalseActivities | A kifejezés kiértékelésekor végrehajtott tevékenységek halmaza false . |
Tömb | Igen |
Példa
A példában szereplő folyamat adatokat másol egy bemeneti mappából egy kimeneti mappába. A kimeneti mappát a folyamatparaméter értéke határozza meg: routeSelection. Ha az routeSelection értéke igaz, az adatok át lesznek másolva az outputPath1 fájlba. Ha pedig az routeSelection értéke hamis, az adatok át lesznek másolva az outputPath2 fájlba.
Feljegyzés
Ez a szakasz JSON-definíciókat és PowerShell-mintaparancsokat tartalmaz a folyamat futtatásához. A folyamat Azure PowerShell- és JSON-definíciókkal történő létrehozásához szükséges részletes útmutatást az alábbi oktatóanyagban találja : adat-előállító létrehozása az Azure PowerShell használatával.
Folyamat IF-Condition tevékenységgel (Adfv2QuickStartPipeline.json)
{
"name": "Adfv2QuickStartPipeline",
"properties": {
"activities": [
{
"name": "MyIfCondition",
"type": "IfCondition",
"typeProperties": {
"expression": {
"value": "@bool(pipeline().parameters.routeSelection)",
"type": "Expression"
},
"ifTrueActivities": [
{
"name": "CopyFromBlobToBlob1",
"type": "Copy",
"inputs": [
{
"referenceName": "BlobDataset",
"parameters": {
"path": "@pipeline().parameters.inputPath"
},
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "BlobDataset",
"parameters": {
"path": "@pipeline().parameters.outputPath1"
},
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "BlobSource"
},
"sink": {
"type": "BlobSink"
}
}
}
],
"ifFalseActivities": [
{
"name": "CopyFromBlobToBlob2",
"type": "Copy",
"inputs": [
{
"referenceName": "BlobDataset",
"parameters": {
"path": "@pipeline().parameters.inputPath"
},
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "BlobDataset",
"parameters": {
"path": "@pipeline().parameters.outputPath2"
},
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "BlobSource"
},
"sink": {
"type": "BlobSink"
}
}
}
]
}
}
],
"parameters": {
"inputPath": {
"type": "String"
},
"outputPath1": {
"type": "String"
},
"outputPath2": {
"type": "String"
},
"routeSelection": {
"type": "String"
}
}
}
}
Egy másik példa a kifejezésre:
"expression": {
"value": "@equals(pipeline().parameters.routeSelection,1)",
"type": "Expression"
}
Azure Storage társított szolgáltatás (AzureStorageLinkedService.json)
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
}
}
}
Paraméteres Azure Blob-adatkészlet (BlobDataset.json)
A folyamat azPath mappát a folyamat outputPath1 vagy outputPath2 paraméterének értékére állítja be.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": {
"value": "@{dataset().path}",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
JSON folyamatparaméter (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath1": "adftutorial/outputIf",
"outputPath2": "adftutorial/outputElse",
"routeSelection": "false"
}
PowerShell-parancsok
Feljegyzés
Javasoljuk, hogy az Azure Az PowerShell modult használja az Azure-ral való interakcióhoz. Első lépésként tekintse meg az Azure PowerShell telepítését ismertető témakört. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.
Ezek a parancsok feltételezik, hogy a JSON-fájlokat a C:\ADF mappába mentette.
Connect-AzAccount
Select-AzSubscription "<Your subscription name>"
$resourceGroupName = "<Resource Group Name>"
$dataFactoryName = "<Data Factory Name. Must be globally unique>";
Remove-AzDataFactoryV2 $dataFactoryName -ResourceGroupName $resourceGroupName -force
Set-AzDataFactoryV2 -ResourceGroupName $resourceGroupName -Location "East US" -Name $dataFactoryName
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureStorageLinkedService" -DefinitionFile "C:\ADF\AzureStorageLinkedService.json"
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "BlobDataset" -DefinitionFile "C:\ADF\BlobDataset.json"
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "Adfv2QuickStartPipeline" -DefinitionFile "C:\ADF\Adfv2QuickStartPipeline.json"
$runId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineName "Adfv2QuickStartPipeline" -ParameterFile C:\ADF\PipelineParameters.json
while ($True) {
$run = Get-AzDataFactoryV2PipelineRun -ResourceGroupName $resourceGroupName -DataFactoryName $DataFactoryName -PipelineRunId $runId
if ($run) {
if ($run.Status -ne 'InProgress') {
Write-Host "Pipeline run finished. The status is: " $run.Status -foregroundcolor "Yellow"
$run
break
}
Write-Host "Pipeline is running...status: InProgress" -foregroundcolor "Yellow"
}
Start-Sleep -Seconds 30
}
Write-Host "Activity run details:" -foregroundcolor "Yellow"
$result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $runId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30)
$result
Write-Host "Activity 'Output' section:" -foregroundcolor "Yellow"
$result.Output -join "`r`n"
Write-Host "\nActivity 'Error' section:" -foregroundcolor "Yellow"
$result.Error -join "`r`n"
Kapcsolódó tartalom
Lásd az egyéb támogatott vezérlési folyamatokat: