Data Cleaning (ejemplo de paquete)

Actualizado: 5 de diciembre de 2005

El ejemplo Data Cleaning es un paquete que limpia datos. El paquete usa datos correspondientes a una lista de nombres y direcciones que representan a clientes potenciales. Los datos necesitan limpieza; contienen errores de ortografía, les falta información e incluyen clientes que ya se encuentran en la base de datos, clientes incorrectos o varias instancias con sutiles diferencias del mismo cliente.

El flujo de control del paquete se compone de dos tareas. La primera es una tarea de ejecución de SQL que crea la tabla de entrada, CustomerLeads, y crea las tres tablas de salida llamadas ExistingCustomerLeads, NewCustomerLeads y DuplicateCustomerLeads. La segunda tarea es un flujo de datos que ejecuta el flujo de datos que realiza la limpieza de datos extraídos de la tabla CustomerLeads. El flujo de datos identifica clientes nuevos, existentes y duplicados, y escribe las filas de cada tipo de cliente en la tabla de salida correspondiente.

Si ejecuta el ejemplo en una versión de Windows que no sea en inglés, es posible que tenga que sustituir el nombre de la carpeta Archivos de programa por el nombre traducido para abrir o ejecutar el ejemplo.

[!NOTA] Este ejemplo usa las transformaciones Agrupación aproximada y Búsqueda aproximada, disponibles únicamente en la versión Enterprise de SQL Server 2005.

ms160742.note(es-es,SQL.90).gifImportante:
Los ejemplos se proporcionan exclusivamente con fines formativos. No se han diseñado para utilizarse en un entorno de producción y no se han probado en ningún entorno de este tipo. Microsoft no ofrece soporte técnico para estos ejemplos.

Para obtener más información acerca de la limpieza de datos, busque los siguientes artículos en MSDN Library en https://msdn.microsoft.com/library.

  • Artículo sobre aplicaciones de limpieza de datos con SQL Server Integration Services (vídeo de Windows Media)
  • Artículo sobre limpieza de datos con las transformaciones Agrupación aproximada y Búsqueda aproximada (notas del producto)

Requisitos

La ejecución de este paquete de ejemplo requiere lo siguiente:

  • Debe haber instalado y tener permisos administrativos para la base de datos AdventureWorks.
  • Si tiene la intención de ejecutar el paquete de ejemplo sólo desde la línea de comandos, debe instalar SQL Server 2005 Integration Services (SSIS).
  • Si tiene la intención de abrir el paquete en el Diseñador SSIS y ejecutar el paquete de ejemplo, debe instalar Business Intelligence Development Studio.

Para obtener más información sobre cómo instalar los ejemplos, vea el tema relativo a la instalación de paquetes de ejemplo de Integration Services en los Libros en pantalla de SQL Server. Para obtener la última versión de los ejemplos, incluidos aquéllos comercializados tras la versión comercial original de SQL Server 2005, vea el artículo acerca de ejemplos y bases de datos de ejemplo de SQL Server 2005 publicado en abril de 2006.

Ubicación del paquete de ejemplo

Si los ejemplos se instalaron en la ubicación de instalación predeterminada, el paquete Data Cleaning se encuentra en la siguiente carpeta:

C:\Archivos de programa\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\DataCleaning Sample\Data Cleaning\.

Se necesitan los siguientes archivos para ejecutar este paquete de ejemplo.

Archivo Descripción

DataCleaning.dtsx

Paquete de ejemplo.

CreateTables.sql

Instrucciones SQL para crear tablas.

Agregar visores de datos al ejemplo

Para comprender mejor el funcionamiento del paquete Data Cleaning, puede agregar visores de datos al flujo de datos y luego ver los datos a medida que se mueven entre los componentes de flujo de datos. Se recomienda agregar visores de datos a las siguientes rutas de acceso:

  • Ruta de acceso desde Union All hasta OLE DB Destination-Existing Customers
  • Ruta de acceso desde Conditional Split on Canonical Record for Group hasta OLE DB Destination-Unique Customer Leads
  • Ruta de acceso desde Conditional Split on Canonical Record for Group hasta OLE DB Destination-Duplicate Customer Leads

Para agregar visores de datos

  1. Haga clic con el botón secundario en la ruta de acceso y haga clic en Visores de datos.

  2. En el Editor de rutas de flujo de datos, haga clic en Agregar.

  3. En el cuadro de diálogo Configurar visor de datos, haga clic en Cuadrícula en la lista de tipos. De manera predeterminada, todas las columnas se ven en el visor de datos.

  4. Repita los pasos 1-3 para las demás rutas de acceso.

Ejecutar el ejemplo

El paquete se puede ejecutar desde la línea de comandos mediante la utilidad dtexec, o bien se puede ejecutar en Business Intelligence Development Studio.

Si está utilizando una versión de Windows que no sea en inglés, es posible que tenga que actualizar la propiedad ConnectionString de los administradores de conexión de archivos utilizados en el paquete para poder ejecutar el paquete correctamente. Compruebe que la ruta de acceso utilizada en el administrador de conexión es válida en el equipo y, si fuera necesario, modifíquela para utilizar el nombre traducido de la carpeta Archivos de programa.

Para este ejemplo, es posible que tenga que actualizar "Archivos de programa" en la propiedad ConnectionString del administrador de conexión CreateTables.sql.

Para ejecutar el paquete mediante dtexec

  1. Abra una ventana de símbolo del sistema.

  2. Cambie el directorio a C:\Archivos de programa\Microsoft SQL Server\90\DTS\Binn, la ubicación de dtexec.

  3. Escriba el siguiente comando:

    dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\Data Cleaning Sample\DataCleaning\DataCleaning.dtsx"
    
  4. Presione ENTRAR.

Para obtener más información acerca de la ejecución del paquete mediante la utilidad dtexec, vea el tema que trata sobre la utilidad dtexec en los Libros en pantalla de SQL Server 2005.

Para ejecutar el paquete en Business Intelligence Development Studio

  1. Abra Business Intelligence Development Studio.

  2. En el menú Archivo, seleccione Abrir y haga clic en Proyecto o solución.

  3. Busque la carpeta de ejemplo DataCleaning Sample y luego haga doble clic en el archivo llamado DataCleaning.sln.

  4. En el Explorador de soluciones, haga clic con el botón secundario en DataCleaning.dtsx en la carpeta SSIS Packages y, a continuación, haga clic en Ejecutar paquete.

[!NOTA] Si abre el paquete en el Diseñador SSIS y ve las propiedades del paquete, podrá ver que la propiedad DelayValidation está establecida en True. La validación del paquete se debe demorar porque algunas tablas usadas por el ejemplo Data Cleaning, CustomerLeads y las tres tablas de salida llamadas ExistingCustomerLeads, NewCustomerLeads y DuplicateCustomerLeads, sólo se crean después de que se ejecuta el paquete por primera vez. Si DelayValidation se establece en False, se produce un error de validación al abrir el paquete en el Diseñador de SSIS antes de ejecutarlo.

Componentes del ejemplo

En la tabla siguiente se enumeran las tareas, los contenedores, los orígenes y destinos de datos y las transformaciones que se utilizan en el ejemplo.

Elemento Finalidad

Tarea de ejecución de SQL

La tarea de ejecución de SQL se llama Create Customer Address Reference Table View, Populate NewCustomer Input Table and Create Output Tables. Esta tarea crea la tabla de entrada CustomerLeads y también crea las tres tablas de salida llamadas ExistingCustomerLeads, NewCustomerLeads y DuplicateCustomerLeads.

Tarea Flujo de datos

La tarea Flujo de datos, Fuzzy Lookup Data Flow Task, ejecuta el flujo de datos en el paquete.

Origen de OLE DB

El origen de OLE DB, OLE DB Source - Customer Leads, lee los registros de la tabla CustomerLeads.

Transformación Búsqueda

La transformación Búsqueda, Lookup against Existing Customers, realiza una búsqueda exacta para identificar a los clientes existentes. Si la búsqueda se realiza correctamente, el registro se inserta en la tabla ExistingCustomerLeads.

Transformación Columna derivada

La transformación Columna derivada, Derived Column, agrega las columnas _Similarity a cada fila y establece el valor de la columna en 1.

Transformación Búsqueda aproximada

La transformación Búsqueda aproximada, Fuzzy Lookup against Existing Customers, realiza una búsqueda aproximada para identificar los registros de clientes que son coincidencias aproximadas de registros de clientes existentes.

La transformación agrega una columna _Similarity que contiene una puntuación de similitud en cada fila. La puntuación 0.0 significa que no se encontraron coincidencias, mientras que 1.0 significa que se encontró una coincidencia exacta. Una puntuación entre 0.0 y 1.0 indica un grado de similitud, en el que un valor cercano a 1.0 indica mayor similitud.

Transformación División condicional

La primera transformación División condicional, ConditionalSplit on _Similarity, dirige las filas de entrada a una de dos salidas, según el valor de la puntuación de similitud determinada por la búsqueda aproximada. Las filas con una puntuación de similitud >= 0.70 se escriben en la tabla ExistingCustomerLeads. Las filas con puntuaciones de similitud < 70 probablemente sean nuevos clientes potenciales válidos, con lo que se realiza una limpieza adicional en esas filas.

La segunda transformación División condicional, Conditional Split on Canonical Record for Group, dirige las filas de entradas a una de dos salidas, en función de si la fila de datos es un duplicado. Si los valores de las columnas _key_in y _key_out son iguales, la fila se usa como la fila canónica del grupo, y la fila canónica se inserta en la tabla NewCustomerLeads. Si las columnas _key_in y _key_out no son iguales, la fila se trata como un duplicado aproximado y la fila se inserta en la tabla DuplicateCustomerLeads.

Transformación Unión de todo

La transformación Unión de todo, Union All, mezcla filas de clientes existentes (coincidencias aproximadas y exactas) en un solo conjunto de datos.

Transformación Agrupación aproximada

La transformación Agrupación aproximada, Fuzzy Grouping, agrupa clientes que son duplicados probables. La transformación agrega tres columnas _key_in, _key_out y _score a cada fila. _key_in es un identificador único asignado a cada fila de entrada y _key_out contiene la columna _key_in concreta asignada a la fila que mejor representa a todas las filas en una agrupación aproximada. Todas las filas de una agrupación aproximada tienen el mismo valor _key_out. La columna _score es un valor entre 0.0 y 1.0 que describe la similitud textual entre una fila de entrada dada y la fila seleccionada para ser el valor canónico.

Destinos de OLE DB

El destino de OLE DB, OLE DB Destination - Existing Customers, inserta filas en la tabla ExistingCustomerLeads.

El destino de OLE DB, OLE DB Destination - Unique Customer Leads, inserta filas en la tabla NewCustomerLeads.

El destino de OLE DB, OLE DB Destination - Duplicate Customer Leads, inserta filas en la tabla DuplicateCustomerLeads.

Administrador de conexión de archivos

El administrador de conexión de archivos, CreateTables.sql, se conecta al archivo que contiene el SQL que usa el paquete.

Administrador de conexión OLE DB

El administrador de conexión OLE DB (local).AdventureWorks se conecta a la base de datos AdventureWorks en el servidor local.

En la tabla siguiente se describen los datos de las tablas de salida.

Tabla Descripción

ExistingCustomerLeads

Contiene registros que coinciden exactamente con un cliente existente, y registros que coinciden de forma aproximada con un cliente con similitud textual muy alta.

NewCustomerLeads

Contiene registros para los que no hay una coincidencia válida con un cliente existente. Si la lista contenía varias instancias del mismo nombre, o una versión muy similar de un nombre específico, sólo se dirige un registro a NewCustomerLeads y los duplicados se dirigen a DuplicateCustomerLeads.

DuplicateCustomerLeads

Contiene duplicados de los nuevos clientes.

Resultados del ejemplo

Para ver los resultados de la ejecución del paquete de ejemplo Data Cleaning, ejecute la siguiente consulta de Transact-SQL:

Select * from AdventureWorks.FuzzyLookupExample.ExistingCustomerLeads
Select * from AdventureWorks.FuzzyLookupExample.NewCustomerLeads
Select * from AdventureWorks.FuzzyLookupExample.DuplicateCustomerLeads

Historial de cambios

Versión Historial

5 de diciembre de 2005

Contenido modificado:
  • Se corrigió el nombre de esquema que se utiliza en las instrucciones SELECT que devuelven los resultados de la ejecución.