Keresési tevékenység az Azure Data Factoryben és az Azure Synapse Analyticsben
A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics
Tipp.
Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!
A keresési tevékenység lekérheti az adathalmazt az adat-előállító és a Synapse-folyamatok által támogatott adatforrásokból. Ezzel dinamikusan meghatározhatja, hogy mely objektumok működjenek egy későbbi tevékenység során az objektumnév kemény kódolása helyett. Néhány objektum például fájlok és táblák.
A keresési tevékenység beolvassa és visszaadja egy konfigurációs fájl vagy tábla tartalmát. A lekérdezés vagy a tárolt eljárás végrehajtásának eredményét is visszaadja. A kimenet lehet egyetlen vagy attribútumtömb, amely felhasználható egy későbbi másolási, átalakítási vagy vezérlőfolyamat-tevékenységekben, például a ForEach-tevékenységben.
Keresési tevékenység létrehozása felhasználói felülettel
Ha keresési tevékenységet szeretne használni egy folyamatban, hajtsa végre a következő lépéseket:
Keressen rá a Keresés gombra a folyamattevékenységek panelen, és húzzon egy keresési tevékenységet a folyamatvászonra.
Jelölje ki az új keresési tevékenységet a vásznon, ha még nincs kijelölve, és a Beállítások fület a részletek szerkesztéséhez.
Válasszon ki egy meglévő forrásadatkészletet, vagy az Új gombra kattintva hozzon létre egy újat.
A forrásadatkészletből belefoglalandó sorok azonosításának lehetőségei az adathalmaz típusától függően változnak. A fenti példa egy tagolt szöveges adatkészlet konfigurációs beállításait mutatja be. Az alábbiakban példákat talál egy Azure SQL-táblaadatkészlet és egy OData-adatkészlet konfigurációs beállításaira.
Támogatott képességek
Vegye figyelembe a következőket:
- A keresési tevékenység legfeljebb 5000 sort adhat vissza; ha az eredményhalmaz több rekordot tartalmaz, a rendszer az első 5000 sort adja vissza.
- A keresési tevékenység kimenete legfeljebb 4 MB méretű, a tevékenység sikertelen lesz, ha a méret meghaladja a korlátot.
- A keresési tevékenység időtúllépés előtti leghosszabb időtartama 24 óra.
Feljegyzés
Amikor lekérdezéssel vagy tárolt eljárással keres adatokat, mindenképpen adjon vissza egy és pontos eredményhalmazt. Ellenkező esetben a keresési tevékenység meghiúsul.
A keresési tevékenységhez az alábbi adatforrások támogatottak.
Feljegyzés
Az előzetes verzió jelölésű összekötőket kipróbálhatja, és visszajelzést küldhet róluk. Ha függőséget szeretne felvenni a megoldásában található előzetes verziójú összekötőkre, lépjen kapcsolatba az Azure-támogatással.
Syntax
{
"name":"LookupActivity",
"type":"Lookup",
"typeProperties":{
"source":{
"type":"<source type>"
},
"dataset":{
"referenceName":"<source dataset name>",
"type":"DatasetReference"
},
"firstRowOnly":<true or false>
}
}
Típustulajdonságok
Név | Leírás | Típus | Kötelező? |
---|---|---|---|
adathalmaz | Megadja a keresés adathalmaz-referenciáját. Az egyes összekötőkről szóló cikkek Adathalmaz tulajdonságai szakaszából kaphat részletes információkat. | Kulcs/érték pár | Igen |
forrás | Adatkészlet-specifikus forrástulajdonságokat tartalmaz, ugyanazzal, mint a Másolási tevékenység forrása. Az egyes összekötőkről szóló cikkek másolási tevékenység tulajdonságainak szakaszából tájékozódhat. | Kulcs/érték pár | Igen |
firstRowOnly | Azt jelzi, hogy csak az első sort vagy az összes sort adja vissza. | Logikai | Szám Az alapértelmezett érték true . |
Feljegyzés
- A ByteArray típusú forrásoszlopok nem támogatottak.
- Az adathalmaz-definíciók nem támogatják a struktúrát . Szövegformátumú fájlok esetén a fejlécsor használatával adja meg az oszlop nevét.
- Ha a keresési forrás JSON-fájl, a
jsonPathDefinition
JSON-objektum átalakításának beállítása nem támogatott. A rendszer a teljes objektumot lekéri.
A keresési tevékenység eredményének használata
A keresési eredmény a output
tevékenységfuttatás eredményének szakaszában jelenik meg.
Ha
firstRowOnly
(alapértelmezett) értékretrue
van állítva, a kimeneti formátum az alábbi kódban látható módon jelenik meg. A keresési eredmény rögzítettfirstRow
kulcs alatt van. Az eredmény későbbi tevékenységben való használatához használja a következő mintát@{activity('LookupActivity').output.firstRow.table}
: .{ "firstRow": { "Id": "1", "schema":"dbo", "table":"Table1" } }
Ha
firstRowOnly
be van állítvafalse
, a kimeneti formátum az alábbi kódban látható módon jelenik meg. Acount
mező azt jelzi, hogy hány rekordot ad vissza a rendszer. A részletes értékek rögzítettvalue
tömb alatt jelennek meg. Ilyen esetben a Keresési tevékenységet egy Foreach-tevékenység követi. A tömböt avalue
ForEach tevékenységmezőbeitems
a következő mintával@activity('MyLookupActivity').output.value
adhatja át: . A tömb elemeinek eléréséhez használja avalue
következő szintaxist:@{activity('lookupActivity').output.value[zero based index].propertyname}
. Például:@{activity('lookupActivity').output.value[0].schema}
.{ "count": "2", "value": [ { "Id": "1", "schema":"dbo", "table":"Table1" }, { "Id": "2", "schema":"dbo", "table":"Table2" } ] }
Példa
Ebben a példában a folyamat két tevékenységet tartalmaz: Keresés és másolás. A másolási tevékenység adatokat másol az Azure SQL Database-példány egy SQL-táblájából az Azure Blob Storage-ba. Az SQL-tábla nevét egy JSON-fájl tárolja a Blob Storage-ban. A Keresési tevékenység futásidőben megkeresi a tábla nevét. A JSON dinamikusan módosul ezzel a módszerrel. Nem kell újra üzembe helyeznie a folyamatokat vagy adathalmazokat.
Ez a példa csak az első sor keresését mutatja be. Az összes sor kereséséhez és az eredmények ForEach-tevékenységgel való láncolásához tekintse meg a több tábla tömeges másolása című témakör mintáit.
Folyamat
- A keresési tevékenység a LookupDataset használatára van konfigurálva, amely az Azure Blob Storage egy helyére hivatkozik. A keresési tevékenység beolvassa az SQL-tábla nevét egy JSON-fájlból ezen a helyen.
- A Másolási tevékenység a Keresési tevékenység kimenetét használja, amely az SQL-tábla neve. A SourceDataset tableName tulajdonsága úgy van konfigurálva, hogy a keresési tevékenység kimenetét használja. A másolási tevékenység adatokat másol az SQL-táblából egy Azure Blob Storage-beli helyre. A helyet a SinkDataset tulajdonság adja meg.
{
"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"
}
}
Keresési adatkészlet
A keresési adatkészlet az AzureBlobStorageLinkedService típus által megadott Azure Storage keresési mappában található sourcetable.json fájl.
{
"name": "LookupDataset",
"properties": {
"linkedServiceName": {
"referenceName": "AzureBlobStorageLinkedService",
"type": "LinkedServiceReference"
},
"annotations": [],
"type": "Json",
"typeProperties": {
"location": {
"type": "AzureBlobStorageLocation",
"fileName": "sourcetable.json",
"container": "lookup"
}
}
}
}
Másolási tevékenység forrásadatkészlete
A forrásadatkészlet a Keresési tevékenység kimenetét használja, amely az SQL-tábla neve. A másolási tevékenység adatokat másol ebből az SQL-táblából egy Azure Blob Storage-beli helyre. A helyet a fogadó adatkészlete adja meg.
{
"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"
}
}
}
}
Fogadó adatkészlet másolási tevékenységhez
A másolási tevékenység adatokat másol az SQL-táblából az Azure Storage csv mappájának filebylookup.csv fájljába. A fájlt az AzureBlobStorageLinkedService tulajdonság adja meg.
{
"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
Kétféle formátumot használhat sourcetable.json fájlhoz.
Objektumok készlete
{
"Id":"1",
"schema":"dbo",
"table":"Table1"
}
{
"Id":"2",
"schema":"dbo",
"table":"Table2"
}
Objektumok tömbje
[
{
"Id": "1",
"schema":"dbo",
"table":"Table1"
},
{
"Id": "2",
"schema":"dbo",
"table":"Table2"
}
]
Korlátozások és kerülő megoldások
Íme néhány korlátozás a keresési tevékenységre és a javasolt kerülő megoldásokra.
Korlátozás | Áthidaló megoldás |
---|---|
A keresési tevékenység legfeljebb 5000 sort és legfeljebb 4 MB méretű lehet. | Tervezzen kétszintű folyamatot, amelyben a külső folyamat egy belső folyamaton halad át, amely olyan adatokat kér le, amelyek nem lépik túl a maximális sorokat vagy méretet. |
Kapcsolódó tartalom
Tekintse meg az Azure Data Factory és a Synapse-folyamatok által támogatott egyéb vezérlési folyamatokat: