Uppslagsaktivitet i Azure Data Factory och Azure Synapse Analytics

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Uppslagsaktivitet kan hämta en datauppsättning från någon av de datakällor som stöds av datafabriken och Synapse-pipelines. Du kan använda den för att dynamiskt avgöra vilka objekt som ska användas i en efterföljande aktivitet, i stället för att hårdkoda objektnamnet. Vissa objektexempel är filer och tabeller.

Uppslagsaktiviteten läser och returnerar innehållet i en konfigurationsfil eller tabell. Den returnerar också resultatet av att köra en fråga eller lagrad procedur. Utdata kan vara ett singleton-värde eller en matris med attribut, som kan användas i en efterföljande kopierings-, transformerings- eller kontrollflödesaktiviteter som ForEach-aktivitet.

Skapa en sökningsaktivitet med användargränssnittet

Utför följande steg för att använda en sökningsaktivitet i en pipeline:

  1. Sök efter Sökning i fönstret Pipelineaktiviteter och dra en sökningsaktivitet till pipelinearbetsytan.

  2. Välj den nya uppslagsaktiviteten på arbetsytan om den inte redan är markerad och fliken Inställningar för att redigera dess information.

    Shows the UI for a Lookup activity.

  3. Välj en befintlig källdatauppsättning eller välj knappen Nytt för att skapa en ny.

  4. Alternativen för att identifiera rader som ska inkluderas från källdatauppsättningen varierar beroende på datamängdstyp. Exemplet ovan visar konfigurationsalternativen för en avgränsad textdatauppsättning. Nedan visas exempel på konfigurationsalternativ för en Azure SQL-tabelldatauppsättning och en OData-datauppsättning.

    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.

Funktioner som stöds

Notera följande:

  • Sökningsaktiviteten kan returnera upp till 5 000 rader. Om resultatuppsättningen innehåller fler poster returneras de första 5 000 raderna.
  • Uppslagsaktivitetens utdata har stöd för upp till 4 MB i storlek. Aktiviteten misslyckas om storleken överskrider gränsen.
  • Den längsta varaktigheten för uppslagsaktivitet före timeout är 24 timmar.

Kommentar

När du använder fråga eller lagrad procedur för att söka efter data ska du returnera en och exakt en resultatuppsättning. Annars misslyckas sökningsaktiviteten.

Följande datakällor stöds för sökningsaktivitet.

Kategori Datalager
Azure Azure Blob Storage
  Azure Cosmos DB för NoSQL
  Azure Data Explorer (Kusto)
  Azure Data Lake Storage Gen1
  Azure Data Lake Storage Gen2
  Azure Database för MariaDB
  Azure Database for MySQL
  Azure Database for PostgreSQL
  Azure Databricks Delta Lake
  Azure Files
  Azure SQL Database
  Hanterad Azure SQL-instans
  Azure Synapse Analytics
  Azure Table Storage
Databas Amazon RDS för Oracle
  Amazon RDS för SQL Server
  Amazon Redshift
  Apache Impala
  Hanterad Azure SQL-instans
  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-tabell
  SQL Server
  Spark
  Sybase
  Teradata
  Vertica
NoSQL Cassandra
  Couchbase (förhandsversion)
Arkiv Amazon S3
  Amazon S3-kompatibel lagring
  Filsystem
  FTP
  Google Cloud Storage
  HDFS
  Generisk HTTP
  Microsoft Fabric Lakehouse
  Oracle Cloud Storage
  SFTP
Generiskt protokoll OData (allmän)
  ODBC (allmän)
  SharePoint Online-lista
Tjänster och appar Amazon Marketplace Web Service
  Concur (förhandsversion)
  Dataverse
  Dynamics 365
  Dynamics AX
  Dynamics CRM
  Hubspot
  Jira
  Azure Data Explorer (Kusto)
  Magento (förhandsversion)
  Marketo (förhandsversion)
  Oracle Eloqua (förhandsversion)
  Oracle Responsys (förhandsversion)
  Oracle Service Cloud (förhandsversion)
  PayPal (förhandsversion)
  QuickBooks (förhandsversion)
  SAP Cloud for Customer (C4C)
  SAP ECC
  Salesforce
  Salesforce Marketing Cloud
  Salesforce Service Cloud
  ServiceNow
  Shopify (förhandsversion)
  Snowflake
  Square (förhandsversion)
  Webbtabell (HTML-tabell)
  Xero
  Zoho (förhandsversion)

Kommentar

De anslutningsappar som är märkta med förhandsversion kan du testa och sedan ge feedback till oss. Om du vill skapa ett beroende på anslutningsappar som är i förhandsversion i din lösning kan du kontakta Azure-supporten.

Syntax

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

Typegenskaper

Name beskrivning Type Obligatorisk?
datauppsättning Innehåller datamängdsreferensen för sökningen. Hämta information från avsnittet Datauppsättningsegenskaper i varje motsvarande anslutningsartikel. Nyckel/värde-par Ja
source Innehåller datauppsättningsspecifika källegenskaper, samma som kopieringsaktivitetskällan. Hämta information från avsnittet Egenskaper för kopieringsaktivitet i varje motsvarande kopplingsartikel. Nyckel/värde-par Ja
firstRowOnly Anger om endast den första raden eller alla rader ska returneras. Booleskt Nej. Standardvärdet är true.

Kommentar

  • Källkolumner med typen ByteArray stöds inte.
  • Struktur stöds inte i datauppsättningsdefinitioner. För textformatfiler använder du rubrikraden för att ange kolumnnamnet.
  • Om din uppslagskälla är en JSON-fil jsonPathDefinition stöds inte inställningen för att omforma JSON-objektet. Hela objekten hämtas.

Använd resultatet av uppslagsaktiviteten

Uppslagsresultatet returneras i avsnittet i output aktivitetskörningsresultatet.

  • När firstRowOnly är inställt på true (standard)är utdataformatet som visas i följande kod. Uppslagsresultatet finns under en fast firstRow nyckel. Om du vill använda resultatet i efterföljande aktivitet använder du mönstret @{activity('LookupActivity').output.firstRow.table}för .

    {
        "firstRow":
        {
            "Id": "1",
            "schema":"dbo",
            "table":"Table1"
        }
    }
    
  • När firstRowOnly är inställt på falseär utdataformatet som det visas i följande kod. Ett count fält anger hur många poster som returneras. Detaljerade värden visas under en fast value matris. I sådana fall följs uppslagsaktiviteten av en Foreach-aktivitet. Du skickar matrisen value till aktivitetsfältet ForEach items med hjälp av @activity('MyLookupActivity').output.valuemönstret för . Om du vill komma åt element i matrisen value använder du följande syntax: @{activity('lookupActivity').output.value[zero based index].propertyname}. Ett exempel är @{activity('lookupActivity').output.value[0].schema}.

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

Exempel

I det här exemplet innehåller pipelinen två aktiviteter: Uppslag och Kopiera. Kopieringsaktiviteten kopierar data från en SQL-tabell i din Azure SQL Database-instans till Azure Blob Storage. Namnet på SQL-tabellen lagras i en JSON-fil i Blob Storage. Uppslagsaktiviteten söker upp tabellnamnet vid körning. JSON ändras dynamiskt med den här metoden. Du behöver inte distribuera om pipelines eller datauppsättningar.

Det här exemplet visar endast uppslag för den första raden. För sökning efter alla rader och för att länka resultaten med ForEach-aktivitet, se exemplen i Kopiera flera tabeller i bulk.

Pipeline

  • Sökningsaktiviteten är konfigurerad för att använda LookupDataset, som refererar till en plats i Azure Blob Storage. Sökningsaktiviteten läser namnet på SQL-tabellen från en JSON-fil på den här platsen.
  • Kopieringsaktiviteten använder utdata från sökningsaktiviteten, som är namnet på SQL-tabellen. Egenskapen tableName i SourceDataset är konfigurerad för att använda utdata från sökningsaktiviteten. Kopieringsaktivitet kopierar data från SQL-tabellen till en plats i Azure Blob Storage. Platsen anges av egenskapen 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"
    }
}

Uppslagsdatauppsättning

Uppslagsdatauppsättningen är filen sourcetable.json i azure storage-uppslagsmappen som anges av typen AzureBlobStorageLinkedService.

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

Källdatauppsättning för kopieringsaktivitet

Källdatauppsättningen använder utdata från sökningsaktiviteten, som är namnet på SQL-tabellen. Kopieringsaktivitet kopierar data från den här SQL-tabellen till en plats i Azure Blob Storage. Platsen anges av datauppsättningen för mottagare .

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

Datauppsättning för mottagare för kopieringsaktivitet

Kopieringsaktivitet kopierar data från SQL-tabellen till filen filebylookup.csv i csv-mappen i Azure Storage. Filen anges av egenskapen 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

Du kan använda följande två typer av format för sourcetable.json-filen .

Uppsättning objekt

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

Objektmatris

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

Begränsningar och lösningar

Här följer några begränsningar för sökningsaktiviteten och föreslagna lösningar.

Begränsning Lösning
Uppslagsaktiviteten har högst 5 000 rader och en maximal storlek på 4 MB. Utforma en pipeline på två nivåer där den yttre pipelinen itererar över en inre pipeline, som hämtar data som inte överskrider maximala rader eller storlek.

Se andra kontrollflödesaktiviteter som stöds av Azure Data Factory- och Synapse-pipelines: