Sdílet prostřednictvím


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:

  1. Vyhledejte vyhledávání v podokně Aktivity kanálu a přetáhněte aktivitu vyhledávání na plátno kanálu.

  2. Vyberte novou aktivitu Vyhledávání na plátně, pokud ještě není vybraná, a její Nastavení kartu pro úpravu podrobností.

    Shows the UI for a Lookup activity.

  3. Zvolte existující zdrojovou datovou sadu nebo vyberte tlačítko Nový a vytvořte novou datovou sadu.

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

    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.

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.

Kategorie Úložiště dat
Azure Azure Blob Storage
  Azure Cosmos DB for NoSQL
  Azure Data Explorer (Kusto)
  Azure Data Lake Storage Gen1
  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
  Spravovaná instance Azure SQL
  Azure Synapse Analytics
  Azure Table storage
Databáze Amazon RDS pro Oracle
  Amazon RDS pro SQL Server
  Amazon Redshift
  Apache Impala
  Spravovaná instance Azure SQL
  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 přes MDX
  SAP HANA
  Tabulka SAP
  SQL Server
  Spark
  Sybase
  Teradata
  Vertica
NoSQL Cassandra
  Couchbase (Preview)
Soubor Amazon S3
  Úložiště kompatibilní s Amazon S3
  Systém souborů
  FTP
  Cloudové úložiště Googlu
  HDFS
  Obecná rozhraní HTTP
  Microsoft Fabric Lakehouse
  Oracle Cloud Storage
  SFTP
Obecný protokol Obecná OData
  Obecná rozhraní ODBC
  Seznam služby SharePoint Online
Služby a aplikace Webová služba Amazon Marketplace
  Concur (Preview)
  Dataverse
  Dynamics 365
  Dynamics AX
  Dynamics CRM
  HubSpot
  Jira
  Azure Data Explorer (Kusto)
  Magento (Preview)
  Marketo (Preview)
  Oracle Eloqua (Preview)
  Oracle Responsys (Preview)
  Oracle Service Cloud (Preview)
  PayPal (Preview)
  QuickBooks (Preview)
  SAP Cloud for Customer (C4C)
  SAP ECC
  Salesforce
  Salesforce Marketing Cloud
  Cloud služeb Salesforce
  ServiceNow
  Shopify (Preview)
  Snowflake
  Square (Preview)
  Webová tabulka (tabulka HTML)
  Xero
  Zoho (Preview)

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á hodnota true (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ým firstRow 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 na falsehodnotu , výstupní formát je zobrazený v následujícím kódu. Pole count určuje, kolik záznamů se vrátí. Podrobné hodnoty se zobrazují pod pevným value polem. V takovém případě následuje aktivita Vyhledávání aktivity Foreach. Pole předáte value do pole aktivity items ForEach pomocí vzoru @activity('MyLookupActivity').output.value. Pro přístup k prvkům value 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 složce vyhledávání 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 soubor sourcetable.json 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.

Podívejte se na další aktivity toku řízení podporované kanály Azure Data Factory a Synapse: