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:
Wyszukaj wyszukiwanie w okienku Działania potoku i przeciągnij działanie Lookup na kanwę potoku.
Wybierz nowe działanie Lookup na kanwie, jeśli nie zostało jeszcze wybrane, a jego karta Ustawienia , aby edytować jego szczegóły.
Wybierz istniejący źródłowy zestaw danych lub wybierz przycisk Nowy , aby utworzyć nowy.
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.
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.
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łymfirstRow
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. Polecount
wskazuje liczbę zwracanych rekordów. Szczegółowe wartości są wyświetlane w stałejvalue
tablicy. W takim przypadku działanie Lookup jest wykonywane przez działanie Foreach. Tablicęvalue
należy przekazać do pola działaniaitems
ForEach przy użyciu wzorca@activity('MyLookupActivity').output.value
. Aby uzyskać dostęp do elementów tablicyvalue
, 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. |
Powiązana zawartość
Zobacz inne działania przepływu sterowania obsługiwane przez potoki usługi Azure Data Factory i Synapse: