Copia de datos de SAP HANA con Azure Data Factory o 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 Synapse Analytics para copiar datos de una base de datos SAP HANA. El documento se basa en el artículo de introducción a la actividad de copia que describe información general de la actividad de copia.
Sugerencia
Para 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 que contiene una introducción detallada con comparaciones y una guía sobre cada conector de SAP.
Funcionalidades admitidas
Este conector SAP HANA es compatible con las siguientes funcionalidades:
Funcionalidades admitidas | IR |
---|---|
Actividad de copia (origen/receptor) | ② |
Actividad de búsqueda | ② |
① 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 SAP HANA admite las siguientes funcionalidades:
- Copiar datos de cualquier versión de la base de datos SAP HANA.
- Copiar de datos de modelos de información de HANA (como las vistas de análisis y cálculo) y las tablas de fila o columna.
- La copia de datos con autenticación básica o de Windows.
- Copia en paralelo desde un origen de SAP HANA. Consulte la sección Copia paralela desde SAP HANA para más información.
Sugerencia
Para copiar datos en un almacén de datos SAP HANA, use un conector ODBC genérico. Consulte la sección sobre el receptor de SAP HANA con detalles. Tenga en cuenta que los servicios vinculados para el conector SAP HANA y el conector ODBC tienen tipos distintos y, por tanto, no se pueden reutilizar.
Prerrequisitos
Para usar este conector SAP HANA, necesitará lo siguiente:
- Configurar un entorno Integration Runtime autohospedado. Consulte el artículo sobre Integration Runtime autohospedado para más información.
- Instale el controlador ODBC de SAP HANA en la máquina de Integration Runtime. Puede descargar el controlador ODBC de SAP HANA desde el centro de descarga de software de SAP. Busque con la palabra clave SAP HANA CLIENT for Windows (Cliente SAP HANA para Windows).
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 en SAP HANA mediante la interfaz de usuario
Siga estos pasos para crear un servicio vinculado en SAP HANA 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 HANA.
Configure los detalles del servicio, pruebe la conexión y cree el nuevo servicio vinculado.
Detalles de configuración del conector
Las secciones siguientes proporcionan detalles sobre las propiedades que se usan para definir entidades de Data Factory específicas del conector SAP HANA.
Propiedades del servicio vinculado
Las siguientes propiedades son compatibles con el servicio vinculado SAP HANA:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en: SapHana | Sí |
connectionString | Especifique la información necesaria para conectarse a SAP HANA mediante la autenticación básica o la autenticación de Windows. Consulte los ejemplos siguientes. En la cadena de conexión, el servidor o el puerto es obligatorio (el puerto predeterminado es 30015), y el nombre de usuario y la contraseña son obligatorios cuando se usa la autenticación básica. Para obtener configuraciones avanzadas adicionales, consulte Propiedades de conexión ODBC de SAP HANA También puede colocar la contraseña en Azure Key Vault y extraer la configuración de contraseña de la cadena de conexión. Consulte el artículo Almacenamiento de credenciales en Azure Key Vault para obtener información detallada. |
Sí |
userName | Especifique el nombre de usuario cuando use la autenticación de Windows. Ejemplo: user@domain.com |
No |
password | Especifique la contraseña para la cuenta de usuario. Marque este campo como SecureString para almacenarlo de forma segura, o bien haga referencia a un secreto almacenado en Azure Key Vault. | No |
connectVia | El entorno Integration Runtime que se usará para conectarse al almacén de datos. Tal y como se mencionó en los requisitos previos, se requiere un entorno Integration Runtime autohospedado. | Sí |
Ejemplo: use la autenticación básica
{
"name": "SapHanaLinkedService",
"properties": {
"type": "SapHana",
"typeProperties": {
"connectionString": "SERVERNODE=<server>:<port (optional)>;UID=<userName>;PWD=<Password>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Ejemplo: use la autenticación de Windows
{
"name": "SapHanaLinkedService",
"properties": {
"type": "SapHana",
"typeProperties": {
"connectionString": "SERVERNODE=<server>:<port (optional)>;",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Si usaba el servicio SAP HANA vinculado a la siguiente carga, todavía se admite tal cual, aunque se aconseja usar la nueva en el futuro.
Ejemplo:
{
"name": "SapHanaLinkedService",
"properties": {
"type": "SapHana",
"typeProperties": {
"server": "<server>:<port (optional)>",
"authenticationType": "Basic",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Propiedades del conjunto de datos
Si desea ver una lista completa de las secciones y propiedades disponibles para definir conjuntos de datos, consulte el artículo sobre conjuntos de datos. En esta sección se proporciona una lista de las propiedades que admite el conjunto de datos de SAP HANA.
Para copiar datos de una tabla de SAP HANA, se admiten las siguientes propiedades:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del conjunto de datos debe establecerse en: SapHanaTable | Sí |
esquema | Nombre del esquema de la base de datos de SAP HANA. | No (si se especifica "query" en el origen de la actividad) |
table | Nombre de la tabla de la base de datos de SAP HANA. | No (si se especifica "query" en el origen de la actividad) |
Ejemplo:
{
"name": "SAPHANADataset",
"properties": {
"type": "SapHanaTable",
"typeProperties": {
"schema": "<schema name>",
"table": "<table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP HANA linked service name>",
"type": "LinkedServiceReference"
}
}
}
Si estaba usando un conjunto de datos de tipo RelationalTable
, todavía se admite tal cual, aunque se aconseja usar el nuevo en el futuro.
Propiedades de la actividad de copia
Si desea ver una lista completa de las secciones y propiedades disponibles para definir actividades, consulte el artículo sobre canalizaciones. En esta sección se proporciona una lista de las propiedades que admite el origen de SAP HANA.
SAP HANA como origen
Sugerencia
Para cargar datos desde SAP HANA de manera eficaz mediante la creación de particiones de datos, puede encontrar más información en Copia paralela desde SAP HANA.
Para copiar datos desde SAP HANA, en la sección source de la actividad de copia se admiten las siguientes propiedades:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del origen de la actividad de copia debe establecerse en: SapHanaSource | Sí |
Query | Especifica la consulta SQL para leer datos de la instancia de SAP HANA. | Sí |
partitionOptions | Especifica los opciones de creación de particiones de datos que se usan para ingerir datos desde SAP HANA. Obtenga más información en la sección Copia paralela desde SAP HANA. Los valores permitidos son: None(valor predeterminado), PhysicalPartitionsOfTable, SapHanaDynamicRange. Obtenga más información en la sección Copia paralela desde SAP HANA. PhysicalPartitionsOfTable solo se puede usar cuando se copian datos de una tabla pero no de una consulta. Cuando se habilita una opción de partición (es decir, el valor no es None ), el grado de paralelismo para cargar datos de manera simultánea desde SAP HANA se controla mediante la opción parallelCopies en la actividad de copia. |
False |
partitionSettings | Especifique el grupo de configuración para la creación de particiones de datos. Se aplica cuando la opción de partición es SapHanaDynamicRange . |
False |
partitionColumnName | Especifique el nombre de la columna de origen que usará la partición para la copia paralela. Si no se especifica, el índice o la clave primaria de la tabla se detectan automáticamente y se usan como columna de partición. Se aplica si la opción de partición es SapHanaDynamicRange . Si usa una consulta para recuperar datos de origen, enlace ?AdfHanaDynamicRangePartitionCondition en la cláusula WHERE. Consulte un ejemplo en la sección Copia paralela desde SAP HANA. |
Sí, cuando se usa la partición SapHanaDynamicRange . |
packetSize | Especifica el tamaño del paquete de red (en kilobytes) para dividir los datos en varios bloques. Si tiene una gran cantidad de datos para copiar, si aumenta el tamaño de los paquetes aumentará a su vez la velocidad de lectura de SAP HANA en la mayoría de los casos. Se recomienda realizar pruebas de rendimiento al ajustar el tamaño de los paquetes. | No. El valor predeterminado es 2048 (2 MB). |
Ejemplo:
"activities":[
{
"name": "CopyFromSAPHANA",
"type": "Copy",
"inputs": [
{
"referenceName": "<SAP HANA input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SapHanaSource",
"query": "<SQL query for SAP HANA>"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Si estaba usando un origen de copia de tipo RelationalSource
, todavía se admite tal cual, aunque se aconseja usar el nuevo en el futuro.
Copia paralela desde SAP HANA
El conector de SAP HANA proporciona la creación de particiones de datos integrada para copiar datos de SAP HANA en paralelo. Puede encontrar las opciones de creación de particiones de datos en la pestaña Origen de la actividad de copia.
Al habilitar la copia con particiones, el servicio ejecuta consultas en paralelo en el origen de SAP HANA para recuperar datos mediante particiones. El grado en 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 SAP HANA.
Es recomendable que habilite la copia en paralelo con la creación de particiones de datos, especialmente si ingiere grandes cantidades de datos de SAP HANA. Estas son algunas configuraciones sugeridas para diferentes escenarios. Cuando se copian datos en un almacén de datos basado en archivos, se recomienda escribirlos en una carpeta como varios archivos (solo especifique el nombre de la carpeta), en cuyo caso el rendimiento es mejor que escribirlos en un único archivo.
Escenario | Configuración sugerida |
---|---|
Carga completa de una tabla grande. | Opción de partición: particiones físicas de la tabla. Durante la ejecución, el servicio detecta automáticamente el tipo de partición física de la tabla de SAP HANA especificada y elige la estrategia de partición correspondiente: - Creación de particiones por rangos: obtenga la columna de partición y los intervalos de partición definidos para la tabla y, luego, copia los datos por intervalo. - Creación de particiones por hash: use la clave de partición hash como columna de partición y, luego, divida y copie los datos en función de los intervalos calculados por el servicio. - Creación de particiones round robin o Sin partición: use la clave principal de partición hash como columna de partición y, luego, divida y copie los datos en función de los intervalos calculados por el servicio. |
Cargue grandes cantidades de datos mediante una consulta personalizada. | Opción de partición: partición por rangos dinámica. Consulta: SELECT * FROM <TABLENAME> WHERE ?AdfHanaDynamicRangePartitionCondition AND <your_additional_where_clause> .Columna de partición: especifique la columna que se usa para aplicar la partición de intervalos dinámicos. Durante la ejecución, el servicio calcula en primer lugar los intervalos de valores de la columna de partición especificada y distribuye uniformemente las filas en un número de depósitos según el número de valores de columna de partición distintos y la configuración de copia paralela. Luego, reemplaza ?AdfHanaDynamicRangePartitionCondition por el filtrado del intervalo de valores de la columna de partición de cada partición y lo envía a SAP HANA.Si quiere usar varias columnas como columna de partición, puede concatenar los valores de cada columna como una columna de la consulta y especificarla como columna de partición, como SELECT * FROM (SELECT *, CONCAT(<KeyColumn1>, <KeyColumn2>) AS PARTITIONCOLUMN FROM <TABLENAME>) WHERE ?AdfHanaDynamicRangePartitionCondition . |
Ejemplo: consulta con particiones físicas de una tabla
"source": {
"type": "SapHanaSource",
"partitionOption": "PhysicalPartitionsOfTable"
}
Ejemplo: consulta con partición por rangos dinámica
"source": {
"type": "SapHanaSource",
"query": "SELECT * FROM <TABLENAME> WHERE ?AdfHanaDynamicRangePartitionCondition AND <your_additional_where_clause>",
"partitionOption": "SapHanaDynamicRange",
"partitionSettings": {
"partitionColumnName": "<Partition_column_name>"
}
}
Asignación de tipos de datos para SAP HANA
Al copiar datos desde SAP HANA, se utilizan las siguientes asignaciones de tipos de datos de SAP HANA a los tipos de datos provisionales usados internamente dentro del servicio. Consulte el artículo sobre asignaciones de tipos de datos y esquema para información sobre cómo la actividad de copia asigna el tipo de datos y el esquema de origen al receptor.
Tipo de datos de SAP HANA | Tipo de datos de servicio provisional |
---|---|
ALPHANUM | String |
bigint | Int64 |
BINARY | Byte[] |
BINTEXT | String |
BLOB | Byte[] |
BOOL | Byte |
CLOB | String |
DATE | DateTime |
DECIMAL | Decimal |
DOUBLE | Double |
FLOAT | Double |
INTEGER | Int32 |
NCLOB | String |
NVARCHAR | String |
real | Single |
SECONDDATE | DateTime |
SHORTTEXT | String |
SMALLDECIMAL | Decimal |
SMALLINT | Int16 |
STGEOMETRYTYPE | Byte[] |
STPOINTTYPE | Byte[] |
TEXT | String |
TIME | TimeSpan |
TINYINT | Byte |
VARCHAR | String |
TIMESTAMP | DateTime |
VARBINARY | Byte[] |
Receptor de SAP HANA
Actualmente, el conector de SAP HANA no se admite como receptor, aunque puede usar el conector ODBC genérico con el controlador de SAP HANA para escribir datos en SAP HANA.
Siga los requisitos previos de configuración de un entorno de ejecución de integración autohospedado e instale primero el controlador ODBC de SAP HANA. Cree un servicio vinculado de ODBC para conectarse al almacén de datos de SAP HANA como se muestra en el ejemplo siguiente. A continuación, cree el conjunto de datos y el receptor de la actividad de copia con el tipo ODBC, según corresponda. Obtenga más información en el artículo conector ODBC.
{
"name": "SAPHANAViaODBCLinkedService",
"properties": {
"type": "Odbc",
"typeProperties": {
"connectionString": "Driver={HDBODBC};servernode=<HANA server>.clouddatahub-int.net:30015",
"authenticationType": "Basic",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
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.