Keresési tevékenység Azure Data Factory és Azure Synapse Analyticsben

A KÖVETKEZŐKRE VONATKOZIK: Azure Data Factory Azure Synapse Analytics

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. A használatával dinamikusan meghatározhatja, hogy mely objektumokon kell egy későbbi tevékenységben dolgoznia 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 egy szimpla érték vagy attribútumok tömbje, amelyek felhasználhatók egy későbbi másolási, átalakítási vagy vezérlési folyamat tevékenységeiben, 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 az alábbi 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. Válassza 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.

    Egy keresési tevékenység felhasználói felületét jeleníti meg.

  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.

    Egy Azure SQL táblaadatkészlet keresési tevékenységének konfigurációs beállításait jeleníti meg.

    Az OData-adathalmaz keresési tevékenységének konfigurációs beállításait jeleníti meg.

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 leghosszabb időtartama az időtúllépés előtt 24 óra.

Megjegyzés

Ha lekérdezéssel vagy tárolt eljárással keres adatokat, győződjön meg arról, hogy egy és pontosan egy eredményhalmazt ad vissza. 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 Database-példány
  Azure Synapse Analytics
  Azure Table storage
Adatbázis Amazon RDS for Oracle
  Amazon RDS for SQL Server
  Amazon Redshift
  Apache Impala
  Felügyelt Azure SQL Database-példány
  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-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
  Google 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ó)
  Microsoft 365
  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áblázat)
  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.

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ő?
Adatkészlet Megadja a keresés adathalmaz-referenciáját. Az egyes összekötőkről szóló cikk Adathalmaz tulajdonságai szakaszában talál részleteket. Kulcs/érték pár Yes
source Adathalmaz-specifikus forrástulajdonságokat tartalmaz, ugyanazzal, mint a Másolási tevékenység forrása. Az egyes összekötőkről szóló cikk Másolási tevékenység tulajdonságai szakaszában talál részleteket. Kulcs/érték pár Yes
firstRowOnly Azt jelzi, hogy csak az első sort vagy az összes sort adja vissza. Logikai Nem. A mező alapértelmezett értéke: 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 lekéri a teljes objektumokat.

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 a (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 a értékre falsevan állítva, a kimeneti formátum az alábbi kódban látható. A count mező azt jelzi, hogy a rendszer hány rekordot ad vissza. A részletes értékek rögzített value tömbben 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 value eléréséhez használja a 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 a Azure SQL Database-példány egy SQL-táblájából az Azure Blob Storage-ba. Az SQL-tábla neve egy JSON-fájlban van tárolva 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 SourceDatasettableName 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 határozza 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"
    }
}

Adathalmaz keresése

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 határozza 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

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

Objektumok halmaza

{
   "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 egy kétszintű folyamatot, ahol 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.

Következő lépések

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