Attività di ricerca in Azure Data Factory e Azure Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

L'attività di ricerca può recuperare un set di dati da una qualsiasi delle origini dati supportate dalle pipeline di Data Factory e Synapse. È possibile usarlo per determinare in modo dinamico gli oggetti da utilizzare in un'attività successiva, anziché impostare come hardcoded il nome dell'oggetto. Alcuni esempi di oggetti sono file e tabelle.

L'attività Lookup legge e restituisce il contenuto di un file di configurazione o una tabella. Restituisce anche il risultato dell'esecuzione di una query o di una stored procedure. L'output può essere un valore singleton o una matrice di attributi, che possono essere utilizzati in una copia, trasformazione o attività del flusso di controllo successive, ad esempio l'attività ForEach.

Creare un'attività di ricerca con l'interfaccia utente

Per usare un'attività Lookup in una pipeline, completare la procedura seguente:

  1. Cercare Ricerca nel riquadro Attività pipeline e trascinare un'attività Lookup nell'area di disegno della pipeline.

  2. Selezionare la nuova attività Lookup nell'area di disegno se non è già selezionata e la relativa scheda Impostazioni per modificarne i dettagli.

    Shows the UI for a Lookup activity.

  3. Scegliere un set di dati di origine esistente o selezionare il pulsante Nuovo per crearne uno nuovo.

  4. Le opzioni per identificare le righe da includere nel set di dati di origine variano in base al tipo di set di dati. L'esempio precedente mostra le opzioni di configurazione per un set di dati di testo delimitato. Di seguito sono riportati esempi di opzioni di configurazione per un set di dati di tabella SQL di Azure e un set di dati 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.

Funzionalità supportate

Nota quanto segue:

  • L'attività Lookup può restituire fino a 5000 righe. Se il set di risultati contiene più record, verranno restituite le prime 5000 righe.
  • L'output dell'attività di ricerca supporta fino a 4 MB di dimensioni, l'attività avrà esito negativo se le dimensioni superano il limite.
  • La durata più lunga per l'attività di ricerca prima del timeout è di 24 ore.

Nota

Quando si usa una query o una stored procedure per cercare i dati, assicurarsi di restituire uno e un set di risultati esatto. In caso contrario, l'attività di ricerca ha esito negativo.

Per l'attività Lookup attualmente sono supportate le origini dati seguenti.

Category Archivio dati
Azure Archivio BLOB di Azure
  Azure Cosmos DB for NoSQL
  Azure Esplora dati (Kusto)
  Azure Data Lake Storage Gen1
  Azure Data Lake Storage Gen2
  Database di Azure per MariaDB
  Database di Azure per MySQL
  Database di Azure per PostgreSQL
  Delta Lake di Azure Databricks
  File di Azure
  Database SQL di Azure
  Istanza gestita di database SQL di Azure
  Azure Synapse Analytics
  Archivio tabelle di Azure
Database Amazon RDS per Oracle
  Amazon RDS per SQL Server
  Amazon Redshift
  Apache Impala
  Istanza gestita di database SQL di Azure
  DB2
  Drill.
  Google AdWords
  Google BigQuery
  Greenplum
  HBase
  Hive
  Informix
  MariaDB
  Microsoft Access
  MySQL
  Netezza
  Oracle
  Phoenix
  PostgreSQL
  Presto
  SAP Business Warehouse Open Hub
  SAP Business Warehouse via MDX
  SAP HANA
  Tabella SAP
  SQL Server
  Spark
  Sybase
  Teradata
  Vertica
NoSQL Cassandra
  Couchbase (anteprima)
file Amazon S3
  Archiviazione compatibili con Amazon S3
  File system
  FTP
  Google Cloud Storage
  HDFS
  HTTP generico
  Microsoft Fabric Lakehouse
  Oracle Cloud Archiviazione
  SFTP
Protocollo generico OData generico
  ODBC generico
  Elenco di SharePoint Online
Servizi e app Amazon Marketplace Web Service
  Concur (anteprima)
  Dataverse
  Dynamics 365
  Dynamics AX
  Dynamics CRM
  HubSpot
  Jira
  Azure Esplora dati (Kusto)
  Magento (anteprima)
  Marketo (anteprima)
  Oracle Eloqua (anteprima)
  Oracle Responsys (anteprima)
  Oracle Service Cloud (anteprima)
  PayPal (anteprima)
  QuickBooks (anteprima)
  SAP Cloud for Customer (C4C)
  SAP ECC
  Salesforce
  Salesforce Marketing Cloud
  Cloud del servizio Salesforce
  ServiceNow
  Shopify (anteprima)
  Snowflake
  Square (anteprima)
  Tabella Web (tabella HTML)
  Xero
  Zoho (anteprima)

Nota

Se un connettore è contrassegnato come Anteprima, è possibile provarlo e inviare commenti e suggerimenti. Se si vuole accettare una dipendenza dai connettori in versione di anteprima nella propria soluzione, contattare il supporto tecnico di Azure.

Sintassi

{
    "name":"LookupActivity",
    "type":"Lookup",
    "typeProperties":{
        "source":{
            "type":"<source type>"
        },
        "dataset":{
            "referenceName":"<source dataset name>",
            "type":"DatasetReference"
        },
        "firstRowOnly":<true or false>
    }
}

Proprietà del tipo

