Copia de datos de una tabla de SAP mediante Azure Data Factory o Azure Synapse Analytics
SE APLICA A: Azure Data Factory Azure Synapse Analytics
Sugerencia
Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. Obtenga más información sobre cómo iniciar una nueva evaluación gratuita.
En este artículo se resume el uso de la actividad de copia en canalizaciones de Azure Data Factory y Azure Synapse Analytics para copiar datos con una tabla de SAP como origen y destino. Para obtener más información, consulte la información general sobre la actividad de copia.
Sugerencia
Para obtener información sobre la compatibilidad general con el escenario de integración de datos de SAP, consulte el informe técnico sobre la integración de datos de SAP mediante Azure Data Factory que contiene una introducción detallada con comparaciones y una guía sobre cada conector de SAP.
Funcionalidades admitidas
Este conector de tabla de SAP es compatible con las funcionalidades siguientes:
Funcionalidades admitidas | IR |
---|---|
Actividad de copia (origen/-) | 6 |
Actividad de búsqueda | 6 |
① Azure Integration Runtime ② Entorno de ejecución de integración autohospedado
Consulte la tabla de almacenes de datos compatibles para ver una lista de almacenes de datos que la actividad de copia admite como orígenes o receptores.
En concreto, este conector para tablas de SAP admite las siguientes funcionalidades:
Copiar datos de una tabla de SAP en:
- Componente central de SAP ERP (SAP ECC) versión 7.01 o posterior (en una pila reciente de paquetes de soporte técnico de SAP lanzados después de 2015).
- SAP Business Warehouse (SAP BW), versión 7.01 o posterior, (en una pila de paquetes de soporte técnico de SAP reciente lanzada después de 2015).
- SAP S/4HANA.
- Otros productos en SAP Business Suite, versión 7.01 o posterior, (en una pila de paquetes de soporte técnico de SAP reciente lanzada después de 2015).
Copiar datos de una tabla transparente de SAP, una tabla agrupada, una tabla en clúster y una vista.
Copiar datos mediante la autenticación básica o las comunicaciones de red segura (SNC), si es que tiene SNC configuradas.
Conexión a un servidor de aplicaciones SAP o a un servidor de mensajes SAP.
Recuperación de datos a través de RFC personalizado o predeterminado.
La versión 7.01 o posterior hace referencia a la versión de SAP NetWeaver en lugar de a la versión de SAP ECC. Por ejemplo, SAP ECC 6.0 EHP 7 en general tiene una versión de NetWeaver>= 7.4. En caso de que no esté seguro de su entorno, estos son los pasos para confirmar la versión del sistema de SAP:
- Use la GUI de SAP para conectarse al sistema de SAP.
- Vaya a Sistema ->Estado.
- Compruebe la versión de SAP_BASIS, asegúrese de que sea mayor o igual que 701.
Requisitos previos
Para usar este conector de tabla de SAP, necesitará lo siguiente:
Configure un entorno de ejecución de integración autohospedado (versión 3.17 o posterior). Para obtener más información, consulte Creación y configuración de un entorno de ejecución de integración autohospedado.
Descargue el conector de SAP de 64 bits para Microsoft.NET 3.0 del sitio web de SAP e instálelo en la máquina del entorno de ejecución de integración autohospedado. Al instalarlo, asegúrese de seleccionar la opción Install Assemblies to GAC (Instalar ensamblados en GAC) en la ventana Optional setup steps (Pasos de configuración opcionales).
El usuario de SAP que se está usando en el conector de SAP Table debe tener los siguientes permisos:
- Autorización para usar los destinos de llamada de función remota (RFC).
- Permisos para la actividad “Execute” del objeto de autorización S_SDSAUTH. Puede consultar la nota de SAP 460089 sobre la mayoría de los objetos de autorización. Algunos RFC son necesarios para el conector de NCo subyacente, por ejemplo RFC_FUNCTION_SEARCH.
Introducción
Para realizar la actividad de copia con una canalización, puede usar una de los siguientes herramientas o SDK:
- La herramienta Copiar datos
- Azure Portal
- El SDK de .NET
- El SDK de Python
- Azure PowerShell
- API REST
- La plantilla de Azure Resource Manager
Creación de un servicio vinculado a una tabla de SAP mediante la interfaz de usuario
Siga estos pasos para crear un servicio vinculado a una tabla de SAP en la interfaz de usuario de Azure Portal.
Vaya a la pestaña Administrar del área de trabajo de Azure Data Factory o Synapse y seleccione Servicios vinculados; luego haga clic en Nuevo:
Busque SAP y seleccione el conector de SAP Table.
Configure los detalles del servicio, pruebe la conexión y cree el nuevo servicio vinculado.
Detalles de configuración del conector
En las secciones siguientes se proporcionan detalles sobre las propiedades que se usan para definir las entidades específicas del conector de SAP Table.
Propiedades del servicio vinculado
Las siguientes propiedades son compatibles con el servicio vinculado del centro de SAP BW abierto:
Propiedad | Descripción | Obligatorio |
---|---|---|
type |
La propiedad type debe establecerse en SapTable . |
Sí |
server |
El nombre del servidor en el que se encuentra la instancia de SAP. Úselo para conectarse a un servidor de aplicaciones de SAP. |
No |
systemNumber |
Número del sistema de SAP. Úselo para conectarse a un servidor de aplicaciones de SAP. El valor permitido es: un número decimal de dos dígitos que se representa en forma de cadena. |
No |
messageServer |
El nombre de host del servidor de mensajes de SAP. Úselo para conectarse a un servidor de mensajes de SAP. |
No |
messageServerService |
El nombre del servicio o el número de puerto del servidor de mensajes. Úselo para conectarse a un servidor de mensajes de SAP. |
No |
systemId |
El id. del sistema SAP en el que se encuentra la tabla. Úselo para conectarse a un servidor de mensajes de SAP. |
No |
logonGroup |
El grupo de inicio de sesión para el sistema SAP. Úselo para conectarse a un servidor de mensajes de SAP. |
No |
clientId |
El id. del cliente en el sistema SAP. El valor permitido es: un número decimal de tres dígitos que se representa en forma de cadena. |
Sí |
language |
El idioma que usa el sistema SAP. El valor predeterminado es EN . |
No |
userName |
El nombre del usuario que tiene acceso al servidor SAP. | Sí |
password |
Contraseña del usuario. Marque este campo con el tipo SecureString para almacenarlo de forma segura o para hacer referencia a un secreto almacenado en Azure Key Vault. |
Sí |
sncMode |
El indicador de activación de SNC para acceder al servidor SAP en que se encuentra la tabla. Aplicable si quiere usar SNC para conectarse al servidor SAP. Los valores permitidos son 0 (OFF es el valor predeterminado) o 1 (ON). |
No |
sncMyName |
El nombre SNC del iniciador para acceder al servidor de SAP en que se encuentra la tabla. Se aplica cuando sncMode está activado. |
No |
sncPartnerName |
El nombre SNC del asociado de comunicación para obtener acceso al servidor SAP en el que se encuentra la tabla. Se aplica cuando sncMode está activado. |
No |
sncLibraryPath |
La biblioteca del producto de seguridad externo para acceder al servidor SAP donde se encuentra la tabla. Se aplica cuando sncMode está activado. |
No |
sncQop |
El nivel de calidad de protección de SNC a aplicar. Se aplica sncMode cuando está activado. Los valores permitidos son 1 (Autenticación), 2 (Integridad), 3 (Privacidad), 8 (valor predeterminado), 9 (Máximo). |
No |
connectVia |
El entorno de ejecución de integración que se usará para conectarse al almacén de datos. Tal y como se mencionó en los requisitos previos, se requiere un entorno de ejecución de integración autohospedado. | Sí |
Ejemplo 1: conectarse a un servidor de aplicaciones de 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"
}
}
}
Ejemplo 2: conectarse a un servidor de mensajes de 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"
}
}
}
Ejemplo 3: conexión mediante 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"
}
}
}
Propiedades del conjunto de datos
Para obtener una lista completa de las secciones y propiedades para definir conjuntos de datos, consulte Conjuntos de datos. En la sección siguiente se proporciona una lista de las propiedades que admite el conjunto de datos de la tabla de SAP.
Para copiar datos desde y hacia el servicio vinculado del centro de SAP BW abierto, se admiten las siguientes propiedades:
Propiedad | Descripción | Obligatorio |
---|---|---|
type |
La propiedad type debe establecerse en SapTableResource . |
Sí |
tableName |
El nombre de la tabla de SAP desde la que se copian los datos. | Sí |
Ejemplo
{
"name": "SAPTableDataset",
"properties": {
"type": "SapTableResource",
"typeProperties": {
"tableName": "<SAP table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP table linked service name>",
"type": "LinkedServiceReference"
}
}
}
Propiedades de la actividad de copia
Para obtener una lista completa de las secciones y propiedades para definir actividades, consulte Canalizaciones. En la sección siguiente se proporciona una lista de las propiedades que admite el origen de tabla de SAP.
Tabla de SAP como origen
Para copiar datos de una tabla de SAP, se admiten las siguientes propiedades:
Propiedad | Descripción | Obligatorio |
---|---|---|
type |
La propiedad type debe establecerse en SapTableSource . |
Sí |
rowCount |
El número de filas que se van a recuperar. | No |
rfcTableFields |
Los campos (columnas) que se copiarán de la tabla de SAP. Por ejemplo, column0, column1 . |
No |
rfcTableOptions |
Las opciones para filtrar las filas de la tabla de SAP. Por ejemplo, COLUMN0 EQ 'SOMEVALUE' . Consulte también la tabla del operador de consultas de SAP que encontrará en este artículo. |
No |
customRfcReadTableFunctionModule |
Un módulo de función RFC personalizado que puede usarse para leer datos de la tabla de SAP. Puede usar el módulo de función RFC personalizado para definir cómo se recuperan los datos del sistema SAP y cómo se devuelven al servicio. El módulo de función personalizado debe tener una interfaz implementada (importación, exportación, tablas) que sea similar a /SAPDS/RFC_READ_TABLE2 , que es la interfaz predeterminada que usa el servicio. |
No |
partitionOption |
El mecanismo de partición para leer desde una tabla de SAP. Las opciones admitidas incluyen:
|
No |
partitionColumnName |
El nombre de la columna que se usa para particionar los datos. | No |
partitionUpperBound |
El valor máximo de la columna especificada en partitionColumnName que se usará para continuar con la partición. |
No |
partitionLowerBound |
El valor mínimo de la columna especificada en partitionColumnName que se usará para continuar con la partición. (Nota: partitionLowerBound no puede ser "0" si la opción de partición es PartitionOnInt ). |
No |
maxPartitionsNumber |
Número máximo de particiones para dividir los datos. El valor predeterminado es 1. | No |
sapDataColumnDelimiter |
El único carácter que se usa como delimitador que se pasa al RFC de SAP para dividir los datos de salida. | No |
Sugerencia
Si su tabla de SAP tiene un gran volumen de datos, como varios miles de millones de filas, use partitionOption
y partitionSetting
para dividir los datos en particiones más pequeñas. En este caso, los datos se leen por partición, y cada partición de datos se recupera de su servidor SAP a través de una sola llamada a RFC.
Tomando partitionOption
como partitionOnInt
a modo de ejemplo, el número de filas de cada partición se calcula con esta fórmula: (filas totales entre partitionUpperBound
y partitionLowerBound
)/maxPartitionsNumber
.
Para cargar particiones de datos en paralelo para acelerar la copia, el grado paralelo se controla mediante el valor parallelCopies
de la actividad de copia. Por ejemplo, si establece parallelCopies
en cuatro, el servicio genera y ejecuta al mismo tiempo cuatro consultas de acuerdo con la configuración y la opción de partición que ha especificado, y cada consulta recupera una porción de datos de la tabla de SAP. Se recomienda encarecidamente hacer que maxPartitionsNumber
sea un múltiplo del valor de la propiedad parallelCopies
. Cuando se copian datos en un almacén de datos basado en archivos, también se recomienda escribir en una carpeta como varios archivos (solo especifique el nombre de la carpeta), en cuyo caso el rendimiento es mejor que escribir en un único archivo.
Sugerencia
BASXML
está habilitado de forma predeterminada para este conector de SAP Table en el lado del servicio.
En rfcTableOptions
, puede usar los siguientes operadores de consulta SAP comunes para filtrar las filas:
Operator | Descripción |
---|---|
EQ |
Igual a |
NE |
No es igual a |
LT |
Menor que |
LE |
Menor o igual que |
GT |
Mayor que |
GE |
Mayor o igual que |
IN |
Como en TABCLASS IN ('TRANSP', 'INTTAB') |
LIKE |
Como en LIKE 'Emma%' |
Ejemplo
"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
}
}
]
Combinación de tablas de SAP
Actualmente, el conector de SAP Table solo admite una tabla con el módulo de función predeterminado. Para obtener los datos combinados de varias tablas, puede aprovechar la propiedad customRfcReadTableFunctionModule en el conector de SAP Table después de los pasos siguientes:
- Escriba un módulo de función personalizado, que puede tomar una consulta como OPTIONS y aplicar su propia lógica para recuperar los datos.
- En "Módulo de función personalizado", escriba el nombre del módulo de función personalizado.
- En "Opciones de tabla RFC", especifique la instrucción de combinación de tablas que se va a incluir en el módulo de función como OPTIONS, como "
<TABLE1>
INNER JOIN<TABLE2>
ON COLUMN0".
Aquí tiene un ejemplo:
Sugerencia
También puede considerar la posibilidad de que los datos combinados se agreguen en la VISTA, que es compatible con el conector de SAP Table. También puede intentar extraer tablas relacionadas para incorporarlas a Azure (por ejemplo, Azure Storage o Azure SQL Database) y, después, usar Data Flow para continuar con la combinación o el filtro.
Creación de un módulo de función personalizado
En el caso de SAP Table, actualmente se admite la propiedad customRfcReadTableFunctionModule en el origen de la copia, lo que le permite aprovechar su propia lógica y procesar los datos.
A modo de guía rápida, estos son algunos requisitos para empezar a trabajar con el "módulo de función personalizado":
Definición:
Exporte los datos a una de las tablas siguientes:
A continuación se ilustra cómo funciona el conector de SAP Table con el módulo de función personalizado:
Cree una conexión con un servidor SAP a través de SAP NCO.
Invoque "Módulo de función personalizado" con los parámetros establecidos como se indica a continuación:
- QUERY_TABLE: el nombre de la tabla que se establece en el conjunto de datos de SAP Table;
- Delimitador: el delimitador que se establece en el origen de SAP Table;
- ROWCOUNT/Opción/Campos: el recuento de filas/la opción agregada/los campos establecidos en el origen de Table.
Obtenga el resultado y analice los datos como se indica a continuación:
Analice el valor de la tabla Fields para obtener los esquemas.
Obtenga los valores de la tabla de salida para ver qué tabla contiene estos valores.
Obtenga los valores de OUT_TABLE, analice los datos y escríbalos en el receptor.
Asignaciones de tipos de datos para una tabla de SAP
Al copiar datos desde una tabla de SAP, se usan las siguientes asignaciones de tipos de datos de SAP Table en los tipos de datos provisionales del servicio. Consulte el artículo sobre asignaciones de tipos de datos y esquema para más información sobre cómo la actividad de copia asigna el tipo de datos y el esquema de origen al receptor.
Tipo ABAP para SAP | Tipo de datos provisional del servicio |
---|---|
C (cadena) |
String |
I (entero) |
Int32 |
F (float) |
Double |
D (fecha) |
String |
T (hora) |
String |
P (BCD empaquetado, moneda, decimal, cantidad) |
Decimal |
N (numérico) |
String |
X (binario y sin procesar) |
String |
Propiedades de la actividad de búsqueda
Para obtener información detallada sobre las propiedades, consulte Actividad de búsqueda.
Contenido relacionado
Para obtener una lista de almacenes de datos que la actividad de copia admite como orígenes y receptores, vea Almacenes de datos que se admiten.