Przenoszenie danych z SAP HANA przy użyciu Azure Data Factory

Uwaga

Ten artykuł dotyczy wersji 1 usługi Data Factory. Jeśli używasz bieżącej wersji usługi Data Factory, zobacz łącznik SAP HANA w wersji 2.

W tym artykule wyjaśniono, jak za pomocą działania kopiowania w Azure Data Factory przenieść dane z SAP HANA lokalnego. Opiera się on na artykule Dotyczącym działań przenoszenia danych , który przedstawia ogólne omówienie przenoszenia danych za pomocą działania kopiowania.

Dane można skopiować z lokalnego magazynu danych SAP HANA do dowolnego obsługiwanego magazynu danych ujścia. Aby uzyskać listę magazynów danych obsługiwanych jako ujścia przez działanie kopiowania, zobacz tabelę Obsługiwane magazyny danych . Usługa Data Factory obsługuje obecnie tylko przenoszenie danych z SAP HANA do innych magazynów danych, ale nie do przenoszenia danych z innych magazynów danych do SAP HANA.

Obsługiwane wersje i instalacja

Ten łącznik obsługuje dowolną wersję bazy danych SAP HANA. Obsługuje kopiowanie danych z modeli informacji platformy HANA (takich jak widoki analityczne i obliczeniowe) oraz tabele wierszy/kolumn przy użyciu zapytań SQL.

Aby włączyć łączność z wystąpieniem SAP HANA, zainstaluj następujące składniki:

  • Zarządzanie danymi Gateway: usługa Data Factory obsługuje łączenie się z lokalnymi magazynami danych (w tym SAP HANA) przy użyciu składnika o nazwie Zarządzanie danymi Gateway. Aby dowiedzieć się więcej na temat bramy Zarządzanie danymi i instrukcji krok po kroku dotyczących konfigurowania bramy, zobacz Przenoszenie danych między lokalnym magazynem danych do magazynu danych w chmurze. Brama jest wymagana, nawet jeśli SAP HANA jest hostowana na maszynie wirtualnej IaaS platformy Azure. Bramę można zainstalować na tej samej maszynie wirtualnej co magazyn danych lub na innej maszynie wirtualnej, o ile brama może nawiązać połączenie z bazą danych.
  • SAP HANA sterownik ODBC na maszynie bramy. Sterownik ODBC platformy SAP HANA możesz pobrać z witryny SAP Software Download Center (Centrum pobierania oprogramowania SAP). Wyszukaj za pomocą słowa kluczowego SAP HANA CLIENT dla Windows.

Wprowadzenie

Potok można utworzyć za pomocą działania kopiowania, które przenosi dane z lokalnego magazynu danych SAP HANA przy użyciu różnych narzędzi/interfejsów API.

  • Najprostszym sposobem utworzenia potoku jest użycie Kreatora kopiowania. Zobacz Samouczek: tworzenie potoku przy użyciu Kreatora kopiowania , aby uzyskać szybki przewodnik po tworzeniu potoku przy użyciu kreatora kopiowania danych.
  • Do utworzenia potoku można również użyć następujących narzędzi: Visual Studio, Azure PowerShell, szablon usługi Azure Resource Manager, interfejs API platformy .NET i interfejs API REST. Zobacz samouczek działanie Kopiuj, aby uzyskać instrukcje krok po kroku dotyczące tworzenia potoku za pomocą działania kopiowania.

Niezależnie od tego, czy używasz narzędzi, czy interfejsów API, wykonaj następujące kroki, aby utworzyć potok, który przenosi dane ze źródłowego magazynu danych do magazynu danych ujścia:

  1. Utwórz połączone usługi , aby połączyć magazyny danych wejściowych i wyjściowych z fabryką danych.
  2. Utwórz zestawy danych do reprezentowania danych wejściowych i wyjściowych dla operacji kopiowania.
  3. Utwórz potok z działaniem kopiowania, które przyjmuje zestaw danych jako dane wejściowe i zestaw danych jako dane wyjściowe.

Podczas korzystania z kreatora definicje JSON dla tych jednostek usługi Data Factory (połączone usługi, zestawy danych i potok) są tworzone automatycznie. W przypadku korzystania z narzędzi/interfejsów API (z wyjątkiem interfejsu API platformy .NET) należy zdefiniować te jednostki usługi Data Factory przy użyciu formatu JSON. Przykład z definicjami JSON dla jednostek usługi Data Factory, które są używane do kopiowania danych z SAP HANA lokalnych, zobacz przykład JSON: Kopiowanie danych z SAP HANA do sekcji Azure Blob w tym artykule.

W poniższych sekcjach przedstawiono szczegółowe informacje o właściwościach JSON używanych do definiowania jednostek usługi Data Factory specyficznych dla magazynu danych SAP HANA:

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

Poniższa tabela zawiera opis elementów JSON specyficznych dla SAP HANA połączonej usługi.

Właściwość Opis Dozwolone wartości Wymagane
serwer Nazwa serwera, na którym znajduje się wystąpienie SAP HANA. Jeśli serwer korzysta z dostosowanego portu, określ server:portwartość . ciąg Tak
authenticationType Typ uwierzytelniania. . "Podstawowa" lub "Windows" Tak
nazwa użytkownika Nazwa użytkownika, który ma dostęp do serwera SAP ciąg Tak
hasło Hasło użytkownika. ciąg Tak
gatewayName Nazwa bramy, która powinna być używana przez usługę Data Factory w celu nawiązania połączenia z lokalnym wystąpieniem SAP HANA. ciąg Tak
encryptedCredential Zaszyfrowany ciąg poświadczeń. ciąg Nie

Właściwości zestawu danych

Aby uzyskać pełną listę właściwości sekcji & dostępnych do definiowania zestawów danych, zobacz artykuł Tworzenie zestawów danych . Sekcje, takie jak struktura, dostępność i zasady kodu JSON zestawu danych, są podobne dla wszystkich typów zestawów danych (Azure SQL, obiektów blob platformy Azure, tabel platformy Azure itp.).

Sekcja typeProperties jest inna dla każdego typu zestawu danych i zawiera informacje o lokalizacji danych w magazynie danych. Dla zestawu danych SAP HANA typu RelationalTable nie są obsługiwane żadne właściwości specyficzne dla typu .

Właściwości działania kopiowania

Aby uzyskać pełną listę właściwości sekcji & dostępnych do definiowania działań, zobacz artykuł Tworzenie Pipelines. Właściwości, takie jak nazwa, opis, dane wejściowe i wyjściowe, są dostępne dla wszystkich typów działań.

Natomiast właściwości dostępne w sekcji typeProperties działania różnią się w zależności od każdego typu działania. W przypadku działanie Kopiuj różnią się w zależności od typów źródeł i ujściów.

Gdy źródło w działaniu kopiowania jest typu RelationalSource (które obejmuje SAP HANA), następujące właściwości są dostępne w sekcji typeProperties:

Właściwość Opis Dozwolone wartości Wymagane
query Określa zapytanie SQL do odczytu danych z wystąpienia SAP HANA. SQL zapytanie. Tak

Przykład JSON: kopiowanie danych z SAP HANA do usługi Azure Blob

Poniższy przykład zawiera przykładowe definicje JSON, których można użyć do utworzenia potoku przy użyciu Visual Studio lub Azure PowerShell. W tym przykładzie pokazano, jak skopiować dane z lokalnej SAP HANA do Azure Blob Storage. Dane można jednak skopiować bezpośrednio do dowolnego z ujściów wymienionych tutaj przy użyciu działania kopiowania w Azure Data Factory.

Ważne

Ten przykład zawiera fragmenty kodu JSON. Nie zawiera instrukcji krok po kroku dotyczących tworzenia fabryki danych. Aby uzyskać szczegółowe instrukcje, zobacz przenoszenie danych między lokalizacjami lokalnymi i chmurą .

Przykład zawiera następujące jednostki fabryki danych:

  1. Połączona usługa typu SapHana.
  2. Połączona usługa typu AzureStorage.
  3. Wejściowy zestaw danych typu RelationalTable.
  4. Wyjściowy zestaw danych typu AzureBlob.
  5. Potok z działaniem kopiowania używającym relacyjnych źródeł i obiektów blobSink.

Przykład kopiuje dane z wystąpienia SAP HANA do obiektu blob platformy Azure co godzinę. Właściwości JSON używane w tych przykładach opisano w sekcjach opisanych poniżej przykładów.

W pierwszym kroku skonfiguruj bramę zarządzania danymi. Instrukcje dotyczą przenoszenia danych między lokalizacjami lokalnymi i artykułem dotyczącym chmury .

połączona usługa SAP HANA

Ta połączona usługa łączy wystąpienie SAP HANA z fabryką danych. Właściwość type jest ustawiona na platformę SapHana. Sekcja typeProperties zawiera informacje o połączeniu dla wystąpienia SAP HANA.

{
    "name": "SapHanaLinkedService",
    "properties":
    {
        "type": "SapHana",
        "typeProperties":
        {
            "server": "<server name>",
            "authenticationType": "<Basic, or Windows>",
            "username": "<SAP user>",
            "password": "<Password for SAP user>",
            "gatewayName": "<gateway name>"
        }
    }
}

Połączona usługa Azure Storage

Ta połączona usługa łączy konto usługi Azure Storage z fabryką danych. Właściwość type jest ustawiona na AzureStorage. Sekcja typeProperties zawiera informacje o połączeniu dla konta usługi Azure Storage.

{
  "name": "AzureStorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

zestaw danych wejściowych SAP HANA

Ten zestaw danych definiuje zestaw danych SAP HANA. Typ zestawu danych usługi Data Factory należy ustawić na Relacyjna tabela. Obecnie nie określasz żadnych właściwości specyficznych dla typu dla zestawu danych SAP HANA. Zapytanie w definicji działania kopiowania określa, jakie dane mają być odczytywane z wystąpienia SAP HANA.

Ustawienie właściwości zewnętrznej na wartość true informuje usługę Data Factory, że tabela jest zewnętrzna dla fabryki danych i nie jest wytwarzana przez działanie w fabryce danych.

Właściwości częstotliwości i interwału definiują harmonogram. W takim przypadku dane są odczytywane z wystąpienia SAP HANA co godzinę.

{
    "name": "SapHanaDataset",
    "properties": {
        "type": "RelationalTable",
        "linkedServiceName": "SapHanaLinkedService",
        "typeProperties": {},
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true
    }
}

Wyjściowy zestaw danych obiektów blob platformy Azure

Ten zestaw danych definiuje wyjściowy zestaw danych obiektów blob platformy Azure. Właściwość type jest ustawiona na Wartość AzureBlob. Sekcja typeProperties zawiera miejsce przechowywania danych skopiowanych z wystąpienia SAP HANA. Dane są zapisywane w nowym obiekcie blob co godzinę (częstotliwość: godzina, interwał: 1). Ścieżka folderu dla obiektu blob jest obliczana dynamicznie na podstawie czasu rozpoczęcia przetwarzanego wycinka. Ścieżka folderu używa części roku, miesiąca, dnia i godzin rozpoczęcia.

{
    "name": "AzureBlobDataSet",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties": {
            "folderPath": "mycontainer/saphana/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
            "format": {
                "type": "TextFormat",
                "rowDelimiter": "\n",
                "columnDelimiter": "\t"
            },
            "partitionedBy": [
                {
                    "name": "Year",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "yyyy"
                    }
                },
                {
                    "name": "Month",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "MM"
                    }
                },
                {
                    "name": "Day",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "dd"
                    }
                },
                {
                    "name": "Hour",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "HH"
                    }
                }
            ]
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

Potok z działanie Kopiuj

Potok zawiera działanie kopiowania skonfigurowane do korzystania z wejściowych i wyjściowych zestawów danych i jest zaplanowane do uruchamiania co godzinę. W definicji JSON potoku typ źródła jest ustawiony na RelationalSource (dla źródła SAP HANA), a typ ujścia jest ustawiony na BlobSink. Zapytanie SQL określone dla właściwości zapytania wybiera dane w ciągu ostatniej godziny do skopiowania.

{
    "name": "CopySapHanaToBlob",
    "properties": {
        "description": "pipeline for copy activity",
        "activities": [
            {
                "type": "Copy",
                "typeProperties": {
                    "source": {
                        "type": "RelationalSource",
                        "query": "<SQL Query for HANA>"
                    },
                    "sink": {
                        "type": "BlobSink",
                        "writeBatchSize": 0,
                        "writeBatchTimeout": "00:00:00"
                    }
                },
                "inputs": [
                    {
                        "name": "SapHanaDataset"
                    }
                ],
                "outputs": [
                    {
                        "name": "AzureBlobDataSet"
                    }
                ],
                "policy": {
                    "timeout": "01:00:00",
                    "concurrency": 1
                },
                "scheduler": {
                    "frequency": "Hour",
                    "interval": 1
                },
                "name": "SapHanaToBlob"
            }
        ],
        "start": "2017-03-01T18:00:00Z",
        "end": "2017-03-01T19:00:00Z"
    }
}

Mapowanie typów dla SAP HANA

Jak wspomniano w artykule dotyczącym działań przenoszenia danych, działanie Kopiuj wykonuje automatyczne konwersje typów z typów źródłowych na typy ujścia przy użyciu następującego podejścia dwuetapowego:

  1. Konwertowanie z natywnych typów źródłowych na typ platformy .NET
  2. Konwertowanie z typu platformy .NET na natywny typ ujścia

Podczas przenoszenia danych z SAP HANA następujące mapowania są używane z typów SAP HANA do typów platformy .NET.

typ SAP HANA Typ oparty na platformie .NET
TINYINT Byte
SMALLINT Int16
INT Int32
BIGINT Int64
LICZBA RZECZYWISTA Pojedynczy
PODWÓJNE Pojedynczy
DZIESIĘTNYCH Liczba dziesiętna
BOOLEAN Byte
VARCHAR Ciąg
NVARCHAR Ciąg
CLOB Bajt[]
ALFANUM Ciąg
BLOB Bajt[]
DATE DateTime
TIME przedział_czasu
TIMESTAMP DateTime
POŚMIEĆ DateTime

Znane ograniczenia

Podczas kopiowania danych z SAP HANA istnieje kilka znanych ograniczeń:

  • Ciągi NVARCHAR są obcinane do maksymalnej długości wynoszącej 4000 znaków Unicode
  • Typ danych SMALLDECIMAL nie jest obsługiwany
  • Typ danych VARBINARY nie jest obsługiwany
  • Prawidłowe daty są z zakresu od 1899-12-30 do 9999-12-31

Mapuj źródło na kolumny ujścia

Aby dowiedzieć się więcej na temat mapowania kolumn w źródłowym zestawie danych na kolumny w zestawie danych ujścia, zobacz Mapowanie kolumn zestawu danych w Azure Data Factory.

Powtarzalny odczyt ze źródeł relacyjnych

Podczas kopiowania danych z relacyjnych magazynów danych należy pamiętać o powtarzalności, aby uniknąć niezamierzonych wyników. W Azure Data Factory możesz ponownie uruchomić wycinek ręcznie. Można również skonfigurować zasady ponawiania dla zestawu danych, aby wycinek był ponownie uruchamiany po wystąpieniu awarii. Gdy wycinek zostanie ponownie uruchomiony w dowolny sposób, musisz upewnić się, że te same dane są odczytywane bez względu na liczbę uruchomień wycinka. Zobacz Powtarzalne odczytywanie ze źródeł relacyjnych

Wydajność i dostrajanie

Zobacz Podręcznik dostrajania wydajności & działania kopiowania, aby dowiedzieć się więcej o kluczowych czynnikach wpływających na wydajność przenoszenia danych (działanie kopiowania) w Azure Data Factory i różnych sposobach ich optymalizacji.