Kopiera data från en SAP-tabell med Azure Data Factory eller Azure Synapse Analytics
GÄLLER FÖR: Azure Data Factory
Azure Synapse Analytics
Dricks
Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!
Den här artikeln beskriver hur du använder kopieringsaktiviteten i Azure Data Factory- och Azure Synapse Analytics-pipelines för att kopiera data från en SAP-tabell. Mer information finns i Översikt över kopieringsaktivitet.
Dricks
Information om det övergripande stödet för SAP-dataintegrering finns i SAP-dataintegrering med hjälp av Azure Data Factory white paper med detaljerad introduktion till varje SAP-anslutningsapp, jämförelse och vägledning.
Funktioner som stöds
Den här SAP-tabellanslutningsappen stöds för följande funktioner:
Funktioner som stöds | IR |
---|---|
Kopieringsaktivitet (källa/-) | (2) |
Sökningsaktivitet | (2) |
(1) Azure Integration Runtime (2) Lokalt installerad integrationskörning
En lista över de datalager som stöds som källor eller mottagare av kopieringsaktiviteten finns i tabellen Datalager som stöds.
Mer specifikt stöder den här SAP-tabellanslutningsappen:
Kopiera data från en SAP-tabell i:
- SAP ERP Central Component (SAP ECC) version 7.01 eller senare (i en nyligen publicerad SAP Support Package Stack efter 2015).
- SAP Business Warehouse (SAP BW) version 7.01 eller senare (i en nyligen publicerad SAP Support Package Stack efter 2015).
- SAP S/4HANA.
- Andra produkter i SAP Business Suite version 7.01 eller senare (i en nyligen publicerad SAP Support Package Stack efter 2015).
Kopiera data från både en TRANSPARENT SAP-tabell, en pooltabell, en klustrad tabell och en vy.
Kopiera data med grundläggande autentisering eller SNC (Secure Network Communications), om SNC har konfigurerats.
Ansluta till en SAP-programserver eller SAP-meddelandeserver.
Hämtar data via standard eller anpassad RFC.
Version 7.01 eller senare refererar till SAP NetWeaver-versionen i stället för SAP ECC-versionen. Till exempel har SAP ECC 6.0 EHP 7 i allmänhet NetWeaver-version >=7.4. Om du är osäker på din miljö följer du stegen för att bekräfta versionen från DITT SAP-system:
- Använd SAP GUI för att ansluta till SAP-systemet.
- Gå till System ->Status.
- Kontrollera versionen av SAP_BASIS, se till att den är lika med eller större än 701.
Förutsättningar
Om du vill använda den här SAP-tabellanslutningsappen måste du:
Konfigurera en lokalt installerad integrationskörning (version 3.17 eller senare). Mer information finns i Skapa och konfigurera en lokalt installerad integrationskörning.
Ladda ned 64-bitars SAP Connector för Microsoft .NET 3.0 från SAP:s webbplats och installera den på den lokala integrationskörningsdatorn. Under installationen kontrollerar du att du väljer alternativet Installera sammansättningar till GAC i fönstret Valfria installationssteg .
DEN SAP-användare som används i SAP-tabellanslutningen måste ha följande behörigheter:
- Auktorisering för användning av RFC-mål (Remote Function Call).
- Behörigheter till körningsaktiviteten för S_SDSAUTH-auktoriseringsobjektet. Du kan läsa SAP Note 460089 för de flesta auktoriseringsobjekt. Vissa RFC:er krävs av den underliggande NCo-anslutningsappen, till exempel RFC_FUNCTION_SEARCH.
Kom igång
Om du vill utföra kopieringsaktiviteten med en pipeline kan du använda något av följande verktyg eller SDK:er:
- Verktyget Kopiera data
- Azure-portalen
- The .NET SDK
- The Python SDK
- Azure PowerShell
- REST-API:et
- Azure Resource Manager-mallen
Skapa en länkad tjänst till en SAP-tabell med hjälp av användargränssnittet
Använd följande steg för att skapa en länkad tjänst till en SAP-tabell i Användargränssnittet för Azure-portalen.
Bläddra till fliken Hantera i Din Azure Data Factory- eller Synapse-arbetsyta och välj Länkade tjänster och klicka sedan på Ny:
Sök efter SAP och välj SAP-tabellanslutningen.
Konfigurera tjänstinformationen, testa anslutningen och skapa den nya länkade tjänsten.
Konfigurationsinformation för anslutningsprogram
Följande avsnitt innehåller information om egenskaper som används för att definiera de entiteter som är specifika för SAP-tabellanslutningen.
Länkade tjänstegenskaper
Följande egenskaper stöds för den länkade SAP BW Open Hub-tjänsten:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type |
Egenskapen type måste vara inställd på SapTable . |
Ja |
server |
Namnet på servern där SAP-instansen finns. Använd för att ansluta till en SAP-programserver. |
Nej |
systemNumber |
Systemnumret för SAP-systemet. Använd för att ansluta till en SAP-programserver. Tillåtet värde: Ett tvåsiffrigt decimaltal som representeras som en sträng. |
Nej |
messageServer |
Värdnamnet för SAP-meddelandeservern. Använd för att ansluta till en SAP-meddelandeserver. |
Nej |
messageServerService |
Meddelandeserverns tjänstnamn eller portnummer. Använd för att ansluta till en SAP-meddelandeserver. |
Nej |
systemId |
ID:t för SAP-systemet där tabellen finns. Använd för att ansluta till en SAP-meddelandeserver. |
Nej |
logonGroup |
Inloggningsgruppen för SAP-systemet. Använd för att ansluta till en SAP-meddelandeserver. |
Nej |
clientId |
ID:t för klienten i SAP-systemet. Tillåtet värde: Ett tresiffrigt decimaltal som representeras som en sträng. |
Ja |
language |
Det språk som SAP-systemet använder. Standardvärdet är EN . |
Nej |
userName |
Namnet på den användare som har åtkomst till SAP-servern. | Ja |
password |
Ange lösenordet för användaren. Markera det här fältet med typen SecureString för att lagra det på ett säkert sätt eller referera till en hemlighet som lagras i Azure Key Vault. |
Ja |
sncMode |
SNC-aktiveringsindikatorn för åtkomst till SAP-servern där tabellen finns. Använd om du vill använda SNC för att ansluta till SAP-servern. Tillåtna värden är 0 (av, standardvärdet) eller 1 (på). |
Nej |
sncMyName |
Initierarens SNC-namn för att komma åt SAP-servern där tabellen finns. Gäller när sncMode är på. |
Nej |
sncPartnerName |
Kommunikationspartnerns SNC-namn för åtkomst till SAP-servern där tabellen finns. Gäller när sncMode är på. |
Nej |
sncLibraryPath |
Den externa säkerhetsproduktens bibliotek för åtkomst till SAP-servern där tabellen finns. Gäller när sncMode är på. |
Nej |
sncQop |
Den SNC-skyddsnivå som ska tillämpas. Gäller när sncMode är på. Tillåtna värden är 1 (autentisering), 2 (integritet), 3 (sekretess), 8 (standard), 9 (högsta). |
Nej |
connectVia |
Den integrationskörning som ska användas för att ansluta till datalagret. En lokalt installerad integrationskörning krävs, som tidigare nämnts i Krav. | Ja |
Exempel 1: Ansluta till en SAP-programserver
{
"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"
}
}
}
Exempel 2: Ansluta till en SAP-meddelandeserver
{
"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"
}
}
}
Exempel 3: Anslut med hjälp av 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"
}
}
}
Egenskaper för datauppsättning
En fullständig lista över avsnitt och egenskaper för att definiera datauppsättningar finns i Datauppsättningar. Följande avsnitt innehåller en lista över de egenskaper som stöds av SAP-tabelldatauppsättningen.
Följande egenskaper stöds för att kopiera data från och till den länkade SAP BW Open Hub-tjänsten:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type |
Egenskapen type måste vara inställd på SapTableResource . |
Ja |
tableName |
Namnet på DEN SAP-tabell som data ska kopieras från. | Ja |
Exempel
{
"name": "SAPTableDataset",
"properties": {
"type": "SapTableResource",
"typeProperties": {
"tableName": "<SAP table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP table linked service name>",
"type": "LinkedServiceReference"
}
}
}
Kopiera egenskaper för aktivitet
En fullständig lista över avsnitt och egenskaper för att definiera aktiviteter finns i Pipelines. Följande avsnitt innehåller en lista över de egenskaper som stöds av SAP-tabellkällan.
SAP-tabell som källa
Följande egenskaper stöds för att kopiera data från en SAP-tabell:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type |
Egenskapen type måste vara inställd på SapTableSource . |
Ja |
rowCount |
Antalet rader som ska hämtas. | Nej |
rfcTableFields |
Fälten (kolumner) som ska kopieras från SAP-tabellen. Exempel: column0, column1 |
Nej |
rfcTableOptions |
Alternativen för att filtrera raderna i en SAP-tabell. Exempel: COLUMN0 EQ 'SOMEVALUE' Se även sap-frågeoperatortabellen senare i den här artikeln. |
Nej |
customRfcReadTableFunctionModule |
En anpassad RFC-funktionsmodul som kan användas för att läsa data från en SAP-tabell. Du kan använda en anpassad RFC-funktionsmodul för att definiera hur data hämtas från DITT SAP-system och returneras till tjänsten. Den anpassade funktionsmodulen måste ha ett gränssnitt implementerat (import, export, tabeller) som liknar /SAPDS/RFC_READ_TABLE2 , vilket är standardgränssnittet som används av tjänsten. |
Nej |
partitionOption |
Partitionsmekanismen som ska läsas från en SAP-tabell. Alternativen som stöds är:
|
Nej |
partitionColumnName |
Namnet på kolumnen som används för att partitionera data. | Nej |
partitionUpperBound |
Det maximala värdet för den kolumn som anges i partitionColumnName som ska användas för att fortsätta med partitionering. |
Nej |
partitionLowerBound |
Det minsta värdet för den kolumn som anges i partitionColumnName som ska användas för att fortsätta med partitionering. (Obs! partitionLowerBound får inte vara "0" när partitionsalternativet är PartitionOnInt ) |
Nej |
maxPartitionsNumber |
Det maximala antalet partitioner som data ska delas upp i. Standardvärdet är 1. | Nej |
sapDataColumnDelimiter |
Det enda tecken som används som avgränsare som skickas till SAP RFC för att dela upp utdata. | Nej |
Dricks
Om SAP-tabellen har en stor mängd data, till exempel flera miljarder rader, använder partitionOption
du och partitionSetting
delar upp data i mindre partitioner. I det här fallet läss data per partition och varje datapartition hämtas från SAP-servern via ett enda RFC-anrop.
Som partitionOption
exempel beräknas antalet rader i varje partition med den här formeln: (totalt antal rader som partitionOnInt
faller mellan partitionUpperBound
och partitionLowerBound
)/maxPartitionsNumber
.
Om du vill läsa in datapartitioner parallellt för att påskynda kopieringen styrs den parallella graden av parallelCopies
inställningen för kopieringsaktiviteten. Om du till exempel anger parallelCopies
till fyra genererar och kör tjänsten samtidigt fyra frågor baserat på det angivna partitionsalternativet och inställningarna, och varje fråga hämtar en del av data från SAP-tabellen. Vi rekommenderar starkt att du gör maxPartitionsNumber
en multipel av värdet för parallelCopies
egenskapen. När du kopierar data till ett filbaserat datalager rekommenderas det också att skriva till en mapp som flera filer (ange endast mappnamn), vilket innebär att prestandan är bättre än att skriva till en enda fil.
Dricks
BASXML
Är aktiverat som standard för den här SAP Table-anslutningsappen i tjänsten.
I rfcTableOptions
kan du använda följande vanliga SAP-frågeoperatorer för att filtrera raderna:
Operatör | beskrivning |
---|---|
EQ |
Lika med |
NE |
Inte lika med |
LT |
Mindre än |
LE |
Mindre än eller lika med |
GT |
Större än |
GE |
Större än eller lika med |
IN |
Som i TABCLASS IN ('TRANSP', 'INTTAB') |
LIKE |
Som i LIKE 'Emma%' |
Exempel
"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
}
}
]
Ansluta TILL SAP-tabeller
För närvarande stöder SAP Table Connector endast en enskild tabell med standardfunktionsmodulen. Om du vill hämta anslutna data för flera tabeller kan du använda egenskapen customRfcReadTableFunctionModule i SAP Table Connector genom att följa stegen nedan:
- Skriv en anpassad funktionsmodul som kan ta en fråga som ALTERNATIV och använda din egen logik för att hämta data.
- För modulen "Anpassad funktion" anger du namnet på din anpassade funktionsmodul.
- För "RFC-tabellalternativ" anger du tabellkopplingssatsen för att mata in i funktionsmodulen som ALTERNATIV, till exempel "
<TABLE1>
INRE KOPPLING<TABLE2>
PÅ COLUMN0".
Nedan visas ett exempel:
Dricks
Du kan också överväga att aggregera anslutna data i VIEW, som stöds av SAP Table Connector. Du kan också prova att extrahera relaterade tabeller för att komma ombord på Azure (t.ex. Azure Storage, Azure SQL Database) och sedan använda Data Flow för att fortsätta med ytterligare koppling eller filter.
Skapa en anpassad funktionsmodul
För SAP-tabellen stöder vi för närvarande egenskapen customRfcReadTableFunctionModule i kopieringskällan, vilket gör att du kan använda din egen logik och processdata.
Som en snabb vägledning, här är några krav för att komma igång med "Anpassad funktionsmodul":
Definition:
Exportera data till en av tabellerna nedan:
Nedan visas illustrationer av hur SAP Table Connector fungerar med modulen anpassad funktion:
Skapa anslutning med SAP-servern via SAP NCO.
Anropa "Anpassad funktionsmodul" med parametrarna som anges nedan:
- QUERY_TABLE: tabellnamnet som du angav i SAP Table-datauppsättningen.
- Avgränsare: avgränsare som du angav i SAP-tabellkällan.
- ROWCOUNT/Option/Fields: rowcount/aggregated option/fields som du angav i tabellkällan.
Hämta resultatet och parsa data på följande sätt:
Parsa värdet i tabellen Fält för att hämta scheman.
Hämta värdena för utdatatabellen för att se vilken tabell som innehåller dessa värden.
Hämta värdena i OUT_TABLE, parsa data och skriv dem sedan till mottagaren.
Datatypsmappningar för en SAP-tabell
När du kopierar data från en SAP-tabell används följande mappningar från SAP-tabelldatatyperna till mellanliggande datatyper som används i tjänsten. Information om hur kopieringsaktiviteten mappar källschemat och datatypen till mottagaren finns i Schema- och datatypmappningar.
SAP ABAP-typ | Tjänst interimsdatatyp |
---|---|
C (Sträng) |
String |
I (Heltal) |
Int32 |
F (Flyttal) |
Double |
D (Datum) |
String |
T (Tid) |
String |
P (BCD Packed, Currency, Decimal, Qty) |
Decimal |
N (Numeriskt) |
String |
X (Binär och rå) |
String |
Egenskaper för uppslagsaktivitet
Mer information om egenskaperna finns i Sökningsaktivitet.
Relaterat innehåll
En lista över de datalager som stöds som källor och mottagare av kopieringsaktiviteten finns i Datalager som stöds.