Keresési tevékenység a Azure Data Factory és Azure Synapse Analytics

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

A keresési tevékenység lekérhet egy adatkészletet az adat-előállító és a Synapse-folyamatok által támogatott bármely adatforrásból. A használatával dinamikusan meghatározhatja, hogy mely objektumokon kell dolgoznia egy későbbi tevékenységben ahelyett, hogy az objektum nevét szoftveresen bekódolta volna. Ilyenek például a fájlok és a táblák.

A keresési tevékenység beolvassa és visszaadja egy konfigurációs fájl vagy tábla tartalmát. Egy lekérdezés vagy tárolt eljárás futtatásának eredményét is visszaadja. A kimenet lehet egyszeres érték vagy attribútumok tömbje, amely egy későbbi másolási, átalakítási vagy vezérlési folyamattevékenységben, például a ForEach tevékenységben is felhasználható.

Keresési tevékenység létrehozása felhasználói felülettel

Ha keresési tevékenységet használ egy folyamatban, kövesse az alábbi lépéseket:

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

  2. Válassza ki a vásznon az új keresési tevékenységet, ha még nincs kiválasztva, és Gépház gombra a részletek szerkesztéséhez.

    Megjeleníti a keresési tevékenység felhasználói felületét.

  3. Válasszon ki egy meglévő forrásadatkészletet, vagy válassza az Új gombot egy új létrehozásához.

  4. A forrásadatkészletből bevetni kívánt sorok azonosításának lehetőségei az adathalmaz típusától függően eltérőek lehetnek. 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-beli virtuális SQL- és OData-adatkészlet konfigurációs lehetőségeire.

    Megjeleníti az Azure-beli virtuális SQL keresési tevékenységének konfigurációs beállításait.

    Megjeleníti az OData-adatkészlet keresési tevékenységének konfigurációs beállításait.

Támogatott képességek

Vegye figyelembe a következőket:

  • A keresési tevékenység legfeljebb 5000 sort képes visszaadni; Ha az eredményhalmaz több rekordot tartalmaz, a visszaadott első 5000 sor lesz visszaadva.
  • A keresési tevékenység kimenete legfeljebb 4 MB méretet támogat, 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.
  • Ha lekérdezést vagy tárolt eljárást használ az adatok kereséséhez, ügyeljen arra, hogy egy és pontosan egy eredményhalmazt ad vissza. Ellenkező esetben a keresési tevékenység meghiúsul.

A keresési tevékenység az alábbi adatforrásokat támogatja.

Kategória Adattár
Azure Azure Blob Storage
  Azure Cosmos DB (SQL API)
  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 Storage
  Fájlrendszer
  FTP
  Google Cloud Storage
  HDFS
  Általános HTTP
  Oracle Cloud Storage
  SFTP
Általános protokoll Általános OData
  Általános ODBC
  REST
  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ó)
  Office 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ó)
  REST
  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ípus tulajdonságai

Név Leírás Típus Kötelező?
Adatkészlet A keresés adatkészlet-referenciáját biztosítja. A részleteket a megfelelő összekötőket tartalmazó cikk Adatkészlet tulajdonságai szakaszában olvashatja be. Kulcs/érték pár Igen
source Adatkészlet-specifikus forrástulajdonságokat tartalmaz, ugyanúgy, mint a másolási tevékenység forrása. A részleteket a megfelelő összekötőket tartalmazó cikk Másolási tevékenység tulajdonságai szakaszában olvashatja be. Kulcs/érték pár Igen
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.
  • A struktúra nem támogatott az adatkészlet-definíciókban. Szövegformátumú fájlokhoz a fejléc sorában adja meg az oszlop nevét.
  • Ha a keresési forrás egy JSON-fájl, a JSON-objektum újraformálálása nem jsonPathDefinition támogatott. A rendszer lekéri a teljes objektumot.

A keresési tevékenység eredményének használata

A keresési eredményt a tevékenységfuttassa eredmény output szakaszában lehet visszaadni.

  • Ha a true (alapértelmezett) érték vanbeállítva, a kimeneti formátum az alábbi kódban látható. A keresési eredmény rögzített kulcs alatt firstRow van. Ha az eredményt a következő tevékenységben is használnia kell, használja a @{activity('LookupActivity').output.firstRow.table} mintát.

    {
        "firstRow":
        {
            "Id": "1",
            "schema":"dbo",
            "table":"Table1"
        }
    }
    
  • Ha a false beállítása , a kimeneti formátum az alábbi kódban látható. A count mező azt jelzi, hogy a visszaadott rekordok száma hány. A részletes értékek egy rögzített tömbben jelennek value meg. Ebben az esetben a keresési tevékenységet egy Foreachtevékenység követi. A tömböt a ForEach tevékenységmezőbe a minta valueitems használatával lehet @activity('MyLookupActivity').output.value átadni. 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 ésMásolás. A másolási tevékenység adatokat másol a SQL egy Azure SQL Database azure blobtárolóba. A SQL neve egy JSON-fájlban van tárolva a Blob Storage-ban. A keresési tevékenység futásidőben keres a tábla nevét. Ezzel a megközelítéssel dinamikusan módosítható a JSON. A folyamatok és adatkészletek ismételt üzembeését nem kell újra eltennünk.

Ez a példa csak az első sor keresését mutatja be. Az összes sor keresését és az eredmények ForEach tevékenységgel való láncolatát a Több tábla tömeges másolása dokumentumban található példákban láthatja.

Folyamat

  • A keresési tevékenység a LookupDatasethasználatára van konfigurálva, amely az Azure Blob Storage egy helyére hivatkozik. A keresési tevékenység beolvassa a SQL nevét egy ezen a helyen található JSON-fájlból.
  • A másolási tevékenység a keresési tevékenység kimenetét használja, amely a SQL neve. A SourceDataset táblanév 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 a 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 a sourcetable.json fájl az Azure Storage AzureBlobStorageLinkedService típussal megadott keresési mappában.

{
    "name": "LookupDataset",
    "properties": {
        "linkedServiceName": {
            "referenceName": "AzureBlobStorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "annotations": [],
        "type": "Json",
        "typeProperties": {
            "location": {
                "type": "AzureBlobStorageLocation",
                "fileName": "sourcetable.json",
                "container": "lookup"
            }
        }
    }
}

Forrásadatkészlet másolási tevékenységhez

A forrásadatkészlet a keresési tevékenység kimenetét használja, amely a SQL neve. A másolási tevékenység adatokat másol SQL táblából egy Azure Blob Storage-beli helyre. A helyet a fogadó adatkészlet 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 a SQL táblából az Azurefilebylookup.csvcsv mappájában található Storage. 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.

Objektumkészlet

{
   "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 megkerülő megoldások

Íme néhány korlátozás a keresési tevékenységre és a javasolt megkerülő megoldásokra.

Korlátozás Áthidaló megoldás
A keresési tevékenység maximális mérete 5000 sor, maximális mérete pedig 4 MB. Tervezz meg egy kétszintű folyamatot, amelyben a külső folyamat egy belső folyamaton halad át, amely olyan adatokat ad vissza, amelyek nem haladják meg a maximális sort vagy méretet.

Következő lépések

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