Opzoekactiviteit in Azure Data Factory en Azure Synapse Analytics

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

Opzoekactiviteit kan een gegevensset ophalen uit een van de gegevensbronnen die worden ondersteund door data factory- en Synapse-pijplijnen. U kunt deze gebruiken om dynamisch te bepalen op welke objecten in een volgende activiteit moet worden uitgevoerd, in plaats van de objectnaam hard te coderen. Enkele objectvoorbeelden zijn bestanden en tabellen.

Opzoekactiviteit leest en retourneert de inhoud van een configuratiebestand of -tabel. Het retourneert ook het resultaat van het uitvoeren van een query of opgeslagen procedure. De uitvoer kan een singleton-waarde of een matrix van kenmerken zijn, die kunnen worden gebruikt in een volgende kopieer-, transformatie- of controlestroomactiviteiten zoals ForEach-activiteit.

Een opzoekactiviteit maken met de gebruikersinterface

Voer de volgende stappen uit om een opzoekactiviteit in een pijplijn te gebruiken:

  1. Zoek naar Opzoeken in het deelvenster Pijplijnactiviteiten en sleep een opzoekactiviteit naar het pijplijncanvas.

  2. Selecteer de nieuwe opzoekactiviteit op het canvas als deze nog niet is geselecteerd en het bijbehorende tabblad Instellingen om de details ervan te bewerken.

    Shows the UI for a Lookup activity.

  3. Kies een bestaande brongegevensset of selecteer de knop Nieuw om een nieuwe te maken.

  4. De opties voor het identificeren van rijen die uit de brongegevensset moeten worden opgenomen, variëren op basis van het gegevenssettype. In het bovenstaande voorbeeld ziet u de configuratieopties voor een gegevensset met scheidingstekens. Hieronder ziet u voorbeelden van configuratieopties voor een Azure SQL-tabelgegevensset en een OData-gegevensset.

    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.

Ondersteunde mogelijkheden

Let op het volgende:

  • De opzoekactiviteit kan maximaal 5000 rijen retourneren. Als de resultatenset meer records bevat, worden de eerste 5000 rijen geretourneerd.
  • De uitvoer van de lookup-activiteit ondersteunt maximaal 4 MB . De activiteit mislukt als de grootte groter is dan de limiet.
  • De langste duur voor lookup-activiteit voordat time-out plaatsvindt, is 24 uur.

Notitie

Wanneer u een query of opgeslagen procedure gebruikt om gegevens op te zoeken, moet u een en exact één resultatenset retourneren. Anders mislukt de lookup-activiteit.

De volgende gegevensbronnen worden ondersteund voor lookup-activiteit.

Categorie Gegevensopslag
Azure Azure Blob Storage
  Azure Cosmos DB voor NoSQL
  Azure Data Explorer (Kusto)
  Azure Data Lake Storage Gen1
  Azure Data Lake Storage Gen2
  Azure Database for MariaDB
  Azure Database for MySQL
  Azure Database for PostgreSQL
  Azure Databricks Delta Lake
  Azure Files
  Azure SQL-database
  Azure SQL Managed Instance
  Azure Synapse Analytics
  Azure Table storage
Database Amazon RDS voor Oracle
  Amazon RDS voor SQL Server
  Amazon Redshift
  Apache Impala
  Azure SQL Managed Instance
  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
  SAP-tabel
  SQL Server
  Spark
  Sybase
  Teradata
  Vertica
NoSQL Cassandra
  Couchbase (preview)
Bestand Amazon S3
  Amazon S3-compatibele opslag
  Bestandssysteem
  FTP
  Google Cloud Storage
  HDFS
  Algemene HTTP
  Microsoft Fabric Lakehouse
  Oracle Cloud Storage
  SFTP
Algemeen protocol Algemene OData
  Algemene ODBC
  SharePoint Online-lijst
Services en apps Amazon Marketplace Web Service
  Concur (preview)
  Dataverse
  Dynamics 365
  Dynamics AX
  Dynamics CRM
  HubSpot
  Jira
  Azure Data Explorer (Kusto)
  Magento (preview)
  Marketo (preview)
  Oracle Eloqua (preview)
  Oracle Responsys (preview)
  Oracle Service Cloud (preview)
  Paypal (preview)
  QuickBooks (preview)
  SAP Cloud for Customer (C4C)
  SAP ECC
  Salesforce
  Salesforce Marketing Cloud
  Salesforce Service Cloud
  ServiceNow
  Shopify (preview)
  Snowflake
  Square (preview)
  Webtabel (HTML-tabel)
  Xero
  Zoho (preview)

Notitie

Als er een connector is gemarkeerd als preview, kunt u deze uitproberen en ons naderhand feedback geven. Neem contact op met de ondersteuning van Azure als u een afhankelijkheid van preview-connectors wilt opnemen in uw oplossing.

Syntaxis

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

Typeeigenschappen

Name Omschrijving Type Vereist?
gegevensset Biedt de verwijzing naar de gegevensset voor de zoekactie. Details ophalen uit de sectie Eigenschappen van gegevensset in elk corresponderend connectorartikel. Sleutel/waardepaar Ja
source Bevat gegevenssetspecifieke broneigenschappen, hetzelfde als de bron van de kopieeractiviteit. Details ophalen uit de sectie Eigenschappen van kopieeractiviteit in elk bijbehorende connectorartikel. Sleutel/waardepaar Ja
firstRowOnly Geeft aan of alleen de eerste rij of alle rijen moeten worden geretourneerd. Booleaanse waarde Nee De standaardwaarde is true.

Notitie

  • Bronkolommen met het type ByteArray worden niet ondersteund.
  • Structuur wordt niet ondersteund in gegevenssetdefinities. Voor tekstbestanden gebruikt u de veldnamenrij om de kolomnaam op te geven.
  • Als uw opzoekbron een JSON-bestand is, wordt de jsonPathDefinition instelling voor het opnieuw vormgeven van het JSON-object niet ondersteund. De hele objecten worden opgehaald.

Het resultaat van de opzoekactiviteit gebruiken

Het opzoekresultaat wordt geretourneerd in de output sectie van het resultaat van de activiteitsuitvoering.

  • Wanneer firstRowOnly deze is ingesteld op true (standaard), wordt de uitvoerindeling weergegeven in de volgende code. Het opzoekresultaat bevindt zich onder een vaste firstRow sleutel. Als u het resultaat in de volgende activiteit wilt gebruiken, gebruikt u het patroon van @{activity('LookupActivity').output.firstRow.table}.

    {
        "firstRow":
        {
            "Id": "1",
            "schema":"dbo",
            "table":"Table1"
        }
    }
    
  • Wanneer firstRowOnly dit is ingesteld false, is de uitvoerindeling zoals weergegeven in de volgende code. Een count veld geeft aan hoeveel records er worden geretourneerd. Gedetailleerde waarden worden weergegeven onder een vaste value matrix. In dat geval wordt de opzoekactiviteit gevolgd door een Foreach-activiteit. U geeft de value matrix door aan het forEach-activiteitsveld items met behulp van het patroon .@activity('MyLookupActivity').output.value Gebruik de volgende syntaxis om toegang te krijgen tot elementen in de value matrix: @{activity('lookupActivity').output.value[zero based index].propertyname} Een voorbeeld is @{activity('lookupActivity').output.value[0].schema}.

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

Opmerking

In dit voorbeeld bevat de pijplijn twee activiteiten: Opzoeken en kopiëren. De kopieeractiviteit kopieert gegevens uit een SQL-tabel in uw Azure SQL Database-exemplaar naar Azure Blob Storage. De naam van de SQL-tabel wordt opgeslagen in een JSON-bestand in Blob Storage. Met de opzoekactiviteit wordt de tabelnaam tijdens runtime opgezoekd. JSON wordt dynamisch gewijzigd met behulp van deze methode. U hoeft geen pijplijnen of gegevenssets opnieuw te implementeren.

In dit voorbeeld ziet u alleen de zoekfunctie voor de eerste rij. Zie de voorbeelden in Het bulksgewijs kopiëren van meerdere tabellen voor het zoeken naar alle rijen en om de resultaten te koppelen aan forEach-activiteit.

Pijplijn

  • De lookup-activiteit is geconfigureerd voor het gebruik van LookupDataset, die verwijst naar een locatie in Azure Blob Storage. De opzoekactiviteit leest de naam van de SQL-tabel uit een JSON-bestand op deze locatie.
  • De kopieeractiviteit maakt gebruik van de uitvoer van de opzoekactiviteit. Dit is de naam van de SQL-tabel. De eigenschap tableName in de SourceDataset is geconfigureerd voor het gebruik van de uitvoer van de opzoekactiviteit. Kopieeractiviteit kopieert gegevens uit de SQL-tabel naar een locatie in Azure Blob Storage. De locatie wordt opgegeven door de eigenschap 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"
    }
}

Opzoekgegevensset

De opzoekgegevensset is het bestand sourcetable.json in de azure Storage-zoekmap die is opgegeven door het type AzureBlobStorageLinkedService .

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

Brongegevensset voor kopieeractiviteit

De brongegevensset maakt gebruik van de uitvoer van de opzoekactiviteit. Dit is de naam van de SQL-tabel. Kopieeractiviteit kopieert gegevens uit deze SQL-tabel naar een locatie in Azure Blob Storage. De locatie wordt opgegeven door de sinkgegevensset .

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

Sink-gegevensset voor kopieeractiviteit

Kopieeractiviteit kopieert gegevens uit de SQL-tabel naar het bestand filebylookup.csv in de CSV-map in Azure Storage. Het bestand wordt opgegeven door de eigenschap 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

U kunt de volgende twee soorten indelingen gebruiken voor het bestand sourcetable.json .

Set objecten

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

Matrix van objecten

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

Beperkingen en oplossingen

Hier volgen enkele beperkingen van de opzoekactiviteit en voorgestelde tijdelijke oplossingen.

Beperking Tijdelijke oplossing
De opzoekactiviteit heeft maximaal 5000 rijen en een maximale grootte van 4 MB. Ontwerp een pijplijn op twee niveaus waarbij de buitenste pijplijn wordt herhaald via een binnenste pijplijn, waarmee gegevens worden opgehaald die niet groter zijn dan de maximumrijen of grootte.

Bekijk andere controlestroomactiviteiten die worden ondersteund door Azure Data Factory- en Synapse-pijplijnen: