Kopiowanie danych do i z usługi Azure Table Storage przy użyciu usługi Azure Data Factory lub 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ą !

W tym artykule opisano sposób używania działania kopiowania w potokach usługi Azure Data Factory i usługi Synapse Analytics w celu kopiowania danych do i z usługi Azure Table Storage. Jest on oparty na artykule Omówienie działania kopiowania, który zawiera ogólne omówienie działania kopiowania.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Obsługiwane możliwości

Ten łącznik usługi Azure Table Storage jest obsługiwany w następujących funkcjach:

Obsługiwane możliwości IR Zarządzany prywatny punkt końcowy
działanie Kopiuj (źródło/ujście) ① ② √ Wykluczanie konta magazynu w wersji 1
Działanie Lookup ① ② √ Wykluczanie konta magazynu w wersji 1

(1) Środowisko Azure Integration Runtime (2) Self-hosted Integration Runtime

Możesz skopiować dane z dowolnego obsługiwanego magazynu danych źródłowych do usługi Table Storage. Możesz również skopiować dane z usługi Table Storage do dowolnego obsługiwanego magazynu danych ujścia. Aby uzyskać listę magazynów danych obsługiwanych jako źródła lub ujścia przez działanie kopiowania, zobacz tabelę Obsługiwane magazyny danych.

W szczególności ten łącznik tabel platformy Azure obsługuje kopiowanie danych przy użyciu klucza konta i uwierzytelniania sygnatury dostępu współdzielonego usługi.

Rozpocznij

Aby wykonać działanie Kopiuj za pomocą potoku, możesz użyć jednego z następujących narzędzi lub zestawów SDK:

Tworzenie połączonej usługi Azure Table Storage przy użyciu interfejsu użytkownika

Wykonaj poniższe kroki, aby utworzyć połączoną usługę Azure Table Storage w interfejsie użytkownika witryny Azure Portal.

  1. Przejdź do karty Zarządzanie w obszarze roboczym usługi Azure Data Factory lub Synapse i wybierz pozycję Połączone usługi, a następnie kliknij pozycję Nowy:

  2. Wyszukaj tabelę platformy Azure i wybierz łącznik usługi Azure Table Storage.

    Screenshot of the Azure Table storage connector.

  3. Skonfiguruj szczegóły usługi, przetestuj połączenie i utwórz nową połączoną usługę.

    Screenshot of configuration for an Azure Table storage linked service.

szczegóły konfiguracji Połączenie or

Poniższe sekcje zawierają szczegółowe informacje o właściwościach używanych do definiowania jednostek specyficznych dla usługi Azure Table Storage.

Właściwości połączonej usługi

Używanie klucza konta

Połączoną usługę Azure Storage można utworzyć przy użyciu klucza konta. Zapewnia usłudze globalny dostęp do usługi Storage. Obsługiwane są następujące właściwości.

Właściwości Opis Wymagania
type Właściwość type musi być ustawiona na AzureTableStorage. Tak
Parametry połączenia Określ informacje potrzebne do nawiązania połączenia z usługą Storage dla właściwości connectionString.
Możesz również umieścić klucz konta w usłudze Azure Key Vault i ściągnąć konfigurację accountKey z parametry połączenia. Zapoznaj się z poniższymi przykładami i artykułem Store credentials in Azure Key Vault (Przechowywanie poświadczeń w usłudze Azure Key Vault ), aby uzyskać więcej szczegółów.
Tak
connectVia Środowisko Integration Runtime do nawiązania połączenia z magazynem danych. Możesz użyć środowiska Azure Integration Runtime lub własnego środowiska Integration Runtime (jeśli magazyn danych znajduje się w sieci prywatnej). Jeśli nie zostanie określony, używa domyślnego środowiska Azure Integration Runtime. Nie.

Uwaga

Jeśli używasz połączonej usługi typu "AzureStorage", nadal jest ona obsługiwana w takiej postaci, podczas gdy sugerowane jest użycie tego nowego typu połączonej usługi "AzureTableStorage" w przyszłości.

Przykład:

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Przykład: przechowywanie klucza konta w usłudze Azure Key Vault

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;",
            "accountKey": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Korzystanie z uwierzytelniania za pomocą sygnatury dostępu współdzielonego

Możesz również utworzyć połączoną usługę Storage przy użyciu sygnatury dostępu współdzielonego. Zapewnia usłudze ograniczony/ograniczony czas dostęp do wszystkich/określonych zasobów w magazynie.

Sygnatura dostępu współdzielonego zapewnia delegowany dostęp do zasobów na koncie magazynu. Można go użyć, aby udzielić klientowi ograniczonych uprawnień do obiektów na koncie magazynu przez określony czas i z określonym zestawem uprawnień. Nie musisz udostępniać kluczy dostępu do konta. Sygnatura dostępu współdzielonego to identyfikator URI, który zawiera w parametrach zapytania wszystkie informacje niezbędne do uwierzytelnionego dostępu do zasobu magazynu. Aby uzyskać dostęp do zasobów magazynu za pomocą sygnatury dostępu współdzielonego, klient musi przekazać tylko sygnaturę dostępu współdzielonego do odpowiedniego konstruktora lub metody. Aby uzyskać więcej informacji na temat sygnatur dostępu współdzielonego, zobacz Sygnatury dostępu współdzielonego: Omówienie modelu sygnatury dostępu współdzielonego.

Uwaga

Sygnatury dostępu współdzielonego usługi i sygnatury dostępu współdzielonego konta są teraz obsługiwane. Aby uzyskać więcej informacji na temat sygnatur dostępu współdzielonego, zobacz Udzielanie ograniczonego dostępu do zasobów usługi Azure Storage przy użyciu sygnatur dostępu współdzielonego (SAS).

Napiwek

Aby wygenerować sygnaturę dostępu współdzielonego usługi dla konta magazynu, możesz wykonać następujące polecenia programu PowerShell. Zastąp symbole zastępcze i przyznaj wymagane uprawnienie. $context = New-AzStorageContext -StorageAccountName <accountName> -StorageAccountKey <accountKey> New-AzStorageContainerSASToken -Name <containerName> -Context $context -Permission rwdl -StartTime <startTime> -ExpiryTime <endTime> -FullUri

Aby użyć uwierzytelniania sygnatury dostępu współdzielonego, obsługiwane są następujące właściwości.

Właściwości Opis Wymagania
type Właściwość type musi być ustawiona na AzureTableStorage. Tak
sasUri Określ identyfikator URI sygnatury dostępu współdzielonego dla tabeli.
Oznacz to pole jako element SecureString, aby przechowywać je bezpiecznie. Możesz również umieścić token SAS w usłudze Azure Key Vault, aby wykorzystać automatyczne obracanie i usunąć część tokenu. Zapoznaj się z poniższymi przykładami i artykułem Store credentials in Azure Key Vault (Przechowywanie poświadczeń w usłudze Azure Key Vault ), aby uzyskać więcej szczegółów.
Tak
connectVia Środowisko Integration Runtime do nawiązania połączenia z magazynem danych. Możesz użyć środowiska Azure Integration Runtime lub własnego środowiska Integration Runtime (jeśli magazyn danych znajduje się w sieci prywatnej). Jeśli nie zostanie określony, używa domyślnego środowiska Azure Integration Runtime. Nie.

Uwaga

Jeśli używasz połączonej usługi typu "AzureStorage", nadal jest ona obsługiwana w takiej postaci, podczas gdy sugerowane jest użycie tego nowego typu połączonej usługi "AzureTableStorage" w przyszłości.

Przykład:

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "sasUri": {
                "type": "SecureString",
                "value": "<SAS URI of the Azure Storage resource e.g. https://<account>.table.core.windows.net/<table>?sv=<storage version>&amp;st=<start time>&amp;se=<expire time>&amp;sr=<resource>&amp;sp=<permissions>&amp;sip=<ip range>&amp;spr=<protocol>&amp;sig=<signature>>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Przykład: przechowywanie klucza konta w usłudze Azure Key Vault

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "sasUri": {
                "type": "SecureString",
                "value": "<SAS URI of the Azure Storage resource without token e.g. https://<account>.table.core.windows.net/<table>>"
            },
            "sasToken": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Podczas tworzenia identyfikatora URI sygnatury dostępu współdzielonego należy wziąć pod uwagę następujące kwestie:

  • Ustaw odpowiednie uprawnienia do odczytu/zapisu dla obiektów na podstawie sposobu użycia połączonej usługi (odczyt, zapis, odczyt/zapis).
  • Odpowiednio ustaw czas wygaśnięcia. Upewnij się, że dostęp do obiektów magazynu nie wygasa w aktywnym okresie potoku.
  • Identyfikator URI powinien zostać utworzony na odpowiednim poziomie tabeli w zależności od potrzeb.

Właściwości zestawu danych

Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania zestawów danych, zobacz artykuł Zestawy danych. Ta sekcja zawiera listę właściwości obsługiwanych przez zestaw danych tabel platformy Azure.

Aby skopiować dane do i z tabeli platformy Azure, ustaw właściwość type zestawu danych na wartość AzureTable. Obsługiwane są następujące właściwości.

Właściwości Opis Wymagania
type Właściwość type zestawu danych musi być ustawiona na AzureTable. Tak
tableName Nazwa tabeli w wystąpieniu bazy danych usługi Table Storage, do którego odwołuje się połączona usługa. Tak

Przykład:

{
    "name": "AzureTableDataset",
    "properties":
    {
        "type": "AzureTable",
        "typeProperties": {
            "tableName": "MyTable"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Azure Table storage linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Wnioskowanie schematu przez usługę

W przypadku magazynów danych bez schematu, takich jak Azure Table, usługa wywnioskuje schemat w jeden z następujących sposobów:

  • Jeśli określisz mapowanie kolumn w działaniu kopiowania, usługa używa listy kolumn po stronie źródłowej do pobierania danych. W takim przypadku, jeśli wiersz nie zawiera wartości dla kolumny, zostanie podana wartość null.
  • Jeśli nie określisz mapowania kolumn w działaniu kopiowania, usługa wywnioskuje schemat przy użyciu pierwszego wiersza w danych. W takim przypadku, jeśli pierwszy wiersz nie zawiera pełnego schematu (np. niektóre kolumny mają wartość null), niektóre kolumny zostaną pominięte w wyniku operacji kopiowania.

Właściwości działania kopiowania

Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania działań, zobacz artykuł Pipelines (Potoki ). Ta sekcja zawiera listę właściwości obsługiwanych przez źródło i ujście tabeli platformy Azure.

Tabela platformy Azure jako typ źródła

Aby skopiować dane z tabeli platformy Azure, ustaw typ źródła w działaniu kopiowania na wartość AzureTableSource. Poniższe właściwości są obsługiwane w sekcji źródła działania kopiowania.

Właściwości Opis Wymagania
type Właściwość type źródła działania kopiowania musi być ustawiona na Wartość AzureTableSource. Tak
azureTableSourceQuery Użyj niestandardowego zapytania usługi Table Storage, aby odczytać dane.
Zapytanie źródłowe to bezpośrednia mapa z $filter opcji zapytania obsługiwanej przez usługę Azure Table Storage, dowiedz się więcej o składni z tego dokumentu i zapoznaj się z przykładami w poniższej sekcji przykładów usługi AzureTableSourceQuery.
Nie.
azureTableSourceIgnoreTableNotFound Wskazuje, czy zezwolić na brak wyjątku tabeli.
Dozwolone wartości to True i False (wartość domyślna).
Nie.

przykłady usługi azureTableSourceQuery

Uwaga

Limit czasu operacji zapytań w tabeli platformy Azure w ciągu 30 sekund jest wymuszany przez usługę Azure Table Service. Dowiedz się, jak zoptymalizować zapytanie z artykułu Projektowanie pod kątem wykonywania zapytań .

Jeśli chcesz filtrować dane względem kolumny typu data/godzina, zapoznaj się z tym przykładem:

"azureTableSourceQuery": "LastModifiedTime gt datetime'2017-10-01T00:00:00' and LastModifiedTime le datetime'2017-10-02T00:00:00'"

Jeśli chcesz filtrować dane względem kolumny typu ciągu, zapoznaj się z tym przykładem:

"azureTableSourceQuery": "LastModifiedTime ge '201710010000_0000' and LastModifiedTime le '201710010000_9999'"

Jeśli używasz parametru potoku, rzutuj wartość daty/godziny do odpowiedniego formatu zgodnie z poprzednimi przykładami.

Tabela platformy Azure jako typ ujścia

Aby skopiować dane do tabeli platformy Azure, ustaw typ ujścia w działaniu kopiowania na wartość AzureTableSink. Poniższe właściwości są obsługiwane w sekcji ujścia działania kopiowania.

Właściwości Opis Wymagania
type Właściwość type ujścia działania kopiowania musi być ustawiona na Wartość AzureTableSink. Tak
azureTableDefaultPartitionKeyValue Domyślna wartość klucza partycji, która może być używana przez ujście. Nie.
azureTablePartitionKeyName Określ nazwę kolumny, której wartości są używane jako klucze partycji. Jeśli nie zostanie określony, parametr "AzureTableDefaultPartitionKeyValue" jest używany jako klucz partycji. Nie.
azureTableRowKeyName Określ nazwę kolumny, której wartości kolumn są używane jako klucz wiersza. Jeśli nie zostanie określony, użyj identyfikatora GUID dla każdego wiersza. Nie.
azureTableInsertType Tryb wstawiania danych do tabeli platformy Azure. Ta właściwość określa, czy istniejące wiersze w tabeli wyjściowej z pasującą partycją i kluczami wierszy mają ich wartości zamienione lub scalone.

Dozwolone wartości to scalanie (wartość domyślna) i zastępowanie.

To ustawienie ma zastosowanie na poziomie wiersza, a nie na poziomie tabeli. Żadna z opcji nie usuwa wierszy w tabeli wyjściowej, które nie istnieją w danych wejściowych. Aby dowiedzieć się, jak działają ustawienia scalania i zastępowania, zobacz Wstawianie lub scalanie jednostki oraz Wstawianie lub zastępowanie jednostki.
Nie.
writeBatchSize Wstawia dane do tabeli platformy Azure po osiągnięciu wartości writeBatchSize lub writeBatchTimeout.
Dozwolone wartości to liczba całkowita (liczba wierszy).
Nie (wartość domyślna to 10 000)
writeBatchTimeout Wstawia dane do tabeli platformy Azure po osiągnięciu wartości writeBatchSize lub writeBatchTimeout.
Dozwolone wartości to przedział czasu. Przykładem jest "00:20:00" (20 minut).
Nie (wartość domyślna to 90 sekund, domyślny limit czasu klienta magazynu)
 maxConcurrent Połączenie ions Górny limit połączeń współbieżnych ustanowionych z magazynem danych podczas uruchamiania działania. Określ wartość tylko wtedy, gdy chcesz ograniczyć połączenia współbieżne.  Nr

Przykład:

"activities":[
    {
        "name": "CopyToAzureTable",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure Table output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureTableSink",
                "azureTablePartitionKeyName": "<column name>",
                "azureTableRowKeyName": "<column name>"
            }
        }
    }
]

azureTablePartitionKeyName

Zamapuj kolumnę źródłową na kolumnę docelową przy użyciu właściwości "translator" , zanim będzie można użyć kolumny docelowej jako azureTablePartitionKeyName.

W poniższym przykładzie kolumna źródłowa DivisionID jest mapowana na docelową kolumnę DivisionID:

"translator": {
    "type": "TabularTranslator",
    "columnMappings": "DivisionID: DivisionID, FirstName: FirstName, LastName: LastName"
}

Parametr "DivisionID" jest określony jako klucz partycji.

"sink": {
    "type": "AzureTableSink",
    "azureTablePartitionKeyName": "DivisionID"
}

Mapowanie typów danych dla tabeli platformy Azure

Podczas kopiowania danych z i do tabeli platformy Azure następujące mapowania są używane z typów danych tabel platformy Azure do tymczasowych typów danych używanych wewnętrznie w usłudze. Aby dowiedzieć się, jak działanie kopiowania mapuje schemat źródłowy i typ danych na ujście, zobacz Mapowania schematu i typu danych.

Podczas przenoszenia danych do i z tabeli platformy Azure następujące mapowania zdefiniowane przez tabelę platformy Azure są używane z typów OData tabel platformy Azure do typu platformy .NET i odwrotnie.

Typ danych tabeli platformy Azure Typ danych usługi tymczasowej Szczegóły
Edm.Binary byte[] Tablica bajtów do 64 KB.
Edm.Boolean bool Wartość logiczna.
Edm.DateTime DateTime Wartość 64-bitowa wyrażona jako uniwersalny czas koordynowany (UTC). Obsługiwany zakres daty/godziny rozpoczyna się o północy, 1 stycznia 1601 R. (C.E.), UTC. Zakres kończy się 31 grudnia 9999.
Edm.Double double 64-bitowa wartość zmiennoprzecinkowa.
Edm.Guid Identyfikator GUID 128-bitowy unikatowy identyfikator globalny.
Edm.Int32 Int32 32-bitowa liczba całkowita.
Edm.Int64 Int64 64-bitowa liczba całkowita.
Edm.String String Wartość zakodowana w formacie UTF-16. Wartości ciągów mogą mieć maksymalnie 64 KB.

Właściwości działania wyszukiwania

Aby dowiedzieć się więcej o właściwościach, sprawdź działanie Wyszukiwania.

Aby uzyskać listę magazynów danych obsługiwanych jako źródła i ujścia działania kopiowania, zobacz Obsługiwane magazyny danych.