Share via


Azure Data Factory ve Synapse Analytics'teki etkinliklere kadar

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

İpucu

Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!

Until etkinliği, programlama dillerindeki do-until döngü yapısıyla aynı işlevselliği sağlar. Etkinlikle ilişkilendirilmiş olan koşul doğru sonucunu verene kadar bir dizi etkinliği döngüsel olarak yürütür. İç etkinlik başarısız olursa, Until etkinliği durmaz. Until etkinliği için bir zaman aşımı değeri belirtebilirsiniz.

Kullanıcı arabirimiyle Until etkinliği oluşturma

İşlem hattında Until etkinliğini kullanmak için aşağıdaki adımları tamamlayın:

  1. İşlem hattı Etkinlikleri bölmesinde Until araması yapıp Until etkinliğini işlem hattı tuvaline sürükleyin.

  2. Tuvalde henüz seçili değilse Until etkinliğini ve ayrıntılarını düzenlemek için Ayarlar sekmesini seçin.

    Shows the Settings tab of the Until activity in the pipeline canvas.

  3. Until etkinliği yürütüldükten sonra tanımlanan tüm alt etkinliklerden sonra değerlendirilecek bir ifade girin. İfade false olarak değerlendirilirse, Until etkinliği tüm alt etkinliklerini yeniden yürütür. True olarak değerlendirildiğinde, Until etkinliği tamamlar. İfade değişmez değer dize ifadesi veya dinamik ifadelerin, işlevlerin, sistem değişkenlerinin veya diğer etkinliklerden gelen çıkışların herhangi bir bileşimi olabilir. Aşağıdaki örnek, ['done'] olarak değerlendirilip değerlendirilmediğini görmek için TestVariable adlı önceden tanımlanmış bir işlem hattı dizisi değişkeninin değerini denetler.

    Shows the  Add dynamic content  pane with an expression to check a variable for a defined value.

  4. Until etkinliğinin doğrudan Until etkinliğindeki Etkinlikleri Düzenle düğmesini seçerek veya etkinlikler sekmesini seçerek yürütülecek etkinlikleri tanımlayın. Yürütülecek Until etkinliğine yönelik etkinlikleri ekleyebileceğiniz yeni bir etkinlik düzenleyicisi bölmesi görüntülenir. Bu örnekte, Değişken Ayarla etkinliği yalnızca yukarıda belirtilen ifadede başvurulan değişkenin değerini ['done'] olarak ayarlar, bu nedenle Until etkinliğinin ifadesi ilk kez yürütülürken doğru olur ve Until etkinliği durur. Gerçek dünya kullanımınızda, gerekli koşulları denetleyebilirsiniz ve Until etkinliği, koşullar karşılanana kadar ifade her değerlendirildiğinde alt etkinliklerini yürütmeye devam eder.

    Shows the activities editor for an Until activity with a Set Variable activity defined.

Sözdizimi

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

Tür özellikleri

Özellik Açıklama İzin verilen değerler Zorunlu
Adı Etkinliğin Until adı. String Yes
Tür Until olarak ayarlanmalıdır. String Yes
ifade True veya false olarak değerlendirmesi gereken ifade Ifa -de. Yes
timeout Do-until döngüsü burada belirtilen süreden sonra zaman aşımına uğradı. Dize. d.hh:mm:ss (veya) öğesini seçin hh:mm:ss. Varsayılan değer yedi gündür. En yüksek değer: 90 gün. Hayır
Aktiviteler İfade olarak değerlendirilene truekadar yürütülen etkinlik kümesi. Etkinlik dizisi. Yes

Örnek 1

Not

Bu bölümde, işlem hattını çalıştırmak için JSON tanımları ve örnek PowerShell komutları sağlanır. Azure PowerShell ve JSON tanımlarını kullanarak işlem hattı oluşturmaya yönelik adım adım yönergeleri içeren bir kılavuz için bkz . öğretici: Azure PowerShell kullanarak veri fabrikası oluşturma.

Until etkinliği ile işlem hattı

Bu örnekte işlem hattının iki etkinliği vardır: Until ve Wait. Wait etkinliği, Web etkinliğini döngüde çalıştırmadan önce belirtilen süre boyunca bekler. İfadeler ve işlevler hakkında bilgi edinmek için bkz . İfade dili ve işlevleri.

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

Örnek 2

Bu örnekteki işlem hattı, bir giriş klasöründeki verileri döngüdeki bir çıkış klasörüne kopyalar. Döngü, repeat parametresinin değeri false olarak ayarlandığında veya bir dakika sonra zaman aşımına uğradıysa sonlandırılır.

Until etkinliğiyle işlem hattı (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 Depolama bağlı hizmeti (Azure Depolama LinkedService.json)

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

Parametreli Azure Blob veri kümesi (BlobDataset.json)

İşlem hattı, folderPath değerini işlem hattının outputPath1 veya outputPath2 parametresine ayarlar.

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

İşlem hattı parametresi JSON (PipelineParameters.json)

{
    "inputPath": "adftutorial/input",
    "outputPath": "adftutorial/outputUntil",
    "repeat": "true"
}

PowerShell komutları

Not

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Bu komutlar, JSON dosyalarını C:\ADF klasörüne kaydettiğinizi varsayar.

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
}

Desteklenen diğer denetim akışı etkinliklerine bakın: