Azure Data Factory ve Synapse Analytics'teki etkinliklere kadar

ŞUNLARA UYGULANIR: Azure Data Factory Azure Synapse Analytics

Tip

Microsoft Fabric'daki Data Factory, daha basit bir mimariye, yerleşik yapay zekaya ve yeni özelliklere sahip yeni nesil Azure Data Factory. Veri tümleştirmeyi yeni kullanmaya başladıysanız Fabric Data Factory ile başlayın. Mevcut ADF iş yükleri veri bilimi, gerçek zamanlı analiz ve raporlama genelinde yeni özelliklere erişmek için Fabric yükseltebilir.

Until etkinliği, bir do-until döngü yapısının programlama dillerinde sağladığı işlevlerin aynısını sağlar. Etkinlikle ilişkili koşul true olarak değerlendirilene kadar döngüde bir etkinlik kümesi 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.

    İşlem hattı tuvalindeki Until etkinliğinin Ayarlar sekmesini gösterir.

  3. Until etkinliğinde tanımlanan tüm alt etkinlikler yürütüldükten 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 tamamlanır. İ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.

    Dinamik içerik ekle bölmesinde, bir değişkeni tanımlı bir değer için kontrol etmek amacıyla bir ifadeyi gösterir.

  4. Until etkinliğinde yürütülecek etkinlikleri, doğrudan Until etkinliği üzerindeki "Etkinlikleri Düzenle" düğmesini seçerek veya "Etkinlikler" sekmesini seçerek 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, başvuruda bulunan değişkenin değerini 'bitti' olarak ayarlar. Bu nedenle Until etkinliğinin ifadesi ilk kez yürütüldüğünde doğru olur ve ardından Until etkinliği durur. Herhangi bir koşulu denetlemek için benzer değişkenler kullanabilirsiniz. Until etkinliği, koşullar karşılanana kadar ifade her değerlendirildiğinde alt etkinliklerini yürütür. Birden çok etkinlik üzerinde tekrar gerçekleştirirseniz, işlem hattı tarafından yürütülen toplama ve temizleme çalışmaları nedeniyle döngüden çıkışta gecikme olabilir.

    Değişken Ayarla etkinliğinin tanımlandığı Until etkinliğinin etkinlik düzenleyicisini gösterir.

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 Gerekli
isim Etkinliğin Until adı. String Yes
type Until olarak ayarlanmalıdır. String Yes
ifade Doğru veya yanlış olarak değerlendirilecek ifade İfade Yes
zaman aşımı Do-until döngüsü, belirtilen süre sona erdiğinde zaman aşımına uğrar. String. d.hh:mm:ss (veya) hh:mm:ss. Varsayılan değer yedi gündür. En yüksek değer: 90 gün. Hayır
Etkinlikler İfade değerlendirilebilene true kadar gerçekleştirilen etkinlikler kümesi. Etkinlik dizisi. Yes

Örnek 1

Note

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önergeler içeren bir kılavuz için bkz. tutorial: 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 Storage bağlı hizmeti (AzureStorageLinkedService.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, outputPath1 veya outputPath2 parametrelerinden birine 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ı

Note

Azure ile etkileşime geçmek için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell yükleme. Az PowerShell modülüne nasıl geçiş yapılacağını öğrenmek için bkz. AzureRM'den Az Azure PowerShell dağıtma.

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: