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:

  1. Telusuri Pencarian di panel Aktivitas alur, dan seret aktivitas Pencarian ke kanvas alur.

  2. Pilih aktivitas Pencarian baru di kanvas jika belum dipilih, dan tab Pengaturan-nya, untuk mengedit detailnya.

    Shows the UI for a Lookup activity.

  3. Pilih kumpulan data sumber yang ada atau pilih tombol Baru untuk membuat yang baru.

  4. 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.

    Shows the configuration options in the Lookup activity for an Azure SQL table dataset.

    Shows the configuration options in the Lookup activity for an OData dataset.

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.

Category Penyimpanan data
Azure Azure Blob Storage
  Azure Cosmos DB for NoSQL
  Azure Data Explorer (Kusto)
  Azure Data Lake Storage Gen1
  Azure Data Lake Storage Gen2
  Azure Database untuk MariaDB
  Azure Database untuk MySQL
  Azure Database untuk PostgreSQL
  Azure Databricks Delta Lake
  Azure Files
  Azure SQL Database
  Instans Terkelola Azure SQL
  Azure Synapse Analytics
  Azure Table Storage
Database Amazon RDS untuk Oracle
  Amazon RDS untuk SQL Server
  Amazon Redshift
  Apache Impala
  Instans Terkelola Azure SQL
  DB2
  Drill
  Google AdWords
  Google BigQuery
  Greenplum
  HBase
  Hive
  Informix
  MariaDB
  Microsoft Access
  MySQL
  Netezza
  Oracle
  PHOENIX
  PostgreSQL
  Presto
  Open Hub SAP Business Warehouse
  SAP Business Warehouse melalui MDX
  SAP HANA
  Tabel SAP
  SQL Server
  Spark
  Sybase
  Teradata
  Vertica
NoSQL Cassandra
  Couchbase (Pratinjau)
File Amazon S3
  Penyimpanan yang Kompatibel dengan Amazon S3
  Sistem File
  FTP
  Penyimpanan Cloud Google
  HDFS
  HTTP Generik
  Microsoft Fabric Lakehouse
  Penyimpanan Cloud Oracle
  SFTP
Protokol generik OData Generik
  Konektivitas Database Terbuka Generik
  Daftar Online SharePoint
Layanan dan aplikasi Layanan Web Marketplace Amazon
  Concur (Pratinjau)
  Dataverse
  Dynamics 365
  Dynamics AX
  Dynamics CRM
  HubSpot
  Jira
  Azure Data Explorer (Kusto)
  Magento (Pratinjau)
  Marketo (Pratinjau)
  Oracle Eloqua (Pratinjau)
  Oracle Responsys (Pratinjau)
  Oracle Service Cloud (Pratinjau)
  PayPal (Pratinjau)
  QuickBooks (Pratinjau)
  SAP Cloud untuk Pelanggan (C4C)
  SAP ECC
  Salesforce
  Cloud Pemasaran Tenaga Penjualan
  Cloud Layanan Salesforce
  ServiceNow
  Shopify (Pratinjau)
  Snowflake
  Square (Pratinjau)
  Tabel Web (tabel HTML)
  Xero
  Zoho (Pratinjau)

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 ke true (default), format output akan ditunjukkan seperti dalam kode berikut. Hasil pencarian berada pada kunci firstRow tetap. Untuk menggunakan hasil dalam aktivitas berikutnya, gunakan pola @{activity('LookupActivity').output.firstRow.table}.

    {
        "firstRow":
        {
            "Id": "1",
            "schema":"dbo",
            "table":"Table1"
        }
    }
    
  • Ketika firstRowOnly diatur ke false, format output akan ditunjukkan seperti dalam kode berikut. Bidang count menunjukkan berapa banyak rekaman yang dikembalikan. Nilai terperinci ditampilkan pada array value tetap. Dalam kasus seperti itu, Aktivitas pencarian diikuti oleh aktivitas Foreach. Anda melewati array value ke bidang aktivitas ForEach items dengan menggunakan pola @activity('MyLookupActivity').output.value. Untuk mengakses elemen dalam array value, 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.

Lihat aktivitas alur kontrol lainnya yang didukung oleh Azure Data Factory dan alur Synapse: