Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
SSIS Integration Runtime en Azure Data Factory
En la versión actual de SQL Server Integration Services, la instrucción SQL en una tarea Ejecutar SQL puede contener una instrucción MERGE. Esta MERGE instrucción permite realizar varias INSERToperaciones , UPDATEy DELETE en una sola instrucción.
Para usar la MERGE instrucción en un paquete, siga estos pasos:
Cree una tarea Flujo de datos que cargue, transforme y guarde los datos de origen en una tabla temporal o de ensayo.
Cree una tarea Ejecutar SQL que contenga la instrucción MERGE.
Conecta la tarea Flujo de datos a la tarea Ejecutar SQL y usa los datos de la tabla de almacenamiento provisional como entrada para la instrucción MERGE.
Nota
Aunque una instrucción MERGE normalmente requiere una tabla de almacenamiento temporal en este escenario, el rendimiento de la instrucción MERGE suele superar al de la búsqueda fila a fila realizada por la transformación Lookup. MERGE también resulta útil cuando el gran tamaño de una tabla de búsqueda pondría a prueba la memoria que la transformación de búsquedas puede usar para almacenar en caché su tabla de referencia.
Uso de MERGE
Normalmente, se usa la MERGE instrucción cuando se quieren aplicar cambios que incluyen inserciones, actualizaciones y eliminaciones de una tabla a otra. Antes de SQL Server 2008 (10.0.x), este proceso requería tanto una transformación de búsqueda como múltiples transformaciones de comandos OLE DB. La transformación Lookup realizó una búsqueda fila por fila para determinar si cada fila era nueva o había cambiado. Después, las transformaciones de comando OLE DB realizaron entonces las operaciones necesarias INSERT, UPDATE y DELETE. A partir de SQL Server 2008 (10.0.x), una sola MERGE instrucción puede reemplazar tanto la transformación Búsqueda como las transformaciones comando OLE DB correspondientes.
MERGE con cargas incrementales
La nueva función de SQL Server 2008 (10.0.x) de captura de datos modificados facilita la realización confiable de cargas incrementales durante el almacenamiento de datos. Como alternativa al uso de transformaciones de comandos OLE DB con parámetros para realizar las inserciones y las actualizaciones, puede usar la MERGE instrucción para combinar ambas operaciones.
Para más información, vea Aplicar los cambios al destino.
MERGE en otros escenarios
En los casos siguientes, puede utilizar la instrucción MERGE tanto fuera como dentro de un paquete de Integration Services. Sin embargo, a menudo se requiere un paquete de Integration Services para cargar estos datos desde varios orígenes heterogéneos, así como para combinarlos y limpiarlos posteriormente. Por lo tanto, podría considerar usar la sentencia MERGE en un paquete por comodidad y facilidad de mantenimiento.
Realizar un seguimiento de los hábitos de compra
La tabla FactBuyingHabits del almacenamiento de datos realiza un seguimiento de la última fecha en la que un cliente adquirió un determinado producto. Dicha tabla consta de las columnas ProductID, CustomerID y PurchaseDate. Todas las semanas, la base de datos transaccional genera una tabla PurchaseRecords que incluye las compras realizadas durante la semana. El objetivo es usar una sola MERGE instrucción para combinar la información de la tabla PurchaseRecords en la tabla FactBuyingHabits. Para los pares producto-cliente que no existen, la instrucción MERGE inserta filas nuevas. Para los pares producto-cliente que existen, la sentencia MERGE actualiza la fecha de compra más reciente.
Realizar un seguimiento del historial de precios
La tabla DimBook representa la lista de libros en el inventario de un vendedor de libros e identifica el historial de precios de cada libro. Esta tabla tiene las siguientes columnas: ISBN, ProductID, Price, Shelf e IsCurrent. También incluye una fila para cada precio que ha tenido el libro. Una de estas filas contiene el precio actual. Para indicar la fila que contiene el precio actual, el valor de la columna IsCurrent para dicha fila se establece en 1.
Todas las semanas, la base de datos genera una tabla denominada WeeklyChanges que contiene los cambios de precio para la semana y los libros que se han agregado durante la misma. Mediante una sola MERGE instrucción, puede aplicar los cambios de la tabla WeeklyChanges a la tabla DimBook. La MERGE instrucción inserta nuevas filas para los libros recién agregados y actualiza la columna IsCurrent a 0 para las filas de libros existentes cuyos precios han cambiado. La MERGE instrucción también inserta nuevas filas para los libros cuyos precios han cambiado y, para estas nuevas filas, establece el valor de la columna IsCurrent en 1.
Combinar una tabla que tiene nuevos datos con la tabla antigua
La base de datos modela las propiedades de un objeto mediante un “esquema abierto” (es decir, una tabla que contiene pares de nombre-valor para cada propiedad). La tabla Properties tiene tres columnas: EntityID, PropertyID y Value. La tabla NewProperties, que es una versión más reciente de dicha tabla, se debe sincronizar con la tabla Properties. Para sincronizar estas dos tablas, puede usar una sola MERGE instrucción para realizar las siguientes operaciones:
Eliminar las propiedades de la tabla Properties que no aparezcan en la tabla NewProperties.
Actualizar los valores de las propiedades que aparecen en la tabla Properties con los nuevos valores incluidos en la tabla NewProperties.
Insertar nuevas propiedades para las propiedades existentes en la tabla NewProperties pero que no aparecen en la tabla Properties.
Este enfoque es útil en escenarios similares a los escenarios de replicación, en los que el objetivo es mantener sincronizados los datos de dos tablas ubicadas en dos servidores.
Realizar un seguimiento del inventario
La base de datos Inventory incluye una tabla ProductsInventory con las columnas ProductID y StockOnHand. La tabla Shipments, que contiene las columnas ProductID, CustomerID y Quantity, realiza un seguimiento de los envíos de los productos a los clientes. La tabla ProductInventory debe actualizarse diariamente basándose en la información de la tabla Shipments. Una sola MERGE instrucción puede reducir el inventario en la tabla ProductInventory en función de los envíos realizados. Si el inventario de un producto se ha reducido a 0, esa MERGE instrucción también puede eliminar esa fila de producto de la tabla ProductInventory.