Compartir a través de


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) 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 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 paralela 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:

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.

  1. 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:

  2. Busque SAP y seleccione el conector de SAP HANA.

    Screenshot of the SAP HANA connector.

  3. Configure los detalles del servicio, pruebe la conexión y cree el nuevo servicio vinculado.

    Screenshot of linked service configuration for SAP HANA.

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

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
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
Query Especifica la consulta SQL para leer datos de la instancia de SAP HANA.
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.

Screenshot of partition options

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.

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.