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

W tym artykule opisano sposób używania działania kopiowania w potokach usługi Azure Data Factory i Usługi Azure Synapse Analytics do kopiowania danych z tabeli SAP. Aby uzyskać więcej informacji, zobacz działanie Kopiuj omówienie.

Napiwek

Aby dowiedzieć się więcej na temat ogólnego scenariusza integracji danych SAP, zobacz oficjalny dokument dotyczący integracji danych SAP przy użyciu usługi Azure Data Factory ze szczegółowym wprowadzeniem do każdego łącznika SAP, porównania i wskazówek.

Obsługiwane możliwości

Ten łącznik tabel SAP jest obsługiwany w następujących możliwościach:

Obsługiwane możliwości IR
działanie Kopiuj (źródło/-)
Działanie Lookup

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

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

W szczególności ten łącznik tabel SAP obsługuje następujące elementy:

  • Kopiowanie danych z tabeli SAP w:

    • SAP ERP Central Component (SAP ECC) w wersji 7.01 lub nowszej (w ostatnim stosie pakietów pomocy technicznej SAP wydanym po 2015 r.).
    • SAP Business Warehouse (SAP BW) w wersji 7.01 lub nowszej (w ostatnim stosie pakietów pomocy technicznej SAP wydanym po 2015 r.).
    • SAP S/4HANA.
    • Inne produkty w pakiecie SAP Business Suite w wersji 7.01 lub nowszej (w ostatnim stosie pakietów pomocy technicznej SAP wydanym po 2015 r.).
  • Kopiowanie danych z przezroczystej tabeli SAP, tabeli w puli, tabeli klastrowanej i widoku.

  • Kopiowanie danych przy użyciu uwierzytelniania podstawowego lub protokołu Secure Network Communications (SNC), jeśli skonfigurowano usługę SNC.

  • Połączenie do serwera aplikacji SAP lub serwera komunikatów SAP.

  • Pobieranie danych za pomocą domyślnego lub niestandardowego specyfikacji RFC.

Wersja 7.01 lub nowsza odwołuje się do wersji SAP NetWeaver zamiast wersji sap ECC. Na przykład system SAP ECC 6.0 EHP 7 ogólnie ma wersję >NetWeaver =7.4. Jeśli nie masz pewności co do środowiska, poniżej przedstawiono procedurę potwierdzania wersji z systemu SAP:

  1. Użyj graficznego interfejsu użytkownika sap, aby nawiązać połączenie z systemem SAP.
  2. Przejdź do pozycji System ->Status.
  3. Sprawdź wydanie SAP_BASIS, upewnij się, że jest on równy lub większy niż 701.
    Check SAP_BASIS

Wymagania wstępne

Aby użyć tego łącznika tabel SAP, należy wykonać następujące czynności:

  • Skonfiguruj własne środowisko Integration Runtime (wersja 3.17 lub nowsza). Aby uzyskać więcej informacji, zobacz Tworzenie i konfigurowanie własnego środowiska Integration Runtime.

  • Pobierz 64-bitowy program SAP Połączenie or dla platformy Microsoft .NET 3.0 z witryny internetowej SAP i zainstaluj go na maszynie własnego środowiska Integration Runtime. Podczas instalacji upewnij się, że w oknie Opcjonalne kroki konfiguracji wybrano opcję Zainstaluj zestawy do GAC.

    Install SAP Connector for .NET

  • Użytkownik SAP, który jest używany w łączniku tabel SAP, musi mieć następujące uprawnienia:

    • Autoryzacja do korzystania z miejsc docelowych wywołania funkcji zdalnej (RFC).
    • Uprawnienia do działania Execute obiektu autoryzacji S_SDSAUTH. W przypadku większości obiektów autoryzacji można odwoływać się do 460089 SAP Note. Niektóre rfCs są wymagane przez podstawowy łącznik NCo, na przykład RFC_FUNCTION_SEARCH.

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 z tabelą SAP przy użyciu interfejsu użytkownika

Wykonaj poniższe kroki, aby utworzyć połączoną usługę z tabelą SAP 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 pozycję SAP i wybierz łącznik tabeli SAP.

    Screenshot of the SAP table connector.

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

    Screenshot of configuration for an SAP table 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 łącznika tabeli SAP.

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

Następujące właściwości są obsługiwane dla połączonej usługi SAP BW Open Hub:

Właściwości Opis Wymagania
type Właściwość musi być ustawiona type na SapTable. Tak
server Nazwa serwera, na którym znajduje się wystąpienie SAP.
Użyj polecenia , aby nawiązać połączenie z serwerem aplikacji SAP.
Nie.
systemNumber Numer systemowy systemu SAP.
Użyj polecenia , aby nawiązać połączenie z serwerem aplikacji SAP.
Dozwolona wartość: dwucyfrowa liczba dziesiętna reprezentowana jako ciąg.
Nie.
messageServer Nazwa hosta serwera komunikatów SAP.
Użyj polecenia , aby nawiązać połączenie z serwerem komunikatów SAP.
Nie.
messageServerService Nazwa usługi lub numer portu serwera komunikatów.
Użyj polecenia , aby nawiązać połączenie z serwerem komunikatów SAP.
Nie.
systemId Identyfikator systemu SAP, w którym znajduje się tabela.
Użyj polecenia , aby nawiązać połączenie z serwerem komunikatów SAP.
Nie.
logonGroup Grupa logowania dla systemu SAP.
Użyj polecenia , aby nawiązać połączenie z serwerem komunikatów SAP.
Nie.
clientId Identyfikator klienta w systemie SAP.
Dozwolona wartość: trzycyfrowa liczba dziesiętna reprezentowana jako ciąg.
Tak
language Język używany przez system SAP.
Wartość domyślna to EN.
Nie.
userName Nazwa użytkownika, który ma dostęp do serwera SAP. Tak
password Hasło użytkownika. Oznacz to pole typem SecureString w celu bezpiecznego przechowywania go lub odwołuj się do wpisu tajnego przechowywanego w usłudze Azure Key Vault. Tak
sncMode Wskaźnik aktywacji SNC w celu uzyskania dostępu do serwera SAP, na którym znajduje się tabela.
Użyj polecenia , aby nawiązać połączenie z serwerem SAP przy użyciu SNC.
Dozwolone wartości to 0 (wyłączone, domyślne) lub 1 (włączone).
Nie.
sncMyName Nazwa SNC inicjatora w celu uzyskania dostępu do serwera SAP, na którym znajduje się tabela.
Ma zastosowanie, gdy sncMode jest włączone.
Nie.
sncPartnerName Nazwa SNC partnera komunikacji w celu uzyskania dostępu do serwera SAP, na którym znajduje się tabela.
Ma zastosowanie, gdy sncMode jest włączone.
Nie.
sncLibraryPath Biblioteka produktu zabezpieczeń zewnętrznych w celu uzyskania dostępu do serwera SAP, na którym znajduje się tabela.
Ma zastosowanie, gdy sncMode jest włączone.
Nie.
sncQop Należy zastosować poziom jakości ochrony SNC.
Ma zastosowanie, gdy sncMode jest włączone.
Dozwolone wartości to 1 (Uwierzytelnianie), 2 (Integralność), 3 (Prywatność), 8 (Ustawienie domyślne), 9 (Maksimum).
Nie.
connectVia Środowisko Integration Runtime do nawiązania połączenia z magazynem danych. Wymagane jest własne środowisko Integration Runtime, jak wspomniano wcześniej w temacie Wymagania wstępne. Tak

Przykład 1: Połączenie do serwera aplikacji SAP

{
    "name": "SapTableLinkedService",
    "properties": {
        "type": "SapTable",
        "typeProperties": {
            "server": "<server name>",
            "systemNumber": "<system number>",
            "clientId": "<client ID>",
            "userName": "<SAP user>",
            "password": {
                "type": "SecureString",
                "value": "<Password for SAP user>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Przykład 2: Połączenie do serwera komunikatów SAP

{
    "name": "SapTableLinkedService",
    "properties": {
        "type": "SapTable",
        "typeProperties": {
            "messageServer": "<message server name>",
            "messageServerService": "<service name or port>",
            "systemId": "<system ID>",
            "logonGroup": "<logon group>",
            "clientId": "<client ID>",
            "userName": "<SAP user>",
            "password": {
                "type": "SecureString",
                "value": "<Password for SAP user>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Przykład 3: Połączenie przy użyciu SNC

{
    "name": "SapTableLinkedService",
    "properties": {
        "type": "SapTable",
        "typeProperties": {
            "server": "<server name>",
            "systemNumber": "<system number>",
            "clientId": "<client ID>",
            "userName": "<SAP user>",
            "password": {
                "type": "SecureString",
                "value": "<Password for SAP user>"
            },
            "sncMode": 1,
            "sncMyName": "<SNC myname>",
            "sncPartnerName": "<SNC partner name>",
            "sncLibraryPath": "<SNC library path>",
            "sncQop": "8"
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Właściwości zestawu danych

Aby uzyskać pełną listę sekcji i właściwości definiowania zestawów danych, zobacz Zestawy danych. Poniższa sekcja zawiera listę właściwości obsługiwanych przez zestaw danych tabeli SAP.

Aby skopiować dane z i do połączonej usługi SAP BW Open Hub, obsługiwane są następujące właściwości:

Właściwości Opis Wymagania
type Właściwość musi być ustawiona type na SapTableResource. Tak
tableName Nazwa tabeli SAP do skopiowania danych. Tak

Przykład

{
    "name": "SAPTableDataset",
    "properties": {
        "type": "SapTableResource",
        "typeProperties": {
            "tableName": "<SAP table name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<SAP table linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Właściwości działania kopiowania

Aby uzyskać pełną listę sekcji i właściwości definiowania działań, zobacz Pipelines (Potoki). Poniższa sekcja zawiera listę właściwości obsługiwanych przez źródło tabeli SAP.

Tabela SAP jako źródło

Aby skopiować dane z tabeli SAP, obsługiwane są następujące właściwości:

Właściwości Opis Wymagania
type Właściwość musi być ustawiona type na SapTableSource. Tak
rowCount Liczba wierszy do pobrania. Nie.
rfcTableFields Pola (kolumny) do skopiowania z tabeli SAP. Na przykład column0, column1. Nie.
rfcTableOptions Opcje filtrowania wierszy w tabeli SAP. Na przykład COLUMN0 EQ 'SOMEVALUE'. Zobacz również tabelę operatorów zapytań SAP w dalszej części tego artykułu. Nie.
customRfcReadTableFunctionModule Niestandardowy moduł funkcji RFC, który może służyć do odczytywania danych z tabeli SAP.
Możesz użyć niestandardowego modułu funkcji RFC, aby zdefiniować sposób pobierania danych z systemu SAP i zwracania ich do usługi. Moduł funkcji niestandardowej musi mieć zaimplementowany interfejs (import, eksport, tabele) podobny do /SAPDS/RFC_READ_TABLE2, który jest domyślnym interfejsem używanym przez usługę.
Nie.
partitionOption Mechanizm partycji do odczytu z tabeli SAP. Obsługiwane opcje obejmują:
  • None
  • PartitionOnInt (normalna liczba całkowita lub liczba całkowita z zerowym wypełnieniem po lewej stronie, na przykład 0000012345)
  • PartitionOnCalendarYear (4 cyfry w formacie "RRRR")
  • PartitionOnCalendarMonth (6 cyfr w formacie "RRRRM")
  • PartitionOnCalendarDate (8 cyfr w formacie "RRRRDD")
  • PartitionOntime (6 cyfr w formacie "HHMMSS", na przykład 235959)
Nie.
partitionColumnName Nazwa kolumny używanej do partycjonowania danych. Nie.
partitionUpperBound Maksymalna wartość kolumny określonej w partitionColumnName pliku , która będzie używana do kontynuowania partycjonowania. Nie.
partitionLowerBound Minimalna wartość kolumny określonej w partitionColumnName pliku , która będzie używana do kontynuowania partycjonowania. (Uwaga: partitionLowerBound nie może być "0", gdy opcja partycji to PartitionOnInt) Nie.
maxPartitionsNumber Maksymalna liczba partycji do podzielenia danych na. Domyślna wartość wynosi 1. Nie.
sapDataColumnDelimiter Pojedynczy znak, który jest używany jako ogranicznik przekazywany do oprogramowania SAP RFC w celu podzielenia danych wyjściowych. Nie.

Napiwek

Jeśli tabela SAP zawiera dużą ilość danych, takich jak kilka miliardów wierszy, użyj polecenia partitionOption i partitionSetting podzielić dane na mniejsze partycje. W takim przypadku dane są odczytywane na partycję, a każda partycja danych jest pobierana z serwera SAP za pośrednictwem jednego wywołania RFC.

Na partitionOption przykład liczba wierszy w każdej partycji jest obliczana przy użyciu tej formuły: (łączna liczba wierszy spadających między partitionUpperBound i partitionLowerBound)/maxPartitionsNumber.partitionOnInt

Aby ładować partycje danych równolegle w celu przyspieszenia kopiowania, stopień równoległy jest kontrolowany przez parallelCopies ustawienie działania kopiowania. Jeśli na przykład ustawiono parallelCopies wartość cztery, usługa jednocześnie generuje i uruchamia cztery zapytania na podstawie określonej opcji partycji i ustawień, a każde zapytanie pobiera część danych z tabeli SAP. Zdecydowanie zalecamy utworzenie maxPartitionsNumber wielokrotności wartości parallelCopies właściwości. Podczas kopiowania danych do magazynu danych opartego na plikach zaleca się również zapisanie w folderze jako wielu plików (tylko określ nazwę folderu), w tym przypadku wydajność jest lepsza niż zapisywanie w jednym pliku.

Napiwek

Właściwość BASXML jest domyślnie włączona dla tego łącznika tabel SAP w usłudze.

W rfcTableOptionsprogramie można użyć następujących typowych operatorów zapytań SAP do filtrowania wierszy:

Operator opis
EQ Równa się
NE Nierówne
LT Mniejsze niż
LE Mniejsze niż lub równe
GT Większe niż
GE Większe niż lub równe
IN Tak jak w TABCLASS IN ('TRANSP', 'INTTAB')
LIKE Tak jak w LIKE 'Emma%'

Przykład

"activities":[
    {
        "name": "CopyFromSAPTable",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<SAP table input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SapTableSource",
                "partitionOption": "PartitionOnInt",
                "partitionSettings": {
                     "partitionColumnName": "<partition column name>",
                     "partitionUpperBound": "2000",
                     "partitionLowerBound": "1",
                     "maxPartitionsNumber": 500
                 }
            },
            "sink": {
                "type": "<sink type>"
            },
            "parallelCopies": 4
        }
    }
]

Łączenie tabel SAP

Obecnie łącznik SAP Table Connector obsługuje tylko jedną tabelę z domyślnym modułem funkcji. Aby uzyskać dane sprzężone wielu tabel, możesz użyć właściwości customRfcReadTableFunctionModule w łączniku tabel SAP, wykonując poniższe kroki:

  • Napisz moduł funkcji niestandardowej, który może przyjąć zapytanie jako OPCJE i zastosować własną logikę w celu pobrania danych.
  • W polu "Moduł funkcji niestandardowej" wprowadź nazwę modułu funkcji niestandardowej.
  • W przypadku opcji "opcje tabeli RFC" określ instrukcję sprzężenia tabeli, która ma być zawarta w module funkcji, na przykład "<TABLE1> INNER JOIN <TABLE2> ON COLUMN0".

Poniżej przedstawiono przykład:

Sap Table Join

Napiwek

Możesz również rozważyć zagregowanie sprzężonych danych w widoku obsługiwanym przez łącznik SAP Table Connector. Możesz również spróbować wyodrębnić powiązane tabele, aby dołączyć do platformy Azure (np. Azure Storage, Azure SQL Database), a następnie użyć Przepływ danych, aby kontynuować dołączanie lub filtrowanie.

Tworzenie modułu funkcji niestandardowej

W przypadku tabeli SAP obecnie obsługujemy właściwość customRfcReadTableFunctionModule w źródle kopiowania, która umożliwia wykorzystanie własnej logiki i przetwarzania danych.

Poniżej przedstawiono kilka wskazówek, które należy spełnić, aby rozpocząć pracę z modułem "Funkcja niestandardowa":

  • Definicja:

    Definition

  • Eksportuj dane do jednej z poniższych tabel:

    Export table 1

    Export table 2

Poniżej przedstawiono ilustracje dotyczące sposobu działania łącznika tabel SAP z modułem funkcji niestandardowej:

  1. Skompiluj połączenie z serwerem SAP za pośrednictwem rozwiązania SAP NCO.

  2. Wywołaj "Moduł funkcji niestandardowej" przy użyciu parametrów ustawionych poniżej:

    • QUERY_TABLE: nazwa tabeli ustawiona w zestawie danych tabeli SAP;
    • Ogranicznik: ogranicznik ustawiony w źródle tabeli SAP;
    • ROWCOUNT/Option/Fields: pole Rowcount/Aggregated Option/Fields ustawione w źródle tabeli.
  3. Pobierz wynik i przeanalizuj dane w następujący sposób:

    1. Przeanalizuj wartość w tabeli Pola, aby pobrać schematy.

      Parse values in Fields

    2. Pobierz wartości tabeli wyjściowej, aby zobaczyć, która tabela zawiera te wartości.

      Get values in output table

    3. Pobierz wartości w OUT_TABLE, przeanalizuj dane, a następnie zapisz je w ujściu.

Mapowania typów danych dla tabeli SAP

Podczas kopiowania danych z tabeli SAP następujące mapowania są używane z typów danych tabeli SAP do tymczasowych typów danych używanych 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.

Typ protokołu SAP ABAP Typ danych tymczasowych usługi
C (Ciąg) String
I (Liczba całkowita) Int32
F (Zmiennoprzecinkowy) Double
D (Data) String
T (Czas) String
P (BCD Pakowane, Waluta, Dziesiętne, Qty) Decimal
N (Numeryczne) String
X (Dane binarne i nieprzetworzone) String

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.