نشاط If Condition في مصنع بيانات Azure ومسار Synapse Analytics

ينطبق على:Azure Data Factory Azure Synapse Analytics

تلميح

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

يوفر نشاط If Condition الوظيفة نفسها التي توفرها العبارة الشرطية في لغات الكمبيوتر. ينفذ مجموعة من الأنشطة عند تقييم الشرط إلى true ومجموعة أخرى من الأنشطة عند تقييم الشرط إلى false.

إنشاء نشاط If Condition باستخدام واجهة المستخدم

لاستخدام نشاط If Condition في البنية الأساسية لبرنامج ربط العمليات التجارية، أكمل الخطوات التالية:

  1. ابحث عن If في جزء أنشطة المسار، واسحب نشاط If Condition إلى لوحة البنية الأساسية لبرنامج ربط العمليات التجارية.

  2. حدد نشاط If Condition الجديد على اللوحة إذا لم يكن محددًا بالفعل، وعلامة التبويب Activities الخاصة به، لتحرير تفاصيله.

    Shows the UI for an If Condition activity.

  3. أدخل تعبيرًا يرجع قيمة منطقية صحيحة أو خطأ. يمكن أن يكون هذا أي مجموعة من التعبيرات أو الوظائفأو متغيرات النظامأو مخرجات الأنشطة الأخرى.

  4. حدد أزرار تحرير الأنشطة في علامة التبويب الأنشطة لـ If Condition، أو مباشرة من If Condition على لوحة البنية الأساسية لبرنامج ربط العمليات التجارية، لإضافة الأنشطة التي سيتم تنفيذها عند تقييم التعبير إلى true أو false.

بناء الجملة


{
    "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>"
            }
		    ]
    }
}

خصائص النوع

الخاصية ‏‏الوصف القيم المسموح بها المطلوب
الاسم اسم نشاط if-condition . السلسلة‬ ‏‏نعم‬
النوع يجب أن تُعين إلى IfCondition السلسلة‬ ‏‏نعم‬
تعبير التعبير الذي يجب تقييمه إلى صواب أو خطأ التعبير مع نوع النتيجة المنطقية ‏‏نعم‬
ifTrueActivities مجموعة الأنشطة التي تنفذ عند تقييم التعبير إلى true. صفيف ‏‏نعم‬
ifFalseActivities مجموعة الأنشطة التي تنفذ عند تقييم التعبير إلى false. صفيف ‏‏نعم‬

مثال

ينسخ المسار في هذا المثال البيانات من مجلد المدخلات إلى مجلد المخرجات. يتحدد مجلد المخرجات بواسطة قيمة معلمة المسار: routeSelection. إذا كانت قيمة routeSelection صحيحة، تُنسخ البيانات إلى outputPath1. وإذا كانت قيمة routeSelection غير صحيحة، تُنسخ البيانات إلى outputPath2.

إشعار

يقدم هذا القسم تعريفات JSON وعينة أوامر PowerShell لتشغيل المسار. للحصول على برامج معاينة مع إرشادات تدريجية لإنشاء مسار باستخدام تعريفات Azure PowerShell وJSON، راجع البرنامج التعليمي: إنشاء مصنع بيانات باستخدام Azure PowerShell.

مسار مع نشاط IF-Condition (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"
            }                        
        }
    }
}

مثال آخر للتعبير هو:

"expression":  {
    "value":  "@equals(pipeline().parameters.routeSelection,1)", 
    "type": "Expression"
}

خدمة تخزين Azure المرتبطة (AzureStorageLinkedService.json)

{
    "name": "AzureStorageLinkedService",
    "properties": {
        "type": "AzureStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
        }
    }
}

مجموعة بيانات Azure Blob ذات معلمات (BlobDataset.json)

يُعين المسارfolderPath إلى قيمة outputPath1 أو outputPath2 معلمة المسار.

{
    "name": "BlobDataset",
    "properties": {
        "type": "AzureBlob",
        "typeProperties": {
            "folderPath": {
                "value": "@{dataset().path}",
                "type": "Expression"
            }
        },
        "linkedServiceName": {
            "referenceName": "AzureStorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "parameters": {
            "path": {
                "type": "String"
            }
        }
    }
}

معلمة المسار JSON (PipelineParameters.json)

{
    "inputPath": "adftutorial/input",
    "outputPath1": "adftutorial/outputIf",
    "outputPath2": "adftutorial/outputElse",
    "routeSelection": "false"
}

أوامر PowerShell

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. راجع تثبيت Azure PowerShell للبدء. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

تفترض هذه الأوامر أنك قد حفظت ملفات JSON في المجلد: C:\ADF.

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"

راجع أنشطة تدفق التحكم الأخرى المدعومة: