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:

  1. Usare l'interfaccia utente grafica SAP per connettersi al sistema SAP.
  2. Passare a System ->Status (Stato sistema).
  3. Controllare il rilascio del SAP_BASIS, assicurarsi che sia uguale o maggiore di 701.
    Check SAP_BASIS

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.

    Install SAP Connector for .NET

  • 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:

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.

  1. Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:

  2. Cercare SAP e selezionare il connettore di tabelle SAP.

    Screenshot of the SAP table connector.

  3. Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.

    Screenshot of configuration for an SAP table linked service.

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à, typela proprietà deve essere impostata su SapTable
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.
language Linguaggio usato dal sistema SAP.
Il valore predefinito è EN.
No
userName Nome dell'utente che ha accesso al server SAP.
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.
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), 89 (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.

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à, typela proprietà deve essere impostata su SapTableResource
tableName Nome della tabella SAP da cui copiare i dati.

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à, typela proprietà deve essere impostata su SapTableSource
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:
  • None
  • PartitionOnInt (valori interi normali o interi con spaziatura interna zero a sinistra, ad esempio 0000012345)
  • PartitionOnCalendarYear (4 cifre nel formato "AAAA")
  • PartitionOnCalendarMonth (6 cifre nel formato "AAAAMM")
  • PartitionOnCalendarDate (8 cifre nel formato "AAAAAMMGG")
  • PartitionOntime (6 cifre nel formato "HHMMSS", ad esempio 235959)
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:

Sap Table Join

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:

    Definition

  • Esportare i dati in una delle tabelle seguenti:

    Export table 1

    Export table 2

Di seguito sono riportate le illustrazioni del funzionamento del connettore di tabelle SAP con il modulo di funzione personalizzato:

  1. Creare una connessione con il server SAP tramite SAP NCO.

  2. 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.
  3. Ottenere il risultato e analizzare i dati nei modi seguenti:

    1. Analizzare il valore nella tabella Fields per ottenere gli schemi.

      Parse values in Fields

    2. Ottenere i valori della tabella di output per vedere quale tabella contiene questi valori.

      Get values in output table

    3. 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.

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