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:
Sök efter Sökning i fönstret Pipelineaktiviteter och dra en sökningsaktivitet till pipelinearbetsytan.
Välj den nya uppslagsaktiviteten på arbetsytan om den inte redan är markerad och fliken Inställningar för att redigera dess information.
Välj en befintlig källdatauppsättning eller välj knappen Nytt för att skapa en ny.
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.
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.
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 fastfirstRow
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. Ettcount
fält anger hur många poster som returneras. Detaljerade värden visas under en fastvalue
matris. I sådana fall följs uppslagsaktiviteten av en Foreach-aktivitet. Du skickar matrisenvalue
till aktivitetsfältet ForEachitems
med hjälp av@activity('MyLookupActivity').output.value
mönstret för . Om du vill komma åt element i matrisenvalue
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 den sourcetable.json filen 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 den filebylookup.csv filen 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 fil.
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. |
Relaterat innehåll
Se andra kontrollflödesaktiviteter som stöds av Azure Data Factory- och Synapse-pipelines: