Aktivita vyhledávání ve službě Azure Data Factory a Azure Synapse Analytics
PLATÍ PRO: Azure Data Factory Azure Synapse Analytics
Tip
Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.
Aktivita vyhledávání může načíst datovou sadu z libovolného zdroje dat podporovaného kanály datové továrny a Synapse. Můžete ho použít k dynamickému určení objektů, na kterých se má v následné aktivitě pracovat, a nikoli k pevnému kódování názvu objektu. Některé příklady objektů jsou soubory a tabulky.
Aktivita vyhledávání čte a vrací obsah konfiguračního souboru nebo tabulky. Vrátí také výsledek spuštění dotazu nebo uložené procedury. Výstupem může být jedna hodnota nebo pole atributů, které je možné využít v následných aktivitách kopírování, transformace nebo toku řízení, jako je aktivita ForEach.
Vytvoření aktivity vyhledávání pomocí uživatelského rozhraní
Pokud chcete v kanálu použít aktivitu vyhledávání, proveďte následující kroky:
Vyhledejte vyhledávání v podokně Aktivity kanálu a přetáhněte aktivitu vyhledávání na plátno kanálu.
Pokud ještě není vybraná, vyberte novou aktivitu Vyhledávání na plátně a jeho kartu Nastavení a upravte její podrobnosti.
Zvolte existující zdrojovou datovou sadu nebo vyberte tlačítko Nový a vytvořte novou datovou sadu.
Možnosti identifikace řádků, které se mají zahrnout ze zdrojové datové sady, se budou lišit v závislosti na typu datové sady. Výše uvedený příklad ukazuje možnosti konfigurace textové datové sady s oddělovači. Níže jsou uvedeny příklady možností konfigurace pro datovou sadu tabulky Azure SQL a datovou sadu OData.
Podporované funkce
Je potřeba upozornit na následující:
- Aktivita Vyhledávání může vrátit až 5 000 řádků. Pokud sada výsledků obsahuje více záznamů, vrátí se prvních 5 000 řádků.
- Výstup aktivity Vyhledávání podporuje velikost až 4 MB , aktivita selže, pokud velikost překročí limit.
- Nejdelší doba trvání aktivity Lookup před vypršením časového limitu je 24 hodin.
Poznámka:
Pokud k vyhledávání dat používáte dotaz nebo uloženou proceduru, nezapomeňte vrátit jednu a přesnou sadu výsledků. V opačném případě aktivita vyhledávání selže.
Pro aktivitu Vyhledávání jsou podporovány následující zdroje dat.
Poznámka:
Konektory s označením Preview si můžete vyzkoušet a poskytnout nám k nim zpětnou vazbu. Pokud do svého řešení chcete zavést závislost na konektorech ve verzi Preview, kontaktujte podporu Azure.
Syntaxe
{
"name":"LookupActivity",
"type":"Lookup",
"typeProperties":{
"source":{
"type":"<source type>"
},
"dataset":{
"referenceName":"<source dataset name>",
"type":"DatasetReference"
},
"firstRowOnly":<true or false>
}
}
Vlastnosti typu
Název | Popis | Typ | Povinné? |
---|---|---|---|
datová sada | Poskytuje referenční informace k datové sadě pro vyhledávání. Podrobnosti najdete v části Vlastnosti datové sady v každém odpovídajícím článku o konektoru. | Pár klíč/hodnota | Ano |
zdroj | Obsahuje vlastnosti zdroje specifické pro datovou sadu, stejné jako zdroj aktivity kopírování. Podrobnosti najdete v části Vlastnosti aktivity kopírování v každém odpovídajícím článku konektoru. | Pár klíč/hodnota | Ano |
firstRowOnly | Určuje, zda se má vrátit pouze první řádek nebo všechny řádky. | Logická hodnota | Ne. Výchozí hodnota je true . |
Poznámka:
- Zdrojové sloupce s typem ByteArray se nepodporují.
- Struktura se v definicích datových sad nepodporuje. U textových souborů zadejte název sloupce pomocí řádku záhlaví.
- Pokud je zdrojem vyhledávání soubor JSON,
jsonPathDefinition
nastavení pro přetváření objektu JSON se nepodporuje. Načtou se celé objekty.
Použití výsledku aktivity Vyhledávání
Výsledek vyhledávání se vrátí v output
části výsledku spuštění aktivity.
Pokud
firstRowOnly
je nastavená hodnotatrue
(výchozí) formát výstupu, jak je znázorněno v následujícím kódu. Výsledek vyhledávání je pod pevnýmfirstRow
klíčem. Chcete-li použít výsledek v následné aktivitě, použijte vzor .@{activity('LookupActivity').output.firstRow.table}
{ "firstRow": { "Id": "1", "schema":"dbo", "table":"Table1" } }
Pokud
firstRowOnly
je nastavena nafalse
hodnotu , výstupní formát je zobrazený v následujícím kódu. Polecount
určuje, kolik záznamů se vrátí. Podrobné hodnoty se zobrazují pod pevnýmvalue
polem. V takovém případě následuje aktivita Vyhledávání aktivity Foreach. Pole předátevalue
do pole aktivityitems
ForEach pomocí vzoru@activity('MyLookupActivity').output.value
. Pro přístup k prvkůmvalue
v poli použijte následující syntaxi:@{activity('lookupActivity').output.value[zero based index].propertyname}
. Příklad:@{activity('lookupActivity').output.value[0].schema}
.{ "count": "2", "value": [ { "Id": "1", "schema":"dbo", "table":"Table1" }, { "Id": "2", "schema":"dbo", "table":"Table2" } ] }
Příklad
V tomto příkladu kanál obsahuje dvě aktivity: vyhledávání a kopírování. Aktivita kopírování kopíruje data z tabulky SQL v instanci služby Azure SQL Database do služby Azure Blob Storage. Název tabulky SQL je uložený v souboru JSON v úložišti objektů blob. Aktivita Vyhledávání vyhledá název tabulky za běhu. Kód JSON se dynamicky mění pomocí tohoto přístupu. Kanály ani datové sady nemusíte nasadit znovu.
Tento příklad ukazuje vyhledávání pouze pro první řádek. Pokud chcete vyhledat všechny řádky a zřetězit výsledky s aktivitou ForEach, podívejte se na ukázky hromadného kopírování více tabulek.
Kanál
- Aktivita Vyhledávání je nakonfigurovaná tak, aby používala lookupDataset, která odkazuje na umístění ve službě Azure Blob Storage. Aktivita Vyhledávání čte název tabulky SQL ze souboru JSON v tomto umístění.
- Aktivita kopírování používá výstup aktivity vyhledávání, což je název tabulky SQL. Vlastnost tableName ve SourceDataset je nakonfigurována tak, aby používala výstup z aktivity Lookup. Aktivita kopírování kopíruje data z tabulky SQL do umístění ve službě Azure Blob Storage. Umístění je určeno vlastností 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"
}
}
Vyhledávací datová sada
Vyhledávací datová sada je soubor sourcetable.json ve vyhledávací složce Azure Storage určené typem AzureBlobStorageLinkedService.
{
"name": "LookupDataset",
"properties": {
"linkedServiceName": {
"referenceName": "AzureBlobStorageLinkedService",
"type": "LinkedServiceReference"
},
"annotations": [],
"type": "Json",
"typeProperties": {
"location": {
"type": "AzureBlobStorageLocation",
"fileName": "sourcetable.json",
"container": "lookup"
}
}
}
}
Zdrojová datová sada pro aktivitu kopírování
Zdrojová datová sada používá výstup aktivity Vyhledávání, což je název tabulky SQL. Aktivita kopírování kopíruje data z této tabulky SQL do umístění ve službě Azure Blob Storage. Umístění je určeno datovou sadou jímky .
{
"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"
}
}
}
}
Datová sada jímky pro aktivitu kopírování
Aktivita kopírování kopíruje data z tabulky SQL do souboru filebylookup.csv ve složce CSV ve službě Azure Storage. Soubor je určen azureBlobStorageLinkedService vlastnost.
{
"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
Pro sourcetable.json soubor můžete použít následující dva typy formátů.
Sada objektů
{
"Id":"1",
"schema":"dbo",
"table":"Table1"
}
{
"Id":"2",
"schema":"dbo",
"table":"Table2"
}
Pole řetězců
[
{
"Id": "1",
"schema":"dbo",
"table":"Table1"
},
{
"Id": "2",
"schema":"dbo",
"table":"Table2"
}
]
Omezení a zástupná řešení
Tady jsou některá omezení aktivity vyhledávání a navrhovaná alternativní řešení.
Omezení | Alternativní řešení |
---|---|
Aktivita Vyhledávání má maximálně 5 000 řádků a maximální velikost 4 MB. | Vytvořte dvouúrovňový kanál, ve kterém se vnější kanál iteruje přes vnitřní kanál, který načte data, která nepřekračují maximální počet řádků nebo velikosti. |
Související obsah
Podívejte se na další aktivity toku řízení podporované kanály Azure Data Factory a Synapse: