النشاط Until في مصنع بيانات Azure وتحليلات Synapse
ينطبق على: Azure Data Factory Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
يوفر نشاط حتى نفس الوظائف التي توفرها بنية تكرار افعل-حتى في لغات البرمجة. إنه ينفذ مجموعة من الأنشطة في تكرار حلقي حتى يتم تقييم الشرط المقترن بالنشاط إلى صواب. إذا فشل نشاط داخلي، فلن يتوقف نشاط Until. يمكنك تحديد قيمة مهلة للنشاط Until.
قم بإنشاء نشاط Until باستخدام واجهة المستخدم
لاستخدام نشاط Until في البنية الأساسية لبرنامج ربط العمليات التجارية، أكمل الخطوات التالية:
ابحث عن Until في جزء Pipeline Activities، واسحب نشاط Until إلى لوحة البنية الأساسية لبرنامج ربط العمليات التجارية.
حدد نشاط Until على اللوحة إذا لم يكن محددا بالفعل، وعلامة التبويب Settings الخاصة به، لتحرير تفاصيله.
أدخل تعبيرا سيتم تقييمه بعد تنفيذ كافة الأنشطة التابعة المحددة في نشاط Until. إذا تم تقييم التعبير إلى خطأ، يقوم نشاط Until بتنفيذ جميع الأنشطة التابعة له مرة أخرى. عندما يتم تقييمه إلى true، يكتمل نشاط Until. يمكن أن يكون التعبير عبارة عن تعبير سلسلة قيمة حرفية، أو أي مجموعة من التعبيرات أو الوظائفالديناميكية أو متغيرات النظامأو مخرجات الأنشطة الأخرى. يتم فحص المثال أدناه من قيمة متغير صفيف البنية الأساسية لبرنامج ربط العمليات التجارية محدد مسبقاً يسمى TestVariable لمعرفة ما إذا كان يتم تقييمه إلى ['تم'].
حدد الأنشطة التي ينفذها نشاط Until عن طريق تحديد الزر Edit Activities في النشاط Until مباشرة، أو عن طريق تحديد علامة التبويب Activities لتحديدها هناك. يتم عرض جزء محرر أنشطة جديد حيث يمكنك إضافة أي أنشطة لنشاط Until لتنفيذه. في هذا المثال، يقوم نشاط Set Variable ببساطة بتعيين قيمة المتغير المشار إليه في التعبير المذكور أعلاه إلى ['done']، لذلك سيكون تعبير نشاط Until صحيحا في المرة الأولى التي يتم تنفيذها فيها، وسيتوقف النشاط Until. في استخدامك الواقعي، يمكنك التحقق من أي شروط مطلوبة وسيستمر النشاط Until في تنفيذ الأنشطة التابعة له في كل مرة يتم فيها تقييم التعبير، حتى يتم استيفاء الشروط.
بناء الجملة
{
"type": "Until",
"typeProperties": {
"expression": {
"value": "<expression that evaluates to true or false>",
"type": "Expression"
},
"timeout": "<time out for the loop. for example: 00:10:00 (10 minute)>",
"activities": [
{
"<Activity 1 definition>"
},
{
"<Activity 2 definition>"
},
{
"<Activity N definition>"
}
]
},
"name": "MyUntilActivity"
}
خصائص النوع
الخاصية | الوصف | القيم المسموح بها | المطلوب |
---|---|---|---|
الاسم | اسم النشاط Until . |
السلسلة | نعم |
النوع | يجب تعيينه إلى Until. | السلسلة | نعم |
تعبير | التعبير الذي يجب تقييمه إلى صواب أو خطأ | تعبير. | نعم |
المهلة | مهلة الحلقة do-until بعد الوقت المحدد هنا. | السلسلة. d.hh:mm:ss (أو) hh:mm:ss . القيمة الافتراضية هي سبعة أيام. القيمة القصوى هي: 90 يوما. |
لا |
الأنشطة | مجموعة الأنشطة التي تنفذ حتى يُقيّم التعبير إلى true . |
صفيف الأنشطة. | نعم |
المثال 1
إشعار
يقدم هذا القسم تعريفات JSON وعينة أوامر PowerShell لتشغيل المسار. للحصول على برامج معاينة مع إرشادات تدريجية لإنشاء مسار باستخدام تعريفات Azure PowerShell وJSON، راجع البرنامج التعليمي: إنشاء مصنع بيانات باستخدام Azure PowerShell.
مسار مع النشاط Unitl
في هذا المثال، ينفذ المسار نشاطين: Until وWait. ينتظر نشاط Wait لفترة زمنية محددة قبل تشغيل نشاط Web في الحلقة. للتعرف على التعبيرات والوظائف، راجع لغة التعبير ووظائفه.
{
"name": "DoUntilPipeline",
"properties": {
"activities": [
{
"type": "Until",
"typeProperties": {
"expression": {
"value": "@equals('Failed', coalesce(body('MyUnauthenticatedActivity')?.status, actions('MyUnauthenticatedActivity')?.status, 'null'))",
"type": "Expression"
},
"timeout": "00:10:00",
"activities": [
{
"name": "MyUnauthenticatedActivity",
"type": "WebActivity",
"typeProperties": {
"method": "get",
"url": "https://www.fake.com/",
"headers": {
"Content-Type": "application/json"
}
},
"dependsOn": [
{
"activity": "MyWaitActivity",
"dependencyConditions": [ "Succeeded" ]
}
]
},
{
"type": "Wait",
"typeProperties": {
"waitTimeInSeconds": 1
},
"name": "MyWaitActivity"
}
]
},
"name": "MyUntilActivity"
}
]
}
}
المثال 2
ينسخ المسار في هذا المثال البيانات من مجلد المدخلات إلى مجلد المخرجات في الحلقة. تنتهي الحلقة عندما تُعيّن قيمة المعلمة المكررة إلى "خطأ" أو "مهلة" بعد دقيقة واحدة.
مسار مع نشاط Until (Adfv2QuickStartPipeline.json)
{
"name": "Adfv2QuickStartPipeline",
"properties": {
"activities": [
{
"type": "Until",
"typeProperties": {
"expression": {
"value": "@equals('false', pipeline().parameters.repeat)",
"type": "Expression"
},
"timeout": "00:10:00",
"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"
}
},
"policy": {
"retry": 1,
"timeout": "00:10:00",
"retryIntervalInSeconds": 60
}
}
]
},
"name": "MyUntilActivity"
}
],
"parameters": {
"inputPath": {
"type": "String"
},
"outputPath": {
"type": "String"
},
"repeat": {
"type": "String"
}
}
}
}
خدمة تخزين 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",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
أوامر 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"
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"
}
Start-Sleep -Seconds 15
}
المحتوى ذو الصلة
راجع أنشطة تدفق التحكم الأخرى المدعومة: