Aktivitas pencarian 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 pencarian dapat mengambil himpunan data dari salah satu sumber data yang didukung oleh pabrik data dan alur Synapse. Anda dapat menggunakannya untuk secara dinamis menentukan objek mana yang akan dioperasikan dalam aktivitas berikutnya, alih-alih mengodekan nama objek secara keras. Beberapa contoh objek adalah file dan tabel.
Aktivitas pencarian membaca dan mengembalikan konten file konfigurasi atau tabel. Aktivitas ini juga mengembalikan hasil dari menjalankan kueri atau prosedur yang disimpan. Output dapat menjadi nilai singleton atau array atribut, yang dapat dikonsumsi dalam salinan, transformasi, atau aktivitas aliran kontrol berikutnya seperti aktivitas ForEach.
Membuat aktivitas Pencarian dengan UI
Untuk menggunakan aktivitas Pencarian dalam alur, selesaikan langkah-langkah berikut:
Telusuri Pencarian di panel Aktivitas alur, dan seret aktivitas Pencarian ke kanvas alur.
Pilih aktivitas Pencarian baru di kanvas jika belum dipilih, dan tab Pengaturan-nya, untuk mengedit detailnya.
Pilih kumpulan data sumber yang ada atau pilih tombol Baru untuk membuat yang baru.
Opsi untuk mengidentifikasi baris yang akan disertakan dari kumpulan data sumber akan bervariasi berdasarkan jenis kumpulan data. Contoh di atas menunjukkan opsi konfigurasi untuk kumpulan data teks yang dibatasi. Di bawah ini adalah contoh opsi konfigurasi untuk himpunan data tabel Azure SQL dan kumpulan data OData.
Kemampuan yang didukung
Berikut hal-hal yang perlu diketahui:
- Aktivitas Pencarian dapat mengembalikan hingga 5000 baris; jika kumpulan hasil berisi lebih banyak rekaman, 5000 baris pertama akan dikembalikan.
- Output Aktivitas pencarian mendukung ukuran hingga 4 MB, kegiatan akan gagal jika ukuran melebihi batas.
- Durasi terpanjang untuk Aktivitas pencarian sebelum waktu habis adalah 24 jam.
Catatan
Saat Anda menggunakan kueri atau prosedur yang disimpan untuk mencari data, pastikan untuk mengembalikan satu dan persis satu rangkaian hasil. Jika tidak, Aktivitas pencarian akan gagal.
Sumber data berikut didukung untuk Aktivitas pencarian.
Catatan
Semua konektor yang ditandai sebagai Pratinjau itu berarti Anda dapat mencobanya dan memberi kami umpan balik. Jika Anda ingin mengambil dependensi pada konektor pratinjau dalam solusi Anda, harap hubungi dukungan Azure.
Sintaks
{
"name":"LookupActivity",
"type":"Lookup",
"typeProperties":{
"source":{
"type":"<source type>"
},
"dataset":{
"referenceName":"<source dataset name>",
"type":"DatasetReference"
},
"firstRowOnly":<true or false>
}
}
Properti jenis
Nama | Deskripsi | Jenis | Wajib diisi? |
---|---|---|---|
himpunan data | Menyediakan referensi himpunan data untuk pencarian. Dapatkan detail dari bagian Properti himpunan data di setiap artikel konektor terkait. | Pasangan kunci/nilai | Ya |
sumber | Berisi properti sumber himpunan data tertentu, sama dengan sumber Aktivitas Salin. Dapatkan detail dari bagian properti Aktivitas Salin di setiap artikel konektor terkait. | Pasangan kunci/nilai | Ya |
firstRowOnly | Menunjukkan apakah hanya mengembalikan baris pertama atau semua baris. | Boolean | Tidak. Default adalah true . |
Catatan
- Kolom sumber dengan jenis ByteArray tidak didukung.
- Struktur tidak didukung dalam definisi himpunan data. Untuk file format teks, gunakan baris header untuk menyediakan nama kolom.
- Jika sumber pencarian Anda adalah file JSON, maka pengaturan
jsonPathDefinition
untuk membentuk kembali objek JSON tidak didukung. Seluruh objek akan diambil.
Menggunakan hasil Aktivitas pencarian
Hasil pencarian dikembalikan di bagian output
hasil menjalankan aktivitas.
Ketika
firstRowOnly
diatur ketrue
(default), format output akan ditunjukkan seperti dalam kode berikut. Hasil pencarian berada pada kuncifirstRow
tetap. Untuk menggunakan hasil dalam aktivitas berikutnya, gunakan pola@{activity('LookupActivity').output.firstRow.table}
.{ "firstRow": { "Id": "1", "schema":"dbo", "table":"Table1" } }
Ketika
firstRowOnly
diatur kefalse
, format output akan ditunjukkan seperti dalam kode berikut. Bidangcount
menunjukkan berapa banyak rekaman yang dikembalikan. Nilai terperinci ditampilkan pada arrayvalue
tetap. Dalam kasus seperti itu, Aktivitas pencarian diikuti oleh aktivitas Foreach. Anda melewati arrayvalue
ke bidang aktivitas ForEachitems
dengan menggunakan pola@activity('MyLookupActivity').output.value
. Untuk mengakses elemen dalam arrayvalue
, gunakan sintaks berikut:@{activity('lookupActivity').output.value[zero based index].propertyname}
. Contohnya@{activity('lookupActivity').output.value[0].schema}
.{ "count": "2", "value": [ { "Id": "1", "schema":"dbo", "table":"Table1" }, { "Id": "2", "schema":"dbo", "table":"Table2" } ] }
Contoh
Dalam contoh ini, alur berisi dua aktivitas: Pencarian dan Salin. Aktivitas Salin menyalin data dari tabel SQL di instans Azure SQL Database Anda ke penyimpanan Azure Blob. Nama tabel SQL disimpan dalam file JSON di penyimpanan Blob. Aktivitas Pencarian mencari nama tabel pada waktu proses. JSON dimodifikasi secara dinamis menggunakan pendekatan ini. Anda tidak perlu melakukan menyebarkan ulang alur atau himpunan data.
Contoh ini menunjukkan pencarian untuk baris pertama saja. Untuk mencari semua baris dan mengaitkan hasilnya dengan aktivitas ForEach, lihat contoh di Menyalin beberapa tabel secara massal.
Alur
- Aktivitas pencarian dikonfigurasi untuk menggunakan LookupDataset, yang merujuk ke lokasi di penyimpanan Azure Blob. Aktivitas pencarian membaca nama tabel SQL dari file JSON di lokasi ini.
- Aktivitas Salin menggunakan output Aktivitas pencarian, yang merupakan nama tabel SQL. Properti tableName di SourceDataset dikonfigurasi untuk menggunakan output dari Aktivitas pencarian. Aktivitas Salin menyalin data dari tabel SQL ke lokasi di penyimpanan Azure Blob. Lokasi ditentukan oleh properti SinkDataset.
{
"name": "LookupPipelineDemo",
"properties": {
"activities": [
{
"name": "LookupActivity",
"type": "Lookup",
"dependsOn": [],
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"source": {
"type": "JsonSource",
"storeSettings": {
"type": "AzureBlobStorageReadSettings",
"recursive": true
},
"formatSettings": {
"type": "JsonReadSettings"
}
},
"dataset": {
"referenceName": "LookupDataset",
"type": "DatasetReference"
},
"firstRowOnly": true
}
},
{
"name": "CopyActivity",
"type": "Copy",
"dependsOn": [
{
"activity": "LookupActivity",
"dependencyConditions": [
"Succeeded"
]
}
],
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"source": {
"type": "AzureSqlSource",
"sqlReaderQuery": {
"value": "select * from [@{activity('LookupActivity').output.firstRow.schema}].[@{activity('LookupActivity').output.firstRow.table}]",
"type": "Expression"
},
"queryTimeout": "02:00:00",
"partitionOption": "None"
},
"sink": {
"type": "DelimitedTextSink",
"storeSettings": {
"type": "AzureBlobStorageWriteSettings"
},
"formatSettings": {
"type": "DelimitedTextWriteSettings",
"quoteAllText": true,
"fileExtension": ".txt"
}
},
"enableStaging": false,
"translator": {
"type": "TabularTranslator",
"typeConversion": true,
"typeConversionSettings": {
"allowDataTruncation": true,
"treatBooleanAsNumber": false
}
}
},
"inputs": [
{
"referenceName": "SourceDataset",
"type": "DatasetReference",
"parameters": {
"schemaName": {
"value": "@activity('LookupActivity').output.firstRow.schema",
"type": "Expression"
},
"tableName": {
"value": "@activity('LookupActivity').output.firstRow.table",
"type": "Expression"
}
}
}
],
"outputs": [
{
"referenceName": "SinkDataset",
"type": "DatasetReference",
"parameters": {
"schema": {
"value": "@activity('LookupActivity').output.firstRow.schema",
"type": "Expression"
},
"table": {
"value": "@activity('LookupActivity').output.firstRow.table",
"type": "Expression"
}
}
}
]
}
],
"annotations": [],
"lastPublishTime": "2020-08-17T10:48:25Z"
}
}
Himpunan data pencarian
Himpunan data Pencarian adalah file sourcetable.js di folder pencarian Azure Storage yang ditentukan oleh jenis AzureBlobStorageLinkedService.
{
"name": "LookupDataset",
"properties": {
"linkedServiceName": {
"referenceName": "AzureBlobStorageLinkedService",
"type": "LinkedServiceReference"
},
"annotations": [],
"type": "Json",
"typeProperties": {
"location": {
"type": "AzureBlobStorageLocation",
"fileName": "sourcetable.json",
"container": "lookup"
}
}
}
}
Himpunan data Sumber untuk Aktivitas Salin
Himpunan data sumber menggunakan output aktivitas Pencarian, yang merupakan nama tabel SQL. Aktivitas Salin menyalin data dari tabel SQL ini ke lokasi di penyimpanan Azure Blob. Lokasi ditentukan oleh himpunan data sink.
{
"name": "SourceDataset",
"properties": {
"linkedServiceName": {
"referenceName": "AzureSqlDatabase",
"type": "LinkedServiceReference"
},
"parameters": {
"schemaName": {
"type": "string"
},
"tableName": {
"type": "string"
}
},
"annotations": [],
"type": "AzureSqlTable",
"schema": [],
"typeProperties": {
"schema": {
"value": "@dataset().schemaName",
"type": "Expression"
},
"table": {
"value": "@dataset().tableName",
"type": "Expression"
}
}
}
}
Himpunan data sink untuk Aktivitas Salin
Aktivitas Salin menyalin data dari tabel SQL ke filebylookup.csv di folder csv di Azure Storage. File ditentukan oleh properti AzureBlobStorageLinkedService.
{
"name": "SinkDataset",
"properties": {
"linkedServiceName": {
"referenceName": "AzureBlobStorageLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"schema": {
"type": "string"
},
"table": {
"type": "string"
}
},
"annotations": [],
"type": "DelimitedText",
"typeProperties": {
"location": {
"type": "AzureBlobStorageLocation",
"fileName": {
"value": "@{dataset().schema}_@{dataset().table}.csv",
"type": "Expression"
},
"container": "csv"
},
"columnDelimiter": ",",
"escapeChar": "\\",
"quoteChar": "\""
},
"schema": []
}
}
sourcetable.json
Anda dapat menggunakan dua jenis format berikut untuk file sourcetable.jspada.
Himpunan objek
{
"Id":"1",
"schema":"dbo",
"table":"Table1"
}
{
"Id":"2",
"schema":"dbo",
"table":"Table2"
}
Array objek
[
{
"Id": "1",
"schema":"dbo",
"table":"Table1"
},
{
"Id": "2",
"schema":"dbo",
"table":"Table2"
}
]
Batasan dan solusi
Berikut adalah beberapa keterbatasan aktivitas Pencarian dan solusi yang disarankan.
Pembatasan | Solusi Sementara |
---|---|
Aktivitas pencarian memiliki maksimum 5.000 baris, dan ukuran maksimum 4 MB. | Merancang alur dua tingkat, di mana alur luar berulang di atas alur dalam, yang mengambil data yang tidak melebihi baris atau ukuran maksimum. |
Konten terkait
Lihat aktivitas alur kontrol lainnya yang didukung oleh Azure Data Factory dan alur Synapse: