Działanie wyszukiwania w usługach Azure Data Factory i Azure Synapse Analytics

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Napiwek

Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !

Działanie wyszukiwania może pobierać zestaw danych z dowolnego źródła danych obsługiwanego przez fabrykę danych i potoki usługi Synapse. Można go używać do dynamicznego określania obiektów do działania w kolejnym działaniu, zamiast kodowania nazwy obiektu. Niektóre przykłady obiektów to pliki i tabele.

Działanie odnośnika odczytuje i zwraca zawartość pliku konfiguracji lub tabeli. Zwraca również wynik wykonywania zapytania lub procedury składowanej. Dane wyjściowe mogą być pojedynczą wartością lub tablicą atrybutów, które mogą być używane w kolejnych działaniach kopiowania, przekształcania lub przepływu sterowania, takich jak działanie ForEach.

Tworzenie działania Lookup za pomocą interfejsu użytkownika

Aby użyć działania Lookup w potoku, wykonaj następujące kroki:

  1. Wyszukaj wyszukiwanie w okienku Działania potoku i przeciągnij działanie Lookup na kanwę potoku.

  2. Wybierz nowe działanie Lookup na kanwie, jeśli nie zostało jeszcze wybrane, a jej karta Ustawienia, aby edytować jego szczegóły.

    Shows the UI for a Lookup activity.

  3. Wybierz istniejący źródłowy zestaw danych lub wybierz przycisk Nowy , aby utworzyć nowy.

  4. Opcje identyfikowania wierszy do uwzględnienia z źródłowego zestawu danych różnią się w zależności od typu zestawu danych. W powyższym przykładzie przedstawiono opcje konfiguracji rozdzielanego zestawu danych tekstowych. Poniżej przedstawiono przykłady opcji konfiguracji zestawu danych tabeli Azure SQL i zestawu danych 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.

Obsługiwane możliwości

Należy zwrócić uwagę na następujące kwestie:

  • Działanie Lookup może zwrócić maksymalnie 5000 wierszy. Jeśli zestaw wyników zawiera więcej rekordów, zostanie zwróconych pierwszych 5000 wierszy.
  • Dane wyjściowe działania Lookup obsługują maksymalnie 4 MB rozmiaru, a działanie zakończy się niepowodzeniem, jeśli rozmiar przekroczy limit.
  • Najdłuższy czas trwania działania lookup przed przekroczeniem limitu czasu wynosi 24 godziny.

Uwaga

Jeśli używasz zapytania lub procedury składowanej do wyszukiwania danych, pamiętaj, aby zwrócić jeden i dokładnie jeden zestaw wyników. W przeciwnym razie działanie wyszukiwania kończy się niepowodzeniem.

Następujące źródła danych są obsługiwane w przypadku działania Lookup.

Kategoria Magazyn danych
Azure Azure Blob Storage
  Azure Cosmos DB for NoSQL
  Azure Data Explorer (Kusto)
  Usługa Azure Data Lake Storage 1. generacji
  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
  Wystąpienie zarządzane Azure SQL
  Azure Synapse Analytics
  Azure Table storage
Baza danych Amazon RDS for Oracle
  Usługa Amazon RDS dla programu SQL Server
  Amazon Redshift
  Apache Impala
  Wystąpienie zarządzane Azure SQL
  DB2
  Przechodzenie do szczegółów
  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 za pośrednictwem MDX
  SAP HANA
  Tabela SAP
  SQL Server
  Spark
  Sybase
  Teradata
  Vertica
NoSQL Cassandra
  Couchbase (wersja zapoznawcza)
Plik Amazon S3
  Magazyn zgodny z usługą Amazon S3
  System plików
  FTP
  Google Cloud Storage
  HDFS
  Ogólne HTTP
  Microsoft Fabric Lakehouse
  Oracle Cloud Storage
  SFTP
Protokół ogólny Ogólne OData
  Ogólne ODBC
  Lista usługi SharePoint Online
Usługi i aplikacje Usługa internetowa witryny Amazon Marketplace
  Concur (wersja zapoznawcza)
  Dataverse
  Dynamics 365
  Dynamics AX
  Dynamics CRM
  HubSpot
  Jira
  Azure Data Explorer (Kusto)
  Magento (wersja zapoznawcza)
  Marketo (wersja zapoznawcza)
  Oracle Eloqua (wersja zapoznawcza)
  Oracle Responsys (wersja zapoznawcza)
  Oracle Service Cloud (wersja zapoznawcza)
  PayPal (wersja zapoznawcza)
  QuickBooks (wersja zapoznawcza)
  SAP Cloud for Customer (C4C)
  SAP ECC
  Salesforce
  Salesforce Marketing Cloud
  Salesforce Service Cloud
  ServiceNow
  Shopify (wersja zapoznawcza)
  Snowflake
  Square (wersja zapoznawcza)
  Tabela internetowa (tabela HTML)
  Xero
  Zoho (wersja zapoznawcza)

Uwaga

Każdy łącznik oznaczony jako wersja zapoznawcza można wypróbować, a następnie przekazać nam opinię na jego temat. Jeśli w swoim rozwiązaniu chcesz wprowadzić zależność od łączników w wersji zapoznawczej, skontaktuj się z pomocą techniczną platformy Azure.

Składnia

{
    "name":"LookupActivity",
    "type":"Lookup",
    "typeProperties":{
        "source":{
            "type":"<source type>"
        },
        "dataset":{
            "referenceName":"<source dataset name>",
            "type":"DatasetReference"
        },
        "firstRowOnly":<true or false>
    }
}

Właściwości typu

Nazwa/nazwisko opis Type Wymagane?
zestaw danych Zawiera odwołanie do zestawu danych dla wyszukiwania. Uzyskaj szczegółowe informacje z sekcji Właściwości zestawu danych w każdym odpowiednim artykule dotyczącym łącznika. Pary klucz wartość Tak
source Zawiera właściwości źródła specyficzne dla zestawu danych, takie same jak źródło działania kopiowania. Szczegółowe informacje można znaleźć w sekcji Właściwości działania kopiowania w każdym odpowiednim artykule dotyczącym łącznika. Pary klucz wartość Tak
firstRowOnly Wskazuje, czy zwracać tylko pierwszy wiersz, czy wszystkie wiersze. Wartość logiczna L.p. Wartość domyślna to true.

Uwaga

  • Kolumny źródłowe z typem ByteArray nie są obsługiwane.
  • Struktura nie jest obsługiwana w definicjach zestawu danych. W przypadku plików w formacie tekstowym użyj wiersza nagłówka, aby podać nazwę kolumny.
  • Jeśli źródło wyszukiwania jest plikiem JSON, jsonPathDefinition ustawienie przekształcania obiektu JSON nie jest obsługiwane. Zostaną pobrane całe obiekty.

Korzystanie z wyniku działania Lookup

Wynik wyszukiwania jest zwracany w output sekcji wyniku uruchomienia działania.

  • Gdy firstRowOnly jest ustawiona wartość true (wartość domyślna), format danych wyjściowych jest jak pokazano w poniższym kodzie. Wynik wyszukiwania znajduje się pod stałym firstRow kluczem. Aby użyć wyniku w kolejnych działaniach, użyj wzorca @{activity('LookupActivity').output.firstRow.table}.

    {
        "firstRow":
        {
            "Id": "1",
            "schema":"dbo",
            "table":"Table1"
        }
    }
    
  • Gdy firstRowOnly jest ustawiona wartość false, format danych wyjściowych jest pokazany w poniższym kodzie. Pole count wskazuje liczbę zwracanych rekordów. Szczegółowe wartości są wyświetlane w stałej value tablicy. W takim przypadku działanie Lookup jest wykonywane przez działanie Foreach. Tablicę value należy przekazać do pola działania items ForEach przy użyciu wzorca @activity('MyLookupActivity').output.value. Aby uzyskać dostęp do elementów tablicy value , użyj następującej składni: @{activity('lookupActivity').output.value[zero based index].propertyname}. Może to być na przykład @{activity('lookupActivity').output.value[0].schema}.

    {
        "count": "2",
        "value": [
            {
                "Id": "1",
                "schema":"dbo",
                "table":"Table1"
            },
            {
                "Id": "2",
                "schema":"dbo",
                "table":"Table2"
            }
        ]
    } 
    

Przykład

W tym przykładzie potok zawiera dwa działania: Wyszukiwanie i kopiowanie. Działanie kopiowania kopiuje dane z tabeli SQL w wystąpieniu usługi Azure SQL Database do usługi Azure Blob Storage. Nazwa tabeli SQL jest przechowywana w pliku JSON w usłudze Blob Storage. Działanie Lookup wyszukuje nazwę tabeli w czasie wykonywania. Kod JSON jest modyfikowany dynamicznie przy użyciu tego podejścia. Nie musisz ponownie wdrażać potoków ani zestawów danych.

W tym przykładzie pokazano wyszukiwanie tylko pierwszego wiersza. Aby wyszukać wszystkie wiersze i połączyć wyniki za pomocą działania ForEach, zobacz przykłady w artykule Kopiowanie wielu tabel zbiorczo.

Potok

  • Działanie Lookup (Wyszukiwanie) jest skonfigurowane do używania elementu LookupDataset, który odwołuje się do lokalizacji w usłudze Azure Blob Storage. Działanie Lookup odczytuje nazwę tabeli SQL z pliku JSON w tej lokalizacji.
  • Działanie kopiowania używa danych wyjściowych działania Lookup, czyli nazwy tabeli SQL. Właściwość tableName w zestawie SourceDataset jest skonfigurowana do używania danych wyjściowych z działania Lookup. Działanie kopiowania kopiuje dane z tabeli SQL do lokalizacji w usłudze Azure Blob Storage. Lokalizacja jest określana przez właściwość 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"
    }
}

Zestaw danych odnośników

Zestaw danych odnośników jest plikiem sourcetable.json w folderze odnośników usługi Azure Storage określonym przez typ AzureBlobStorageLinkedService .

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

Źródłowy zestaw danych dla działania kopiowania

Źródłowy zestaw danych używa danych wyjściowych działania Lookup, czyli nazwy tabeli SQL. Działanie kopiowania kopiuje dane z tej tabeli SQL do lokalizacji w usłudze Azure Blob Storage. Lokalizacja jest określana przez zestaw danych ujścia.

{
    "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"
            }
        }
    }
}

Zestaw danych ujścia dla działania kopiowania

Działanie kopiowania kopiuje dane z tabeli SQL do pliku filebylookup.csv w folderze csv w usłudze Azure Storage. Plik jest określony przez właściwość AzureBlobStorageLinkedService .

{
    "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

Dla pliku sourcetable.json można użyć następujących dwóch rodzajów formatów.

Zestaw obiektów

{
   "Id":"1",
   "schema":"dbo",
   "table":"Table1"
}
{
   "Id":"2",
   "schema":"dbo",
   "table":"Table2"
}

Tablica obiektów

[ 
    {
        "Id": "1",
        "schema":"dbo",
        "table":"Table1"
    },
    {
        "Id": "2",
        "schema":"dbo",
        "table":"Table2"
    }
]

Ograniczenia i rozwiązania

Poniżej przedstawiono pewne ograniczenia działania Lookup i sugerowane obejścia.

Ograniczenie Rozwiązanie
Działanie Lookup ma maksymalnie 5000 wierszy i maksymalny rozmiar 4 MB. Zaprojektuj dwuwymiarowy potok, w którym zewnętrzny potok wykonuje iterację w potoku wewnętrznym, który pobiera dane, które nie przekraczają maksymalnego rozmiaru wierszy ani rozmiaru.

Zobacz inne działania przepływu sterowania obsługiwane przez potoki usługi Azure Data Factory i Synapse: