table append

Reconciliación de Transacciones Financieras con Filtrado y Columnas Adicionales

Scénario de test & Cas d'usage

Contexto empresarial

Una entidad financiera debe consolidar las transacciones de un sistema asociado. El fichero de origen contiene transacciones válidas, transacciones de prueba (monto cero o negativo) y columnas de metadatos adicionales que no existen en la tabla maestra de destino. El objetivo es anexar únicamente las transacciones válidas, ignorando las inválidas y las columnas extra, para mantener la integridad de la tabla maestra.
Sobre el conjunto : table

Carga, guardado y gestión de tablas en memoria.

Descubrir todas las acciones de table
Preparación de datos

Se crea una tabla maestra 'transacciones_maestra' y una tabla de origen 'transacciones_delta' que contiene datos a filtrar (monto <= 0) y una columna extra ('COMENTARIO') que no está en el destino.

¡Copiado!
1DATA casuser.transacciones_maestra;
2 LENGTH ID_TRANSACCION $ 12 MONTO 8;
3 ID_TRANSACCION = 'TXN1000'; MONTO = 150.75; OUTPUT;
4 ID_TRANSACCION = 'TXN1001'; MONTO = 2300.00; OUTPUT;
5RUN;
6 
7DATA casuser.transacciones_delta;
8 LENGTH ID_TRANSACCION $ 12 MONTO 8 COMENTARIO $ 50;
9 ID_TRANSACCION = 'TXN2001'; MONTO = 99.99; COMENTARIO = 'Venta online'; OUTPUT;
10 ID_TRANSACCION = 'TXN2002'; MONTO = 0.00; COMENTARIO = 'Transacción de prueba'; OUTPUT;
11 ID_TRANSACCION = 'TXN2003'; MONTO = 500.00; COMENTARIO = 'Transferencia'; OUTPUT;
12 ID_TRANSACCION = 'TXN2004'; MONTO = -50.00; COMENTARIO = 'Reverso de prueba'; OUTPUT;
13RUN;

Étapes de réalisation

1
Cargar la tabla maestra 'transacciones_maestra' en memoria.
¡Copiado!
1 
2PROC CAS;
3TABLE.loadTable / caslib='casuser' path='transacciones_maestra.sashdat' casout={name='transacciones_maestra', replace=true};
4RUN;
5 
2
Anexar desde 'transacciones_delta' usando un filtro 'where' para incluir solo transacciones con un monto positivo. La acción debe ignorar la columna 'COMENTARIO' que no existe en el destino.
¡Copiado!
1PROC CAS;
2 TABLE.append /
3 SOURCE={name='transacciones_delta', caslib='casuser', where='MONTO > 0'},
4 target={name='transacciones_maestra', caslib='casuser'};
5RUN;
3
Verificar el contenido de la tabla final para asegurar que solo las filas válidas fueron añadidas y que la estructura de la tabla no ha cambiado.
¡Copiado!
1 
2PROC CAS;
3TABLE.fetch / TABLE={name='transacciones_maestra', caslib='casuser'};
4RUN;
5 

Resultado esperado


La acción 'append' debe ejecutarse sin errores. El log de CAS indicará que 2 filas fueron añadidas. La salida de 'table.fetch' mostrará un total de 4 filas en 'transacciones_maestra': las 2 originales más las transacciones 'TXN2001' y 'TXN2003'. Las transacciones con monto cero o negativo no deben estar presentes. La columna 'COMENTARIO' no debe aparecer en la tabla final, demostrando que CAS manejó correctamente la discrepancia de columnas.