Copiare dati da SAP Business Warehouse tramite Open Hub usando Azure Data Factory o Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!

Questo articolo illustra come usare l'attività Copy nelle pipeline di Azure Data Factory e Synapse Analytics per copiare dati da SAP Business Warehouse (BW) tramite Open Hub. Si basa sull'articolo di panoramica dell'attività di copia che presenta una panoramica generale sull'attività di copia.

Suggerimento

Per informazioni sul supporto generale sullo scenario di integrazione dei dati SAP, vedere il white paper sull'integrazione dei dati SAP con sezioni di introduzione, confronto e istruzioni dettagliate su ogni connettore SAP.

Funzionalità supportate

Questo connettore SAP Business Warehouse Open Hub è supportato per le funzionalità seguenti:

Funzionalità supportate IR
Attività Copy (origine/-)
Attività Lookup

① Azure Integration Runtime ② Runtime di integrazione self-hosted

Per un elenco degli archivi dati supportati come origini/sink dall'attività di copia, vedere la tabella relativa agli archivi dati supportati.

In particolare, il connettore SAP Business Warehouse Open Hub supporta:

  • SAP Business Warehouse 7.01 o versioni successive (in un recente SAP Support Package Stack rilasciato dopo il 2015). SAP BW/4HANA non è supportato da questo connettore.
  • Copia dei dati tramite tabella locale Open Hub Destination, che può essere DSO, InfoCube, MultiProvider, DataSource e così via.
  • La copia di dati usando l'autenticazione di base.
  • Connessione a un server applicazioni SAP o a un server messaggi SAP.
  • Recupero di dati tramite RFC.

Integrazione SAP BW Open Hub

Il servizio SAP BW Open Hub consente di estrarre in modo efficiente dati da SAP BW. Il diagramma seguente mostra uno dei flussi tipici che i clienti possono osservare nel proprio sistema SAP, con flusso di dati da SAP ECC -> PSA -> DSO -> Cubo.

SAP BW Open Hub Destination (OHD) definisce la destinazione di inoltro dei dati SAP. Gli oggetti supportati da SAP Data Transfer Process (DTP) possono essere usati come origini dati di hub aperto, ad esempio DSO, InfoCube, DataSource e così via. Il tipo di Open Hub Destination, ovvero la posizione in cui vengono archiviati i dati inoltrati, può essere costituito da tabelle di database (locali o remote) e da file flat. Questo connettore SAP BW Open Hub supporta la copia dei dati dalla tabella locale OHD in BW. Se si usano altri tipi, è possibile connettersi direttamente al database o al file system usando altri connettori.

SAP BW Open Hub

Flusso di estrazione differenziale

SAP BW Open Hub Connector offre due proprietà facoltative: excludeLastRequest e baseRequestId che possono essere usate per gestire il caricamento differenziale da Open Hub.

  • excludeLastRequestId: indica se escludere i record dell'ultima richiesta. Il valore predefinito è true.
  • baseRequestId: ID della richiesta per il caricamento differenziale. Una volta impostata questa proprietà, verranno recuperati solo i dati con requestId maggiore del valore di questa proprietà.

In generale, l'estrazione da SAP InfoProviders è costituita da due passaggi:

  1. Sap BW Data Transfer Process (DTP) Questo passaggio copia i dati da sap BW InfoProvider in una tabella SAP BW Open Hub

  2. Copia dei dati In questo passaggio la tabella Open Hub viene letta dal connettore

Flusso di estrazione differenziale

Nel primo passaggio viene eseguito un DTP. Ogni esecuzione crea un nuovo ID richiesta SAP. L'ID richiesta viene archiviato nella tabella Open Hub e quindi viene usato dal connettore per identificare il delta. I due passaggi vengono eseguiti in modo asincrono: il DTP viene attivato da SAP e la copia dei dati viene attivata tramite il servizio.

Per impostazione predefinita, il servizio non legge il delta più recente dalla tabella Open Hub (l'opzione "escludi ultima richiesta" è true). Di seguito, i dati nel servizio non sono aggiornati al 100% con i dati nella tabella Open Hub (l'ultimo delta è mancante). In cambio, questa procedura garantisce che non vengano perse righe causate dall'estrazione asincrona. Funziona correttamente anche quando il servizio legge la tabella Open Hub mentre il DTP sta ancora scrivendo nella stessa tabella.

In genere si archivia l'ID richiesta massima copiato nell'ultima esecuzione dal servizio in un archivio dati di staging, ad esempio BLOB di Azure nel diagramma precedente. Pertanto, la stessa richiesta non viene letta una seconda volta dal servizio nell'esecuzione successiva. Nel frattempo, si noti che i dati non vengono eliminati automaticamente dalla tabella Open Hub.

Per una corretta gestione differenziale, non è consentito avere ID richiesta da DTP diversi nella stessa tabella dell'hub aperto. Pertanto, non è necessario creare più DTP per ogni destinazione dell'hub aperto (OHD). Quando è necessaria l'estrazione completa e differenziale dallo stesso InfoProvider, è necessario creare due OHD per lo stesso InfoProvider.

Prerequisiti

Per usare il connettore SAP Business Warehouse Open Hub, è necessario:

  • Configurare un runtime di integrazione self-hosted con la versione 3.13 o successive. Per i dettagli, vedere l'articolo Runtime di integrazione self-hosted.

  • Scaricare il connettore SAP .NET 3.0 a 64 bit dal sito Web di SAP e installarlo nel computer di runtime di integrazione self-hosted. Durante l'installazione, nella finestra della procedura di configurazione facoltativa verificare che sia selezionata l'opzione Install Assemblies to GAC (Installa assembly nella Global Assembly Cache) come illustrato nell'immagine seguente.

    Installare il connettore SAP .NET

  • L'utente SAP nel connettore BW deve disporre delle autorizzazioni seguenti:

    • Autorizzazione per RFC e SAP BW.
    • Autorizzazioni per l'attività "Execute" dell'oggetto di autorizzazione "S_SDSAUTH".
  • Creare il tipo SAP Open Hub Destination come Database Table (Tabella di database) con l'opzione "Technical Key" (Chiave tecnica) selezionata. È inoltre consigliabile lasciare deselezionata l'opzione di eliminazione dei dati dalla tabella, anche se questa impostazione non è obbligatoria. Usare DTP (esecuzione diretta o integrazione nella catena di processo esistente) per il trasferimento dei dati dall'oggetto di origine scelto (ad esempio il cubo) nella tabella di destinazione dell'hub aperto.

Introduzione

Suggerimento

Per una procedura dettagliata sull'uso del connettore SAP BW Open Hub, vedere Caricare dati da SAP Business Warehouse (BW).

Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:

Le sezioni seguenti riportano informazioni dettagliate sulle proprietà che vengono usate per definire entità specifiche per il connettore SAP Business Warehouse Open Hub.

Proprietà del servizio collegato

Per il servizio collegato di SAP Business Warehouse Open Hub sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
type La proprietà type deve essere impostata su: SapOpenHub
server Nome del server in cui si trova l'istanza di SAP BW.
systemNumber Numero del sistema SAP BW.
Valore consentito: numero decimale a due cifre rappresentato come stringa.
messageServer Nome host del server di messaggi SAP.
Usare per connettersi a un server di messaggi SAP.
No
messageServerService Nome del servizio o numero di porta del server messaggi.
Usare per connettersi a un server di messaggi SAP.
No
systemId ID del sistema SAP in cui si trova la tabella.
Usare per connettersi a un server di messaggi SAP.
No
logonGroup Gruppo di accesso per il sistema SAP.
Usare per connettersi a un server di messaggi SAP.
No
clientId ID del client nel sistema SAP BW.
Valore consentito: numero decimale a tre cifre rappresentato come stringa.
lingua Lingua usata dal sistema SAP. No (valore predefinito: EN)
userName Nome dell'utente che ha accesso al server SAP.
password Password per l'utente. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro oppure fare riferimento a un segreto archiviato in Azure Key Vault.
connectVia Il runtime di integrazione da usare per la connessione all'archivio dati. È necessario un runtime di integrazione self-hosted come indicato in Prerequisiti.

Esempio:

{
    "name": "SapBwOpenHubLinkedService",
    "properties": {
        "type": "SapOpenHub",
        "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"
        }
    }
}

Proprietà del set di dati

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione dei set di dati, vedere l'articolo Set di dati. Questa sezione presenta un elenco delle proprietà supportate dal dataset SAP BW Open Hub.

Per copiare dati da e in SAP BW Open Hub, impostare la proprietà type del set di dati su SapOpenHubTable. Sono supportate le proprietà seguenti.

Proprietà Descrizione Richiesto
type La proprietà type deve essere impostata su SapOpenHubTable.
openHubDestinationName Il nome di Open Hub Destination da cui copiare i dati.

Se è stato impostato excludeLastRequest e baseRequestId nel set di dati, è ancora supportato così com’è, mentre viene suggerito di usare il nuovo modello nell’origine attività in futuro.

Esempio:

{
    "name": "SAPBWOpenHubDataset",
    "properties": {
        "type": "SapOpenHubTable",
        "typeProperties": {
            "openHubDestinationName": "<open hub destination name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<SAP BW Open Hub linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Proprietà dell'attività di copia

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere l'articolo sulle pipeline. Questa sezione presenta un elenco delle proprietà supportate dall'origine SAP BW Open Hub.

SAP BW Open Hub come origine

Per copiare i dati da SAP BW Open Hub, nella sezione origine dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
type La proprietà type dell'origine dell'attività di copia deve essere impostata su: SapOpenHubSource.
excludeLastRequest Se escludere i record dell'ultima richiesta. No (il valore predefinito è true)
baseRequestId L'ID della richiesta per il caricamento differenziale. Una volta impostata questa proprietà, verranno recuperati solo i dati con requestId maggiore del valore di questa proprietà. No
customRfcReadTableFunctionModule Modulo di funzione RFC personalizzato che può essere usato per leggere i dati da una tabella SAP.
È possibile usare un modulo di funzione RFC personalizzato per definire il modo in cui i dati vengono recuperati dal sistema SAP e restituiti al servizio. Il modulo della funzione personalizzata deve avere un'interfaccia implementata (importazione, esportazione, tabelle) simile a /SAPDS/RFC_READ_TABLE2, che è l'interfaccia predefinita usata dal servizio.
No
sapDataColumnDelimiter Carattere singolo che viene usato come delimitatore passato a SAP RFC per suddividere i dati di output. No

Suggerimento

Se ad esempio la tabella Open Hub contiene solo dati generati in base a ID di richiesta singola, si esegue sempre il caricamento completo e si sovrascrivono i dati esistenti nella tabella oppure si esegue DTP una sola volta per il test, ricordarsi di deselezionare l'opzione "excludeLastRequest" per la copia dei dati.

Per velocizzare il caricamento dei dati, è possibile impostare parallelCopies sull'attività di copia per caricare i dati da SAP BW Open Hub in parallelo. Ad esempio, se si imposta parallelCopies su quattro, il servizio esegue simultaneamente quattro chiamate RFC e ogni chiamata RFC recupera una parte di dati dalla tabella dell'hub open SAP BW partizionata dall'ID richiesta DTP e dall'ID pacchetto. Questo vale quando il numero di ID richiesta DTP univoco + ID pacchetto è maggiore del valore di parallelCopies. Quando si copiano dati in un archivio dati basato su file, si consiglia anche di scrivere in una cartella come più file con solo il nome della cartella specificato, nel qual caso le prestazioni sono migliori rispetto alla scrittura in un singolo file.

Esempio:

"activities":[
    {
        "name": "CopyFromSAPBWOpenHub",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<SAP BW Open Hub input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SapOpenHubSource",
                "excludeLastRequest": true
            },
            "sink": {
                "type": "<sink type>"
            },
            "parallelCopies": 4
        }
    }
]

Mapping dei tipi di dati per SAP BW Open Hub

Quando si copiano dati da SAP BW Open Hub, vengono usati i mapping seguenti tra i tipi di dati di SAP BW e i tipi di dati provvisori usati internamente al servizio. Vedere Mapping dello schema e del tipo di dati per informazioni su come l'attività di copia esegue il mapping dello schema di origine e del tipo di dati al sink.

Tipo SAP ABAP Tipo di dati del servizio provvisorio
C (String) String
I (integer) Int32
F (Float) Double
D (Date) String
T (Time) String
P (BCD Packed, Currency, Decimal, Qty) Decimale
N (Numc) String
X (Binary e Raw) String

Proprietà dell'attività Lookup

Per altre informazioni sulle proprietà, vedere Attività Lookup.

Suggerimenti per la risoluzione dei problemi

Sintomi: se si esegue SAP BW in HANA e si osserva solo il sottoinsieme di dati viene copiato tramite l'attività di copia (1 milione di righe), la causa possibile è che si abilita l'opzione "Esecuzione SAP HANA" nel DTP, nel qual caso il servizio può recuperare solo il primo batch di dati.

Soluzione: disabilitare l'opzione "Esecuzione SAP HANA" in DTP, rielaborare i dati e quindi provare a eseguire nuovamente l'attività di copia.

Per un elenco degli archivi dati supportati come origini e sink dall'attività Copy, vedere Archivi dati supportati.