Copiare dati da una tabella SAP con Azure Data Factory o Azure Synapse Analytics
SI APPLICA A: Azure Data Factory Azure Synapse Analytics
Suggerimento
Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .
Questo articolo illustra come usare l'attività di copia nelle pipeline di Azure Data Factory e Azure Synapse Analytics per copiare dati da una tabella SAP. Per altre informazioni, vedere Panoramica dell'attività di copia.
Suggerimento
Per informazioni sul supporto generale sullo scenario di integrazione dei dati SAP, vedere White paper sull'integrazione dei dati SAP con il white paper di Azure Data Factory con introduzione dettagliata su ogni connettore SAP, comparsion e indicazioni.
Funzionalità supportate
Questo connettore di tabelle SAP è supportato per le funzionalità seguenti:
Funzionalità supportate | IR |
---|---|
attività Copy (source/-) | ② |
Attività Lookup | ② |
(1) Runtime di integrazione di Azure (2) Runtime di integrazione self-hosted
Per un elenco degli archivi dati supportati come origini o sink dall'attività di copia, vedere la tabella Archivi dati supportati.
In particolare, questo connettore di tabelle SAP supporta:
Copia di dati da una tabella SAP in:
- SAP ERP Central Component (SAP ECC) versione 7.01 o successiva (in un recente stack di pacchetti di supporto SAP rilasciato dopo il 2015).
- SAP Business Warehouse (SAP BW) versione 7.01 o successiva (in uno stack di pacchetti di supporto SAP recente rilasciato dopo il 2015).
- SAP S/4HANA.
- Altri prodotti in SAP Business Suite versione 7.01 o successiva (in uno stack di pacchetti di supporto SAP recente rilasciato dopo il 2015).
Copia di dati da una tabella trasparente SAP, una tabella in pool, una tabella cluster e una vista.
Copia dei dati usando l'autenticazione di base o SECURE Network Communications (SNC), se snc è configurato.
Connessione a un server applicazioni SAP o a un server messaggi SAP.
Recupero di dati tramite RFC predefinito o personalizzato.
La versione 7.01 o successiva fa riferimento alla versione sap NetWeaver anziché alla versione SAP ECC. Ad esempio, SAP ECC 6.0 EHP 7 in generale ha NetWeaver versione >=7.4. In caso di dubbi sull'ambiente, ecco i passaggi per confermare la versione dal sistema SAP:
- Usare l'interfaccia utente grafica SAP per connettersi al sistema SAP.
- Passare a System ->Status (Stato sistema).
- Controllare il rilascio del SAP_BASIS, assicurarsi che sia uguale o maggiore di 701.
Prerequisiti
Per usare questo connettore di tabelle SAP, è necessario:
Configurare un runtime di integrazione self-hosted (versione 3.17 o successiva). Per altre informazioni, vedere Creare e configurare un runtime di integrazione self-hosted.
Scaricare sap Connessione or a 64 bit per Microsoft .NET 3.0 dal sito Web di SAP e installarlo nel computer di runtime di integrazione self-hosted. Durante l'installazione, assicurarsi di selezionare l'opzione Installa assembly in GAC nella finestra Passaggi di installazione facoltativi.
L'utente SAP usato nel connettore di tabelle SAP deve disporre delle autorizzazioni seguenti:
- Autorizzazione per l'uso di destinazioni RFC (Remote Function Call).
- Autorizzazioni per l'attività Execute dell'oggetto autorizzazione S_SDSAUTH. È possibile fare riferimento alla nota SAP 460089 sugli oggetti di autorizzazione di maggioranza. Alcuni RFC sono richiesti dal connettore NCo sottostante, ad esempio RFC_FUNCTION_edizione Standard ARCH.
Introduzione
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
- The Python SDK
- Azure PowerShell
- The REST API
- Modello di Azure Resource Manager
Creare un servizio collegato a una tabella SAP usando l'interfaccia utente
Usare la procedura seguente per creare un servizio collegato a una tabella SAP nell'interfaccia utente di portale di Azure.
Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:
Cercare SAP e selezionare il connettore di tabelle SAP.
Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.
Dettagli di configurazione di Connessione or
Le sezioni seguenti forniscono informazioni dettagliate sulle proprietà usate per definire le entità specifiche del connettore di tabelle SAP.
Proprietà del servizio collegato
Per il servizio collegato SAP BW Open Hub sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type |
Per poter utilizzare questa proprietà, type la proprietà deve essere impostata su SapTable |
Sì |
server |
Nome del server in cui si trova l'istanza SAP. Usare per connettersi a un server applicazioni SAP. |
No |
systemNumber |
Numero di sistema del sistema SAP. Usare per connettersi a un server applicazioni SAP. Valore consentito: numero decimale a due cifre rappresentato come stringa. |
No |
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. Valore consentito: numero decimale a tre cifre rappresentato come stringa. |
Sì |
language |
Linguaggio usato dal sistema SAP. Il valore predefinito è EN . |
No |
userName |
Nome dell'utente che ha accesso al server SAP. | Sì |
password |
La password dell'utente. Contrassegnare questo campo con il SecureString tipo per archiviarlo in modo sicuro o fare riferimento a un segreto archiviato in Azure Key Vault. |
Sì |
sncMode |
Indicatore di attivazione SNC per accedere al server SAP in cui si trova la tabella. Usare se si vuole usare SNC per connettersi al server SAP. I valori consentiti sono 0 (disattivati, predefiniti) o 1 (attivato). |
No |
sncMyName |
Nome SNC dell'iniziatore per accedere al server SAP in cui si trova la tabella. Si applica quando sncMode è attivato. |
No |
sncPartnerName |
Nome SNC del partner di comunicazione per accedere al server SAP in cui si trova la tabella. Si applica quando sncMode è attivato. |
No |
sncLibraryPath |
Libreria del prodotto di sicurezza esterna per accedere al server SAP in cui si trova la tabella. Si applica quando sncMode è attivato. |
No |
sncQop |
Livello di protezione della qualità SNC da applicare. Si applica quando sncMode è Attivato. I valori consentiti sono 1 (autenticazione), 2 (integrità), 3 (privacy), (impostazione predefinita), 8 9 (massimo). |
No |
connectVia |
Runtime di integrazione da usare per la connessione all'archivio dati. È necessario un runtime di integrazione self-hosted, come indicato in precedenza in Prerequisiti. | Sì |
Esempio 1: Connessione a un server applicazioni 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"
}
}
}
Esempio 2: Connessione a un server di messaggi 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"
}
}
}
Esempio 3: Connessione usando 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"
}
}
}
Proprietà del set di dati
Per un elenco completo delle sezioni e delle proprietà per la definizione dei set di dati, vedere Set di dati. La sezione seguente presenta un elenco delle proprietà supportate dal set di dati della tabella SAP.
Per copiare dati da e nel servizio collegato SAP BW Open Hub, sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type |
Per poter utilizzare questa proprietà, type la proprietà deve essere impostata su SapTableResource |
Sì |
tableName |
Nome della tabella SAP da cui copiare i dati. | Sì |
Esempio
{
"name": "SAPTableDataset",
"properties": {
"type": "SapTableResource",
"typeProperties": {
"tableName": "<SAP table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP table linked service name>",
"type": "LinkedServiceReference"
}
}
}
Proprietà dell'attività di copia
Per un elenco completo delle sezioni e delle proprietà per la definizione delle attività, vedere Pipeline. Nella sezione seguente viene fornito un elenco delle proprietà supportate dall'origine tabella SAP.
Tabella SAP come origine
Per copiare dati da una tabella SAP, sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type |
Per poter utilizzare questa proprietà, type la proprietà deve essere impostata su SapTableSource |
Sì |
rowCount |
Numero di righe da recuperare. | No |
rfcTableFields |
Campi (colonne) da copiare dalla tabella SAP. Ad esempio, column0, column1 . |
No |
rfcTableOptions |
Opzioni per filtrare le righe in una tabella SAP. Ad esempio, COLUMN0 EQ 'SOMEVALUE' . Vedere anche la tabella degli operatori di query SAP più avanti in questo articolo. |
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 |
partitionOption |
Meccanismo di partizione da leggere da una tabella SAP. Le opzioni supportate includono:
|
No |
partitionColumnName |
Nome della colonna utilizzata per partizionare i dati. | No |
partitionUpperBound |
Valore massimo della colonna specificata in partitionColumnName che verrà usato per continuare con il partizionamento. |
No |
partitionLowerBound |
Valore minimo della colonna specificata in partitionColumnName che verrà usato per continuare con il partizionamento. (Nota: partitionLowerBound non può essere "0" quando l'opzione di partizione è PartitionOnInt ) |
No |
maxPartitionsNumber |
Numero massimo di partizioni in cui suddividere i dati. Il valore predefinito è 1. | No |
sapDataColumnDelimiter |
Carattere singolo usato come delimitatore passato a SAP RFC per suddividere i dati di output. | No |
Suggerimento
Se la tabella SAP ha un volume elevato di dati, ad esempio diversi miliardi di righe, usare partitionOption
e partitionSetting
suddividere i dati in partizioni più piccole. In questo caso, i dati vengono letti per partizione e ogni partizione di dati viene recuperata dal server SAP tramite una singola chiamata RFC.
Prendendo partitionOption
come partitionOnInt
esempio, il numero di righe in ogni partizione viene calcolato con questa formula: (righe totali comprese tra partitionUpperBound
e partitionLowerBound
)/maxPartitionsNumber
.
Per caricare le partizioni di dati in parallelo per velocizzare la copia, il grado parallelo è controllato dall'impostazione sull'attività parallelCopies
di copia. Ad esempio, se si imposta parallelCopies
su quattro, il servizio genera e esegue simultaneamente quattro query in base all'opzione e alle impostazioni di partizione specificate e ogni query recupera una parte di dati dalla tabella SAP. È consigliabile creare maxPartitionsNumber
un multiplo del valore della parallelCopies
proprietà . Quando si copiano dati in un archivio dati basato su file, è anche consigliabile scrivere in una cartella come più file (specificare solo il nome della cartella), nel qual caso le prestazioni sono migliori rispetto alla scrittura in un singolo file.
Suggerimento
BASXML
È abilitato per impostazione predefinita per questo connettore di tabelle SAP all'interno del servizio.
In rfcTableOptions
è possibile usare gli operatori di query SAP comuni seguenti per filtrare le righe:
Operator | Descrizione |
---|---|
EQ |
Uguale a |
NE |
Diverso da |
LT |
Minore di |
LE |
Minore di o uguale a |
GT |
Maggiore di |
GE |
Maggiore di o uguale a |
IN |
Come in TABCLASS IN ('TRANSP', 'INTTAB') |
LIKE |
Come in LIKE 'Emma%' |
Esempio
"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
}
}
]
Creare un join di tabelle SAP
Attualmente SAP Table Connector supporta solo una singola tabella con il modulo di funzione predefinito. Per ottenere i dati uniti di più tabelle, è possibile sfruttare la proprietà customRfcReadTableFunctionModule nel connettore tabella SAP seguendo questa procedura:
- Scrivere un modulo di funzione personalizzato, che può eseguire una query come OPZIONI e applicare la propria logica per recuperare i dati.
- Per il modulo "Funzione personalizzata", immettere il nome del modulo della funzione personalizzata.
- Per le "opzioni della tabella RFC", specificare l'istruzione join di tabella da inserire nel modulo di funzione come OPTIONS, ad esempio "
<TABLE1>
INNER JOIN<TABLE2>
ON COLUMN0".
Di seguito è riportato un esempio:
Suggerimento
È anche possibile prendere in considerazione la possibilità di aggregare i dati uniti in VIEW, supportato da SAP Table Connector. È anche possibile provare a estrarre tabelle correlate per eseguire l'onboarding in Azure (ad esempio, Archiviazione di Azure, database SQL di Azure), quindi usare Flusso di dati per procedere con un ulteriore join o filtro.
Creare un modulo di funzione personalizzato
Per la tabella SAP, attualmente è supportata la proprietà customRfcReadTableFunctionModule nell'origine della copia, che consente di sfruttare la logica e elaborare i dati.
Di seguito sono riportati alcuni requisiti per iniziare a usare il modulo "Funzione personalizzata":
Definizione:
Esportare i dati in una delle tabelle seguenti:
Di seguito sono riportate le illustrazioni del funzionamento del connettore di tabelle SAP con il modulo di funzione personalizzato:
Creare una connessione con il server SAP tramite SAP NCO.
Richiamare "Modulo funzione personalizzato" con i parametri impostati come indicato di seguito:
- QUERY_TABLE: il nome della tabella impostato nel set di dati tabella SAP;
- Delimitatore: il delimitatore impostato nell'origine tabella SAP;
- ROWCOUNT/Option/Fields: opzione/campi aggregati impostati nell'origine tabella.
Ottenere il risultato e analizzare i dati nei modi seguenti:
Analizzare il valore nella tabella Fields per ottenere gli schemi.
Ottenere i valori della tabella di output per vedere quale tabella contiene questi valori.
Ottenere i valori nella OUT_TABLE, analizzare i dati e quindi scriverli nel sink.
Mapping dei tipi di dati per una tabella SAP
Quando si copiano dati da una tabella SAP, i mapping seguenti vengono usati dai tipi di dati della tabella SAP ai tipi di dati provvisori usati all'interno del 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 provvisori del servizio |
---|---|
C (String) |
String |
I (Intero) |
Int32 |
F (Float) |
Double |
D (Data) |
String |
T (Ora) |
String |
P (BCD Packed, Currency, Decimal, Qty) |
Decimal |
N (Numerico) |
String |
X (binario e non elaborato) |
String |
Proprietà dell'attività Lookup
Per altre informazioni sulle proprietà, vedere Attività Lookup.
Contenuto correlato
Per un elenco degli archivi dati supportati come origini e sink dall'attività di copia, vedere Archivi dati supportati.