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.
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:
Sap BW Data Transfer Process (DTP) Questo passaggio copia i dati da sap BW InfoProvider in una tabella SAP BW Open Hub
Copia dei dati In questo passaggio la tabella Open Hub viene letta dal connettore
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.
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:
- Strumento Copia dati
- Il portale di Azure
- .NET SDK
- SDK di Python
- Azure PowerShell
- API REST
- Modello di Azure Resource Manager
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 | Sì |
server | Nome del server in cui si trova l'istanza di SAP BW. | Sì |
systemNumber | Numero del sistema SAP BW. Valore consentito: numero decimale a due cifre rappresentato come stringa. |
Sì |
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. |
Sì |
lingua | Lingua usata dal sistema SAP. | No (valore predefinito: EN) |
userName | Nome dell'utente che ha accesso al server SAP. | Sì |
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. | Sì |
connectVia | Il runtime di integrazione da usare per la connessione all'archivio dati. È necessario un runtime di integrazione self-hosted come indicato in Prerequisiti. | Sì |
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. | Sì |
openHubDestinationName | Il nome di Open Hub Destination da cui copiare i dati. | Sì |
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. | Sì |
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.
Contenuto correlato
Per un elenco degli archivi dati supportati come origini e sink dall'attività Copy, vedere Archivi dati supportati.