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:

  1. Keressen rá a Keresés gombra a folyamattevékenységek panelen, és húzzon egy keresési tevékenységet a folyamatvászonra.

  2. Jelölje ki az új keresési tevékenységet a vásznon, ha még nincs kijelölve, és a Gépház lapot a részletek szerkesztéséhez.

    Shows the UI for a Lookup activity.

  3. Válasszon ki egy meglévő forrásadatkészletet, vagy az Új gombra kattintva hozzon létre egy újat.

  4. 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.

    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.

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.

Megjegyzé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.

Kategória Adattár
Azure Azure Blob Storage
  Azure Cosmos DB for NoSQL
  Azure Data Explorer (Kusto)
  1. generációs Azure Data Lake Storage
  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
  Felügyelt Azure SQL-példány
  Azure Synapse Analytics
  Azure Table storage
Adatbázis Amazon RDS for Oracle
  Sql Serverhez készült Amazon RDS
  Amazon Redshift
  Apache Impala
  Felügyelt Azure SQL-példány
  DB2
  Drill
  Google AdWords
  Google BigQuery
  Greenplum
  HBase
  Hive
  Informix
  MariaDB
  Microsoft Access
  MySQL
  Netezza
  Oracle
  Phoenix
  PostgreSQL
  Gyors
  SAP Business Warehouse Open Hub
  SAP Business Warehouse via MDX
  SAP HANA
  SAP-tábla
  SQL Server
  Spark
  Sybase
  Teradata
  Vertica
NoSQL Cassandra
  Couchbase (előzetes verzió)
Fájl Amazon S3
  Amazon S3-kompatibilis tároló
  Fájlrendszer
  FTP
  Google Cloud Storage
  HDFS
  Általános HTTP
  Microsoft Fabric Lakehouse
  Oracle Cloud Storage
  SFTP
Általános protokoll Általános OData
  Általános ODBC
  SharePoint Online-lista
Szolgáltatások és alkalmazások Amazon Marketplace Web Service
  Concur (előzetes verzió)
  Dataverse
  Dynamics 365
  Dynamics AX
  Dynamics CRM
  HubSpot
  Jira
  Azure Data Explorer (Kusto)
  Magento (előzetes verzió)
  Marketo (előzetes verzió)
  Oracle Eloqua (előzetes verzió)
  Oracle Responsys (előzetes verzió)
  Oracle Service Cloud (előzetes verzió)
  PayPal (előzetes verzió)
  QuickBooks (előzetes verzió)
  SAP Cloud for Customer (C4C)
  SAP ECC
  Salesforce
  Salesforce Marketing Cloud
  Salesforce Service Cloud
  ServiceNow
  Shopify (előzetes verzió)
  Snowflake
  Square (előzetes verzió)
  Webtábla (HTML-tábla)
  Xero
  Zoho (előzetes verzió)

Megjegyzé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.

Szintaxis

{
    "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 Nem. Az alapértelmezett érték true.

Megjegyzé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ékre true 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ített firstRow 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ítva false, a kimeneti formátum az alábbi kódban látható módon jelenik meg. A count mező azt jelzi, hogy hány rekordot ad vissza a rendszer. A részletes értékek rögzített value tömb alatt jelennek meg. Ilyen esetben a Keresési tevékenységet egy Foreach-tevékenység követi. A tömböt a value ForEach tevékenységmezőbe items a következő mintával @activity('MyLookupActivity').output.valueadhatja át: . A tömb elemeinek eléréséhez használja a value 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ában lévő filebylookup.csv fájlba. 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

A sourcetable.json fájl kétféle formátumot használhat.

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.

Tekintse meg az Azure Data Factory és a Synapse-folyamatok által támogatott egyéb vezérlési folyamatokat: