En el libro de trabajo de Tableau Prep "duplicates from union.tfl", "January Orders" es el primer informe de pedidos de enero. La tabla "January Orders (corrections)" es un informe publicado posteriormente con algunos nuevos pedidos y correcciones de pedidos ya existentes en "January Orders". Al unir las filas de ambas tablas, se conservan todas las filas de cada tabla, lo cual crea medidas duplicadas.
El primer flujo de "duplicates from union.tfl" muestra este problema.
Opción 1: conservar todos los datos de una tabla y los datos no coincidentes de otra tabla
En este ejemplo, queremos conservar todos los datos de "January Orders (corrections)" y únicamente los pedidos de "January Orders" que no existan en "January Orders (corrections)".
- Cree una nueva unión de filas entre "January Orders" y "January Orders (corrections)".
- En el paso de unión de columnas 1, haga lo siguiente:
- En las cláusulas de unión de columnas aplicadas, cree una cláusula de unión de columnas en [Order ID] = [Order ID].
- En el tipo de unión de columnas, haga clic en las secciones del diagrama de Venn para que únicamente esté rellenado el segmento situado más a la izquierda. Tableau Prep lo denomina una unión de columnas "Únicamente sin coincidencias a la izquierda".
- Arrastre "January Orders (corrections)" a la unión de columnas 1 y suelte la tabla en Nueva unión de filas.
Opción 2: conservar los registros con la fecha más reciente
Por ejemplo, la Sra. Mouse cambió su pedido para añadir otro abrigo, pero el cambio se registró accidentalmente en "January Orders". El pedido correcto es el de la fecha más reciente.
- Cree una unión de columnas FULL OUTER entre "January Orders" y "January Orders (corrections)" en [Order ID] = [Order ID].
- Añada un paso de la unión de columnas 2.
- Fusione todos los campos coincidentes, excepto los campos de fecha y los valores de medida:
- Haga clic en el campo cuyos valores deben prevalecer sobre los del otro campo en el panel de perfil.
- Haga Ctrl + clic en el campo coincidente.
- Haga clic con el botón derecho en cualquiera de los dos campos y seleccione Fusionar campos.
- Una vez fusionados los campos, Tableau Prep no conservará ambos valores (si había dos valores distintos), sino que conservará el valor del campo seleccionado en primer lugar, si lo hay.
- Por ejemplo, la Sra. Horse tenía el nombre registrado accidentalmente como Sra. House en la tabla "January Orders" y el nombre correcto aparece en "January Orders (corrections). Al fusionar [Customer] y [Customer-1], habría que seleccionar [Customer-1] en primer lugar.
- Puede comprobar el campo que prevalecerá sobre el otro por el nombre en el campo fusionado. El formato del nombre será [nombre del primer campo y nombre del segundo campo]. El nombre del campo que aparezca en primer lugar prevalecerá sobre el otro.
- Si los campos se han fusionado en el orden incorrecto, la fusión puede deshacerse haciendo clic con el botón derecho en el icono de fusión sobre el nombre del campo fusionado en el panel de perfil y seleccionando Eliminar.
- Haga clic en el botón Crear campo calculado.
- En el cuadro de diálogo Campo calculado que se abre, siga estos pasos y haga clic en Aceptar:
- Asigne un nombre al campo calculado. En este ejemplo, el campo calculado se denomina "Fecha más reciente".
- En el campo de fórmula, cree un cálculo similar al siguiente:
IF [Date] > [Date-1]
THEN [Date]
ELSE IFNULL( [Date-1], [Date] )
END
- El cálculo anterior indicará [Date] si es una fecha posterior o [Date-1] si es más reciente. De lo contrario, el cálculo indicará [Date-1].
- Si alguno de los dos campos es NULL, la primera condición no se cumplirá nunca. La función IFNULL() sustituye [Date-1] por [Date] si [Date-1] es NULL. Esto significa que el cálculo siempre indicará un valor no nulo si lo hay.
- Elimine [Date] y [Date-1].
- Cree un campo calculado con un nombre como "Nuevo coste" con un cálculo similar al siguiente:
IF [Date] > [Date-1]
THEN [Cost]
ELSE IFNULL( [Cost-1], [Cost] )
END
- Elimine [Cost] y [Cost-1].
- Repita los pasos 6-7 para cada medida.
Opción 3: cada duplicado debe tratarse de manera distinta
- Cree una unión de columnas FULL OUTER entre "January Orders" y "January Orders (corrections)" en [Order ID] = [Order ID].
- Añada un paso de la unión de columnas 3.
- Fusione todos los campos si a) tienen el mismo valor en ambas tablas o b) los valores de una tabla siempre deben prevalecer sobre los demás.
- Haga clic en el botón Crear campo calculado.
- En el cuadro de diálogo Campo calculado que se abre, siga estos pasos y haga clic en Aceptar:
- Asigne un nombre al campo calculado. En este ejemplo, el campo calculado se denomina "Nuevo coste".
- En el campo de fórmula, cree un cálculo similar al siguiente:
CASE [Order ID-1 & Order ID]
WHEN 5 THEN [Date]
WHEN 9 THEN [Date]
ELSE IFNULL([Date-1],[Date])
END
- El cálculo anterior leerá cada valor de [Order ID-1 & Order ID] y devolverá el campo de fecha especificado. Para simplificar, solo se han especificado los identificadores que deben indicar [Date]; todo lo demás indicará [Date-1] o [Date] si [Date-1] es NULL debido a la instrucción ELSE.
- El valor de [Order ID-1 & Order ID] se usa en la instrucción CASE porque este campo tendrá un valor único para cada fila de datos.
- Esto también significa que cualquier nuevo identificador que se añada indicará [Date-1] cuando este flujo vuelva a ejecutarse en el futuro.
- Elimine [Date] y [Date-1].
- Repita los pasos 4-6 para todos los campos en los que los duplicados deban tratarse de forma individual.