Nome Descrizione Type Obbligatorio?
set di dati Fornisce il riferimento al set di dati per la ricerca. Per i dettagli, vedere la sezione Proprietà del set di dati nell'articolo del connettore corrispondente. Coppia chiave/valore
source Contiene proprietà di origine specifiche del set di dati, come per l'origine dell'attività Copy. Visualizzare i dettagli della sezione Proprietà dell'attività di copia nell'articolo del connettore corrispondente. Coppia chiave/valore
firstRowOnly Indica se restituire solo la prima riga o tutte le righe. Booleano No. Il valore predefinito è true.

Nota

  • Le colonne Source con tipo ByteArray non sono supportate.
  • Structure non è supportato nella definizione del set di dati. Per i file in formato testo, è possibile usare la riga di intestazione per specificare il nome della colonna.
  • Se l'origine della ricerca è un file JSON, l'impostazione jsonPathDefinition per la modifica della forma dell'oggetto JSON non è supportata. Vengono recuperati gli interi oggetti.

Usare il risultato dell'attività Lookup

Il risultato della ricerca viene restituito nella sezione output del risultato dell'esecuzione attività.

  • Se firstRowOnly è impostato su true (impostazione predefinita), il formato di output è mostrato nel codice seguente. Il risultato della ricerca è sotto una chiave firstRow fissa. Per usare il risultato in un'attività successiva, usare il criterio di @{activity('LookupActivity').output.firstRow.table}.

    {
        "firstRow":
        {
            "Id": "1",
            "schema":"dbo",
            "table":"Table1"
        }
    }
    
  • Se firstRowOnly è impostato su false, il formato di output è mostrato nel codice seguente. Un campo count indica il numero di record restituiti. I valori dettagliati sono visualizzati sotto una matrice value fissa. In questo caso l'attività Lookup è seguita da un'attività ForEach. Per passare l'array value al campo items dell'attività ForEach, usare il criterio di @activity('MyLookupActivity').output.value. Per accedere agli elementi nell'array value, usare la sintassi seguente: @{activity('lookupActivity').output.value[zero based index].propertyname}. Un esempio è @{activity('lookupActivity').output.value[0].schema}.

    {
        "count": "2",
        "value": [
            {
                "Id": "1",
                "schema":"dbo",
                "table":"Table1"
            },
            {
                "Id": "2",
                "schema":"dbo",
                "table":"Table2"
            }
        ]
    } 
    

Esempio

In questo esempio la pipeline contiene due attività: Ricerca e Copia. L'attività di copia copia i dati da una tabella SQL nell'istanza di database SQL di Azure nell'archivio BLOB di Azure. Il nome della tabella SQL viene archiviato in un file JSON in Archiviazione BLOB. L'attività Lookup cerca il nome della tabella in fase di esecuzione. Il file JSON viene modificato in modo dinamico usando questo approccio. Non è necessario ridistribuire le pipeline o i set di dati.

In questo esempio viene illustrata la ricerca solo per la prima riga. Per la ricerca di tutte le righe e per concatenare i risultati con l'attività ForEach, vedere gli esempi in Copiare più tabelle in blocco.

Pipeline

  • L'attività Lookup è configurata per usare LookupDataset, che fa riferimento a un percorso di Archiviazione BLOB di Azure. L'attività Lookup legge il nome della tabella SQL da un file JSON in questo percorso.
  • L'attività di copia usa l'output dell'attività Di ricerca, ovvero il nome della tabella SQL. La proprietà tableName in SourceDataset è configurata in modo da usare l'output dell'attività Lookup. L'attività Copy copia i dati dalla tabella SQL in un percorso di Archiviazione BLOB di Azure. Il percorso è specificato dalla proprietà 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"
    }
}

Set di dati di ricerca

Il set di dati di ricerca è il file sourcetable.json nella cartella di ricerca Archiviazione di Azure specificata dal tipo AzureBlob Archiviazione LinkedService.

{
    "name": "LookupDataset",
    "properties": {
        "linkedServiceName": {
            "referenceName": "AzureBlobStorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "annotations": [],
        "type": "Json",
        "typeProperties": {
            "location": {
                "type": "AzureBlobStorageLocation",
                "fileName": "sourcetable.json",
                "container": "lookup"
            }
        }
    }
}

Set di dati di origine per l'attività Copy

Il set di dati di origine usa l'output dell'attività Lookup, ovvero il nome della tabella SQL. L'attività Copy copia i dati da questa tabella SQL in un percorso di Archiviazione BLOB di Azure. Il percorso è specificato dal set di dati 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"
            }
        }
    }
}

Set di dati sink per l'attività Copy

L'attività Copy copia i dati dalla tabella SQL nel file filebylookup.csv file della cartella csv in Archiviazione di Azure. Il file viene specificato dalla proprietà AzureBlob Archiviazione LinkedService.

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

È possibile usare i due tipi di formati seguenti per il file sourcetable.json .

Set di oggetti

{
   "Id":"1",
   "schema":"dbo",
   "table":"Table1"
}
{
   "Id":"2",
   "schema":"dbo",
   "table":"Table2"
}

Matrice di oggetti

[ 
    {
        "Id": "1",
        "schema":"dbo",
        "table":"Table1"
    },
    {
        "Id": "2",
        "schema":"dbo",
        "table":"Table2"
    }
]

Limitazioni e soluzioni alternative

Di seguito vengono descritte alcune limitazioni dell'attività Lookup con le soluzioni alternative suggerite.

Limitazione Soluzione alternativa
L'attività Lookup ha un massimo di 5.000 righe e una dimensione massima di 4 MB. Progettare una pipeline a due livelli in cui la pipeline esterna esegue l'iterazione su una pipeline interna, che recupera i dati che non superano il numero massimo di righe o le dimensioni massime.

Vedere altre attività del flusso di controllo supportate dalle pipeline di Azure Data Factory e Synapse: