Compartir a través de


Copia de datos de Netezza 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 información sobre cómo iniciar una nueva evaluación gratuita.

En este artículo se describe el uso de la actividad de copia en canalizaciones de Azure Data Factory y Azure Synapse Analytics para copiar datos de Netezza. El artículo se basa en Actividad de copia, en el que se ofrece información general acerca de la actividad de copia.

Sugerencia

Para información sobre el escenario de migración de datos de Netezza a Azure, consulte Migración de datos del servidor local de Netezza a Azure.

Funcionalidades admitidas

Este conector de Netezza se admite para las siguientes características:

Funcionalidades admitidas IR
Actividad de copia (origen/-) ① ②
Actividad de búsqueda ① ②

① Azure Integration Runtime ② Entorno de ejecución de integración autohospedado

Para obtener una lista de almacenes de datos que la actividad de copia admite como orígenes y receptores, consulte Almacenes de datos y formatos que se admiten.

El conector de Netezza admite la copia en paralelo desde el origen. Consulte la sección Copia en paralelo desde Netezza para obtener más detalles.

El servicio proporciona un controlador integrado para permitir la conectividad. No es necesario instalar manualmente uno para usar este conector.

Requisitos previos

Si el almacén de datos se encuentra en una red local, una red virtual de Azure o una nube privada virtual de Amazon, debe configurar un entorno de ejecución de integración autohospedado para conectarse a él.

Si el almacén de datos es un servicio de datos en la nube administrado, puede usar Azure Integration Runtime. Si el acceso está restringido a las direcciones IP que están aprobadas en las reglas de firewall, puede agregar direcciones IP de Azure Integration Runtime a la lista de permitidos.

También puede usar la característica del entorno de ejecución de integración de red virtual administrada de Azure Data Factory para acceder a la red local sin instalar ni configurar un entorno de ejecución de integración autohospedado.

Consulte Estrategias de acceso a datos para más información sobre los mecanismos de seguridad de red y las opciones que admite Data Factory.

Introducción

Puede crear una canalización que use una actividad de copia mediante el SDK de .NET, el SDK de Python, Azure PowerShell, la API de REST o una plantilla de Azure Resource Manager. Vea el tutorial de la actividad de copia para obtener instrucciones paso a paso para crear una canalización con una actividad de copia.

Creación de un servicio vinculado en Netezza mediante la interfaz de usuario

Siga estos pasos para crear un servicio vinculado en Netezza 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 Netezza y seleccione el conector de Netezza.

    Captura de pantalla del conector de Netezza.

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

    Captura de pantalla de la configuración del servicio vinculado en Netezza.

Detalles de configuración del conector

En las siguientes secciones se proporcionan detalles sobre las propiedades que puede usar para definir entidades específicas del conector de Netezza.

Propiedades del servicio vinculado

Las siguientes propiedades son compatibles con el servicio vinculado de Netezza:

Propiedad Descripción Obligatorio
type La propiedad type debe establecerse en Netezza.
connectionString Cadena de conexión de ODBC para conectarse a Netezza.
También puede colocar la contraseña en Azure Key Vault y extraer la configuración de pwd de la cadena de conexión. Consulte los siguientes ejemplos y el artículo Almacenamiento de credenciales en Azure Key Vault con información detallada.
connectVia Instancia de Integration Runtime que se usará para conectarse al almacén de datos. Obtenga más información en la sección Requisitos previos. Si no se especifica, se usa el valor predeterminado de Azure Integration Runtime. No

Una cadena de conexión típica es Server=<server>;Port=<port>;Database=<database>;UID=<user name>;PWD=<password>. En la tabla siguiente se describen más propiedades que puede establecer:

Propiedad Descripción Obligatorio
SecurityLevel Nivel de seguridad que usa el controlador para la conexión con el almacén de datos.
Ejemplo: SecurityLevel=preferredUnSecured. Los valores admitidos son:
- Solo sin protección (onlyUnSecured): el controlador no usa SSL.
- Sin protección preferido (preferredUnSecured) (valor predeterminado) : si el servidor proporciona una opción, el controlador no usa SSL.
No

Ejemplo

{
    "name": "NetezzaLinkedService",
    "properties": {
        "type": "Netezza",
        "typeProperties": {
            "connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<user name>;PWD=<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Ejemplo: Almacenamiento de la contraseña en Azure Key Vault

{
    "name": "NetezzaLinkedService",
    "properties": {
        "type": "Netezza",
        "typeProperties": {
            "connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<user name>;",
            "pwd": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propiedades del conjunto de datos

En esta sección se proporciona una lista de las propiedades que admite el conjunto de datos de Netezza.

Para ver una lista completa de las secciones y propiedades disponibles para definir conjuntos de datos, consulte Conjuntos de datos.

Para copiar datos desde Netezza, establezca la propiedad type del conjunto de datos en NetezzaTable. Se admiten las siguientes propiedades:

Propiedad Descripción Obligatorio
type La propiedad type del conjunto de datos debe establecerse en: NetezzaTable
esquema Nombre del esquema. No (si se especifica "query" en el origen de la actividad)
table Nombre de la tabla. No (si se especifica "query" en el origen de la actividad)
tableName Nombre de la tabla con el esquema. Esta propiedad permite la compatibilidad con versiones anteriores. Use schema y table para la carga de trabajo nueva. No (si se especifica "query" en el origen de la actividad)

Ejemplo

{
    "name": "NetezzaDataset",
    "properties": {
        "type": "NetezzaTable",
        "linkedServiceName": {
            "referenceName": "<Netezza linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {}
    }
}

Propiedades de la actividad de copia

En esta sección se proporciona una lista de las propiedades que admite el origen de Netezza.

Para ver una lista completa de las secciones y propiedades que hay disponibles para definir actividades, consulte Canalizaciones.

Netezza como origen

Sugerencia

Para cargar datos desde Netezza de manera eficaz con la creación de particiones de datos, obtenga más información en la sección Copia en paralelo desde Netezza.

Para copiar datos desde Netezza, establezca el tipo source en la actividad de copia en NetezzaSource. La sección source de la actividad de copia admite las siguientes propiedades:

Propiedad Descripción Obligatorio
type La propiedad type del origen de la actividad de copia debe establecerse en NetezzaSource.
Query Use la consulta SQL personalizada para leer los datos. Ejemplo: "SELECT * FROM MyTable" No (si se especifica "tableName" en el conjunto de datos)
partitionOptions Especifica los opciones de creación de particiones de datos que se usan para cargar datos desde Netezza.
Los valores permitidos son los siguientes: None (valor predeterminado), DataSlice y DynamicRange.
Cuando se habilita una opción de partición (es decir, no None), el grado de paralelismo para cargar simultáneamente datos de una base de datos Netezza se controla mediante la configuración parallelCopies en la actividad de copia.
No
partitionSettings Especifique el grupo de configuración para la creación de particiones de datos.
Se aplica cuando la opción de partición no es None.
No
partitionColumnName Especifique el nombre de la columna de origen in integer type que usará la creación de particiones por rangos para la copia en paralelo. Si no se especifica, se detectará automáticamente la clave principal de la tabla y se usará como columna de partición.
Se aplica si la opción de partición es DynamicRange. Si usa una consulta para recuperar datos de origen, enlace ?AdfRangePartitionColumnName en la cláusula WHERE. Consulte un ejemplo en la sección Copia en paralelo desde Netezza.
No
partitionUpperBound El valor máximo de la columna de partición para copiar datos.
Se aplica cuando la opción de partición es DynamicRange. Si usa la consulta para recuperar datos de origen, enlace ?AdfRangePartitionUpbound en la cláusula WHERE. Consulte la sección Copia en paralelo desde Netezza para ver un ejemplo.
No
partitionLowerBound El valor mínimo de la columna de partición para copiar datos.
Se aplica si la opción de partición es DynamicRange. Si usa una consulta para recuperar datos de origen, enlace ?AdfRangePartitionLowbound en la cláusula WHERE. Consulte la sección Copia en paralelo desde Netezza para ver un ejemplo.
No

Ejemplo:

"activities":[
    {
        "name": "CopyFromNetezza",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Netezza input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "NetezzaSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Copia en paralelo desde Netezza

El conector de Netezza de Data Factory proporciona la creación de particiones de datos integrados para copiar datos de Netezza en paralelo. Puede encontrar las opciones de creación de particiones de datos en la pestaña Origen de la actividad de copia.

Captura de pantalla de las opciones de partición

Al habilitar la copia con particiones, el servicio ejecuta consultas en paralelo en el origen de Netezza para cargar los 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 la base de datos de Netezza.

Se le sugiere que habilite la copia en paralelo con la creación de particiones de datos, especialmente si carga grandes cantidades de datos de la base de datos de Netezza. Estas son algunas configuraciones sugeridas para diferentes escenarios. Cuando se copian datos en un almacén de datos basado en archivos, 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.

Escenario Configuración sugerida
Carga completa de una tabla grande. Opción de partición: Segmento de datos.

Durante la ejecución, el servicio particiona automáticamente los datos en función de los segmentos de datos integrados de Netezza y copia los datos por particiones.
Cargue grandes cantidades de datos mediante una consulta personalizada. Opción de partición: Segmento de datos.
Consulta: SELECT * FROM <TABLENAME> WHERE mod(datasliceid, ?AdfPartitionCount) = ?AdfDataSliceCondition AND <your_additional_where_clause>.
Durante la ejecución, el servicio reemplaza ?AdfPartitionCount (por el número de copia en paralelo establecido en la actividad de copia) y ?AdfDataSliceCondition por la lógica de partición del segmento de datos, y lo envía a Netezza.
Carga de grandes cantidades de datos mediante una consulta personalizada, con una columna de enteros con valor distribuido uniformemente para la creación de particiones por rangos. Opciones de partición: partición por rangos dinámica.
Consulta: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
Columna de partición: especifique la columna usada para crear la partición de datos. Puede crear particiones en la columna con un tipo de datos entero.
Límite de partición superior y límite de partición inferior: especifique si quiere filtrar en la columna de partición para recuperar solo los datos entre el intervalo inferior y el superior.

Durante la ejecución, el servicio reemplaza ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbound y ?AdfRangePartitionLowbound por el nombre real de la columna y los intervalos de valores de cada partición y se los envía a Netezza.
Por ejemplo, si establece la columna de partición "ID" con un límite inferior de 1 y un límite superior de 80, con la copia en paralelo establecida en 4, el servicio recupera los datos de 4 particiones. Los identificadores están comprendidos entre [1, 20], [21, 40], [41, 60] y [61, 80] respectivamente.

Ejemplo: consulta con partición de segmento de datos

"source": {
    "type": "NetezzaSource",
    "query": "SELECT * FROM <TABLENAME> WHERE mod(datasliceid, ?AdfPartitionCount) = ?AdfDataSliceCondition AND <your_additional_where_clause>",
    "partitionOption": "DataSlice"
}

Ejemplo: consulta con partición por rangos dinámica

"source": {
    "type": "NetezzaSource",
    "query": "SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<dynamic_range_partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column>",
        "partitionLowerBound": "<lower_value_of_partition_column>"
    }
}

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, consulte Almacenes de datos y formatos que se admiten.