Aktivitas hingga (until) di Azure Data Factory dan Azure Synapse Analytics
BERLAKU UNTUK: Azure Data Factory Azure Synapse Analytics
Tip
Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!
Aktivitas Until menyediakan fungsionalitas yang sama dengan yang disediakan oleh struktur perulangan do-until dalam bahasa pemrograman. Ini menjalankan kumpulan aktivitas dalam perulangan hingga kondisi yang terkait dengan aktivitas tersebut bernilai true. Jika aktivitas dalam gagal, aktivitas Until tidak berhenti. Anda dapat menentukan nilai batas waktu untuk aktivitas hingga.
Membuat aktivitas Until dengan antarmuka pengguna
Untuk menggunakan aktivitas Until dalam alur, selesaikan langkah-langkah berikut:
Cari Hingga di panel Aktivitas alur, dan seret aktivitas Hingga ke kanvas alur.
Pilih aktivitas Hingga di kanvas jika belum dipilih, dan tab Pengaturannya, untuk mengedit detailnya.
Masukkan ekspresi yang akan dievaluasi setelah semua aktivitas anak yang ditentukan dalam aktivitas Until dijalankan. Jika ekspresi mengevaluasi ke false, aktivitas Until menjalankan semua aktivitas turunannya lagi. Ketika dievaluasi ke true, aktivitas Until selesai. Ekspresi dapat berupa ekspresi karakter harfiah, atau kombinasi apa pun dari ekspresi, fungsi dinamis, variabel sistem, atau output dari aktivitas lain. Contoh di bawah ini memeriksa nilai variabel array alur yang ditentukan sebelumnya yang disebut TestVariable untuk melihat apakah nilainya dievaluasi ke ['selesai'].
Tentukan aktivitas yang dijalankan aktivitas Until dengan memilih tombol Edit Aktivitas pada aktivitas Until secara langsung, atau dengan memilih tab Aktivitas untuk memilihnya di sana. Panel editor aktivitas baru ditampilkan di mana Anda dapat menambahkan aktivitas apa pun agar aktivitas Hingga dijalankan. Dalam contoh ini, aktivitas Tetapkan Variabel hanya mengatur nilai variabel yang direferensikan dalam ekspresi yang disebutkan di atas ke ['done'], sehingga ekspresi Aktivitas until akan benar saat pertama kali dijalankan, dan aktivitas Until akan berhenti. Dalam penggunaan di dunia nyata, Anda dapat memeriksa kondisi apa pun yang diperlukan dan aktivitas Until akan terus menjalankan aktivitas turunannya setiap kali ekspresi dievaluasi, hingga kondisi terpenuhi.
Sintaks
{
"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"
}
Properti jenis
Properti | Deskripsi | Nilai yang diizinkan | Wajib |
---|---|---|---|
nama | Nama Until aktivitas. |
String | Ya |
jenis | Harus diatur ke Until. | String | Ya |
expression | Ekspresi yang harus mengevaluasi ke true atau false | Ekspresi. | Ya |
waktu habis | Waktu loop do-until keluar setelah waktu yang ditentukan di sini. | String. d.hh:mm:ss atau hh:mm:ss . Nilai defaultnya adalah tujuh hari. Nilai maksimum adalah: 90 hari. |
No |
Aktivitas | Set aktivitas yang dijalankan saat ekspresi mengevaluasi ke true . |
Array Aktivitas. | Ya |
Contoh 1
Catatan
Bagian ini menyediakan definisi JSON dan sampel perintah PowerShell untuk menjalankan alur. Untuk panduan dengan petunjuk langkah demi langkah untuk membuat alur menggunakan definisi Azure PowerShell dan JSON, lihat tutorial: membuat pabrik data menggunakan Azure PowerShell.
Alur dengan aktivitas Until
Dalam contoh ini, alur memiliki dua aktivitas: Hingga dan Tunggu. Aktivitas Wait menunggu periode waktu yang ditentukan sebelum menjalankan aktivitas Web dalam perulangan. Untuk mempelajari tentang ekspresi dan fungsi, lihat Bahasa pemrogram ekspresi dan fungsi.
{
"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"
}
]
}
}
Contoh 2
Alur dalam contoh ini menyalin data dari folder input ke folder output. Perulangan berakhir ketika nilai untuk parameter pengulangan diatur ke false atau waktu habis setelah satu menit.
Alur dengan aktivitas Switch (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"
}
}
}
}
Layanan tertaut Azure Storage (AzureStorageLinkedService.json)
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<Azure Storage account name>;AccountKey=<Azure Storage account key>"
}
}
}
Himpunan data Azure Blob berparameter (BlobDataset.json)
Alur mengatur folderPath ke nilai parameter alur outputPath1 atau outputPath2.
{
"name": "BlobDataset",
"properties": {
"type": "AzureBlob",
"typeProperties": {
"folderPath": {
"value": "@{dataset().path}",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "AzureStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"path": {
"type": "String"
}
}
}
}
Parameter alur JSON (PipelineParameters.json)
{
"inputPath": "adftutorial/input",
"outputPath": "adftutorial/outputUntil",
"repeat": "true"
}
Perintah PowerShell
Catatan
Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Untuk memulai, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.
Perintah ini mengasumsikan bahwa Anda telah menyimpan file JSON ke dalam folder: 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
}
Konten terkait
Lihat aktivitas alur kontrol yang didukung lainnya: