Gegevens uit een SAP-tabel kopiëren met behulp van Azure Data Factory of Azure Synapse Analytics
VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics
Tip
Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .
In dit artikel wordt beschreven hoe u de kopieeractiviteit in Azure Data Factory- en Azure Synapse Analytics-pijplijnen gebruikt om gegevens uit een SAP-tabel te kopiëren. Zie Copy-activiteit overzicht voor meer informatie.
Tip
Zie sap-gegevensintegratie met behulp van een technisch document over Azure Data Factory voor meer informatie over de algemene ondersteuning voor SAP-gegevensintegratiescenario's, met gedetailleerde inleiding over elke SAP-connector, vergelijking en richtlijnen.
Ondersteunde mogelijkheden
Deze SAP-tabelconnector wordt ondersteund voor de volgende mogelijkheden:
Ondersteunde mogelijkheden | IR |
---|---|
Copy-activiteit (bron/-) | (2) |
Activiteit Lookup | (2) |
(1) Azure Integration Runtime (2) Zelf-hostende Integration Runtime
Zie de tabel Ondersteunde gegevensarchieven voor een lijst met gegevensarchieven die worden ondersteund als bronnen of sinks door de kopieeractiviteit.
Deze SAP-tabelconnector ondersteunt met name:
Gegevens uit een SAP-tabel kopiëren in:
- SAP ERP Central Component (SAP ECC) versie 7.01 of hoger (in een recente SAP Support Package Stack uitgebracht na 2015).
- SAP Business Warehouse (SAP BW) versie 7.01 of hoger (in een recente SAP-ondersteuningspakketstack uitgebracht na 2015).
- SAP S/4HANA.
- Andere producten in SAP Business Suite versie 7.01 of hoger (in een recente SAP-ondersteuningspakketstack uitgebracht na 2015).
Gegevens kopiëren uit een transparante SAP-tabel, een gegroepeerde tabel, een gegroepeerde tabel en een weergave.
Gegevens kopiëren met behulp van basisverificatie of SNC (Secure Network Communications), als SNC is geconfigureerd.
Verbinding maken met een SAP-toepassingsserver of SAP-berichtserver.
Gegevens ophalen via standaard of aangepaste RFC.
Versie 7.01 of hoger verwijst naar sap NetWeaver-versie in plaats van sap ECC-versie. SAP ECC 6.0 EHP 7 in het algemeen heeft bijvoorbeeld NetWeaver versie >=7.4. Als u niet zeker weet wat uw omgeving is, volgt u de stappen om de versie van uw SAP-systeem te bevestigen:
- Gebruik de SAP-GUI om verbinding te maken met het SAP-systeem.
- Ga naar System ->Status.
- Controleer de release van de SAP_BASIS, zorg ervoor dat deze gelijk is aan of groter is dan 701.
Vereisten
Als u deze SAP-tabelconnector wilt gebruiken, moet u het volgende doen:
Een zelf-hostende Integration Runtime instellen (versie 3.17 of hoger). Zie Een zelf-hostende Integration Runtime maken en configureren voor meer informatie.
Download de 64-bits SAP-connector voor Microsoft .NET 3.0 van de website van SAP en installeer deze op de zelf-hostende Integration Runtime-machine. Zorg ervoor dat u tijdens de installatie de optie Assembly's installeren naar GAC selecteert in het venster Optionele installatiestappen .
De SAP-gebruiker die wordt gebruikt in de SAP-tabelconnector, moet de volgende machtigingen hebben:
- Autorisatie voor het gebruik van RFC-bestemmingen (Remote Function Call).
- Machtigingen voor de uitvoeractiviteit van het S_SDSAUTH-autorisatieobject. U kunt verwijzen naar SAP-notitie 460089 over de meeste autorisatieobjecten. Bepaalde RFC's zijn vereist voor de onderliggende NCo-connector, bijvoorbeeld RFC_FUNCTION_SEARCH.
Aan de slag
Als u de kopieeractiviteit wilt uitvoeren met een pijplijn, kunt u een van de volgende hulpprogramma's of SDK's gebruiken:
- Het hulpprogramma voor het kopiëren van gegevens
- Azure Portal
- De .NET-SDK
- De Python-SDK
- Azure PowerShell
- De REST API
- Een Azure Resource Manager-sjabloon
Een gekoppelde service maken voor een SAP-tabel met behulp van de gebruikersinterface
Gebruik de volgende stappen om een gekoppelde service te maken voor een SAP-tabel in de gebruikersinterface van Azure Portal.
Blader naar het tabblad Beheren in uw Azure Data Factory- of Synapse-werkruimte en selecteer Gekoppelde services en klik vervolgens op Nieuw:
Zoek naar SAP en selecteer de SAP-tabelconnector.
Configureer de servicedetails, test de verbinding en maak de nieuwe gekoppelde service.
Configuratiedetails van connector
De volgende secties bevatten details over eigenschappen die worden gebruikt om de entiteiten te definiëren die specifiek zijn voor de SAP-tabelconnector.
Eigenschappen van gekoppelde service
De volgende eigenschappen worden ondersteund voor de gekoppelde SAP BW Open Hub-service:
Eigenschappen | Beschrijving | Vereist |
---|---|---|
type |
De type eigenschap moet worden ingesteld op SapTable . |
Ja |
server |
De naam van de server waarop het SAP-exemplaar zich bevindt. Gebruik dit om verbinding te maken met een SAP-toepassingsserver. |
Nee |
systemNumber |
Het systeemnummer van het SAP-systeem. Gebruik dit om verbinding te maken met een SAP-toepassingsserver. Toegestane waarde: Een decimaal getal van twee cijfers dat wordt weergegeven als een tekenreeks. |
Nee |
messageServer |
De hostnaam van de SAP-berichtserver. Gebruik dit om verbinding te maken met een SAP-berichtserver. |
Nee |
messageServerService |
De servicenaam of het poortnummer van de berichtserver. Gebruik dit om verbinding te maken met een SAP-berichtserver. |
Nee |
systemId |
De id van het SAP-systeem waar de tabel zich bevindt. Gebruik dit om verbinding te maken met een SAP-berichtserver. |
Nee |
logonGroup |
De aanmeldingsgroep voor het SAP-systeem. Gebruik dit om verbinding te maken met een SAP-berichtserver. |
Nee |
clientId |
De id van de client in het SAP-systeem. Toegestane waarde: Een decimaal getal van drie cijfers dat wordt weergegeven als een tekenreeks. |
Ja |
language |
De taal die het SAP-systeem gebruikt. De standaardwaarde is EN . |
Nee |
userName |
De naam van de gebruiker die toegang heeft tot de SAP-server. | Ja |
password |
Het wachtwoord voor de gebruiker. Markeer dit veld met het SecureString type om het veilig op te slaan of verwijs naar een geheim dat is opgeslagen in Azure Key Vault. |
Ja |
sncMode |
De SNC-activeringsindicator voor toegang tot de SAP-server waar de tabel zich bevindt. Gebruik deze optie als u SNC wilt gebruiken om verbinding te maken met de SAP-server. Toegestane waarden zijn 0 (uit, de standaardinstelling) of 1 (aan). |
Nee |
sncMyName |
De SNC-naam van de initiator voor toegang tot de SAP-server waar de tabel zich bevindt. Is van toepassing wanneer sncMode deze is ingeschakeld. |
Nee |
sncPartnerName |
De SNC-naam van de communicatiepartner voor toegang tot de SAP-server waar de tabel zich bevindt. Is van toepassing wanneer sncMode deze is ingeschakeld. |
Nee |
sncLibraryPath |
De bibliotheek van het externe beveiligingsproduct voor toegang tot de SAP-server waar de tabel zich bevindt. Is van toepassing wanneer sncMode deze is ingeschakeld. |
Nee |
sncQop |
Het SNC Quality of Protection-niveau dat moet worden toegepast. Is van toepassing wanneer sncMode is ingeschakeld. Toegestane waarden zijn 1 (verificatie), 2 (integriteit), 3 (privacy), 8 (standaard), 9 (maximum). |
Nee |
connectVia |
De Integration Runtime die moet worden gebruikt om verbinding te maken met het gegevensarchief. Een zelf-hostende Integration Runtime is vereist, zoals eerder vermeld in Vereisten. | Ja |
Voorbeeld 1: Verbinding maken met een SAP-toepassingsserver
{
"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"
}
}
}
Voorbeeld 2: Verbinding maken met een SAP-berichtserver
{
"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"
}
}
}
Voorbeeld 3: Verbinding maken met behulp van 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"
}
}
}
Eigenschappen van gegevensset
Zie Gegevenssets voor een volledige lijst met secties en eigenschappen voor het definiëren van gegevenssets. De volgende sectie bevat een lijst met de eigenschappen die worden ondersteund door de SAP-tabelgegevensset.
Als u gegevens wilt kopiëren van en naar de gekoppelde SAP BW Open Hub-service, worden de volgende eigenschappen ondersteund:
Eigenschappen | Beschrijving | Vereist |
---|---|---|
type |
De type eigenschap moet worden ingesteld op SapTableResource . |
Ja |
tableName |
De naam van de SAP-tabel waaruit u gegevens wilt kopiëren. | Ja |
Opmerking
{
"name": "SAPTableDataset",
"properties": {
"type": "SapTableResource",
"typeProperties": {
"tableName": "<SAP table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP table linked service name>",
"type": "LinkedServiceReference"
}
}
}
Eigenschappen van de kopieeractiviteit
Zie Pijplijnen voor een volledige lijst met secties en eigenschappen voor het definiëren van activiteiten. De volgende sectie bevat een lijst met de eigenschappen die worden ondersteund door de BRON van de SAP-tabel.
SAP-tabel als bron
Als u gegevens uit een SAP-tabel wilt kopiëren, worden de volgende eigenschappen ondersteund:
Eigenschappen | Beschrijving | Vereist |
---|---|---|
type |
De type eigenschap moet worden ingesteld op SapTableSource . |
Ja |
rowCount |
Het aantal rijen dat moet worden opgehaald. | Nee |
rfcTableFields |
De velden (kolommen) die u uit de SAP-tabel wilt kopiëren. Bijvoorbeeld: column0, column1 . |
Nee |
rfcTableOptions |
De opties voor het filteren van de rijen in een SAP-tabel. Bijvoorbeeld: COLUMN0 EQ 'SOMEVALUE' . Zie ook de tabel sap-queryoperator verderop in dit artikel. |
Nee |
customRfcReadTableFunctionModule |
Een aangepaste RFC-functiemodule die kan worden gebruikt om gegevens uit een SAP-tabel te lezen. U kunt een aangepaste RFC-functiemodule gebruiken om te definiëren hoe de gegevens worden opgehaald uit uw SAP-systeem en worden geretourneerd naar de service. De aangepaste functiemodule moet een interface hebben geïmplementeerd (importeren, exporteren, tabellen) die vergelijkbaar is met /SAPDS/RFC_READ_TABLE2 , wat de standaardinterface is die door de service wordt gebruikt. |
Nee |
partitionOption |
Het partitiemechanisme dat moet worden gelezen uit een SAP-tabel. De ondersteunde opties zijn onder andere:
|
Nee |
partitionColumnName |
De naam van de kolom die wordt gebruikt om de gegevens te partitioneren. | Nee |
partitionUpperBound |
De maximumwaarde van de kolom die in partitionColumnName die kolom is opgegeven, wordt gebruikt om door te gaan met partitioneren. |
Nee |
partitionLowerBound |
De minimumwaarde van de kolom die in partitionColumnName die kolom wordt opgegeven, wordt gebruikt om door te gaan met partitioneren. (Opmerking: partitionLowerBound kan niet '0' zijn als partitieoptie is PartitionOnInt ) |
Nee |
maxPartitionsNumber |
Het maximum aantal partities om de gegevens in te splitsen. De standaardwaarde is 1. | Nee |
sapDataColumnDelimiter |
Het enkele teken dat wordt gebruikt als scheidingsteken dat wordt doorgegeven aan SAP RFC om de uitvoergegevens te splitsen. | Nee |
Tip
Als uw SAP-tabel een grote hoeveelheid gegevens bevat, zoals enkele miljarden rijen, gebruikt partitionOption
u deze en partitionSetting
splitst u de gegevens op in kleinere partities. In dit geval worden de gegevens per partitie gelezen en wordt elke gegevenspartitie opgehaald van uw SAP-server via één RFC-aanroep.
Als partitionOption
voorbeeld wordt het aantal rijen in elke partitie berekend met deze formule: (totaalrijen tussen partitionUpperBound
en partitionLowerBound
)/maxPartitionsNumber
.partitionOnInt
Als u gegevenspartities parallel wilt laden om het kopiëren te versnellen, wordt de parallelle graad bepaald door de parallelCopies
instelling voor de kopieeractiviteit. Als u bijvoorbeeld instelt op parallelCopies
vier, genereert de service gelijktijdig vier query's en voert deze uit op basis van de opgegeven partitieoptie en -instellingen en haalt elke query een deel van de gegevens op uit uw SAP-tabel. We raden u ten zeerste aan om een veelvoud van de waarde van de parallelCopies
eigenschap te makenmaxPartitionsNumber
. Wanneer u gegevens kopieert naar een bestandsgegevensarchief, wordt u ook gevraagd om naar een map te schrijven als meerdere bestanden (alleen mapnaam opgeven), in welk geval de prestaties beter zijn dan schrijven naar één bestand.
Tip
De BASXML
functie is standaard ingeschakeld voor deze SAP Table-connector binnen de service.
In rfcTableOptions
kunt u de volgende algemene SAP-queryoperators gebruiken om de rijen te filteren:
Operator | Beschrijving |
---|---|
EQ |
Gelijk aan |
NE |
Niet gelijk aan |
LT |
Kleiner dan |
LE |
Kleiner dan of gelijk aan |
GT |
Groter dan |
GE |
Groter dan of gelijk aan |
IN |
Zoals in TABCLASS IN ('TRANSP', 'INTTAB') |
LIKE |
Zoals in LIKE 'Emma%' |
Opmerking
"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
}
}
]
SAP-tabellen samenvoegen
Momenteel ondersteunt sap-tabelconnector slechts één tabel met de standaardfunctiemodule. Als u de samengevoegde gegevens van meerdere tabellen wilt ophalen, kunt u gebruikmaken van de eigenschap customRfcReadTableFunctionModule in de SAP Table-connector door de onderstaande stappen te volgen:
- Schrijf een aangepaste functiemodule, die een query als OPTIONS kan uitvoeren en uw eigen logica kan toepassen om de gegevens op te halen.
- Voer voor de aangepaste functiemodule de naam van uw aangepaste functiemodule in.
- Geef voor de 'RFC-tabelopties' de tabeldeelnameinstructie op die moet worden ingevoerd in uw functiemodule als OPTIONS, zoals INNER
<TABLE1>
JOIN<TABLE2>
ON COLUMN0.
Hieronder ziet u een voorbeeld:
Tip
U kunt ook overwegen om de samengevoegde gegevens samen te voegen in de VIEW, die wordt ondersteund door de SAP Table-connector. U kunt ook gerelateerde tabellen extraheren om onboarding naar Azure te krijgen (bijvoorbeeld Azure Storage, Azure SQL Database) en vervolgens Gegevensstroom gebruiken om verder te gaan met samenvoegen of filteren.
Aangepaste functiemodule maken
Voor SAP-tabel ondersteunen we momenteel de eigenschap customRfcReadTableFunctionModule in de kopieerbron, waarmee u uw eigen logica en procesgegevens kunt gebruiken.
Hier volgen enkele vereisten om aan de slag te gaan met de 'Aangepaste functiemodule':
Definition:
Gegevens exporteren naar een van de onderstaande tabellen:
Hieronder ziet u een afbeelding van de werking van de SAP-tabelconnector met een aangepaste functiemodule:
Verbinding maken met SAP-server via SAP NCO.
Roep 'Aangepaste functiemodule' aan met de parameters die zijn ingesteld als hieronder:
- QUERY_TABLE: de tabelnaam die u hebt ingesteld in de SAP-tabelgegevensset;
- Scheidingsteken: het scheidingsteken dat u instelt in de SAP-tabelbron;
- ROWCOUNT/Option/Fields: de rowcount/aggregated Option/Fields die u hebt ingesteld in de tabelbron.
Haal het resultaat op en parseert de gegevens op onderstaande manieren:
Parseert de waarde in de tabel Velden om de schema's op te halen.
Haal de waarden van de uitvoertabel op om te zien welke tabel deze waarden bevat.
Haal de waarden op in de OUT_TABLE, parseert de gegevens en schrijf deze vervolgens naar de sink.
Toewijzingen van gegevenstypen voor een SAP-tabel
Wanneer u gegevens kopieert uit een SAP-tabel, worden de volgende toewijzingen uit de SAP-tabelgegevenstypen gebruikt voor tussentijdse gegevenstypen die in de service worden gebruikt. Zie Schema- en gegevenstypetoewijzingen voor meer informatie over hoe de kopieeractiviteit het bronschema en het gegevenstype toewijst aan de sink.
SAP ABAP-type | Tussentijdse servicegegevenstype |
---|---|
C (Tekenreeks) |
String |
I (Geheel getal) |
Int32 |
F (Float) |
Double |
D (Datum) |
String |
T (Tijd) |
String |
P (BCD packed, currency, decimal, qty) |
Decimal |
N (Numeriek) |
String |
X (Binair en onbewerkt) |
String |
Eigenschappen van opzoekactiviteit
Als u meer wilt weten over de eigenschappen, controleert u de lookup-activiteit.
Gerelateerde inhoud
Zie Ondersteunde gegevensarchieven voor een lijst met gegevensarchieven die worden ondersteund als bronnen en sinks door de kopieeractiviteit.