Cómo insertar filas de otra tabla según los criterios.

Un usuario Pregunto ✅

dnsia

Hola a todos,

Por favor ayuda.

tengo 2 mesas Necesito insertar filas de datos en la tabla 1 desde la tabla 2 según las condiciones.

Si la tabla 2 tiene el mismo [BL No], [EQPID], [Vessel], [Voyage], [Bound] entonces no debe insertarse en la tabla 1, de lo contrario, proceda a insertar filas.

Tabla 1.

BL No EQPID Carga Descarga Embarcación Viaje Unido
BL002 Contenedor 2 PUERTO 2 PUERTO 3 VES 2 202006 S
BL001 Contenedor 1 PUERTO 2 PUERTO 3 VES 2 202006 S
BL002 Contenedor 2 PUERTO 1 PUERTO 2 VES 1 202007 norte
BL001 Contenedor 1 PUERTO 1 PUERTO 2 VES 1 202007 norte

Tabla 2.

BL No EQPID Carga Descarga Embarcación Viaje Unido
BL002 Contenedor 2 PUERTO 1 PUERTO 3 VES 1 202007 norte
BL001 Contenedor 1 PUERTO 1 PUERTO 3 VES 1 202007 norte
BL003 Contenedor 3 PUERTO 1 PUERTO 4 VES 1 202015 norte
BL004 Contenedor 4 PUERTO 1 PUERTO 4 VES 1 202015 norte

Salida deseada para la Tabla 1:

BL No EQPID Carga Descarga Embarcación Viaje Unido
BL002 Contenedor 2 PUERTO 2 PUERTO 3 VES 2 202006 S
BL001 Contenedor 1 PUERTO 2 PUERTO 3 VES 2 202006 S
BL002 Contenedor 2 PUERTO 1 PUERTO 2 VES 1 202007 norte
BL001 Contenedor 1 PUERTO 1 PUERTO 2 VES 1 202007 norte
BL003 Contenedor 3 PUERTO 1 PUERTO 4 VES 1 202015 norte
BL004 Contenedor 4 PUERTO 1 PUERTO 4 VES 1 202015 norte

¡Gracias!

@dnsia

Esto debería ser mucho más fácil si solo crea una nueva tabla usando DAX, puede agregar condiciones adicionales para todas las columnas ([BL No], [EQPID], [Vessel], [Voyage], [Bound]) con && No en valores() combinación. Consulte pbix si es necesario.

Nueva tabla =
var notintable = CALCULATETABLE(‘Tabla (2)’,FILTER(‘Tabla (2)’,NO([BL No] en VALORES(‘Tabla'[BL No])) && NO([EQPID] en VALORES(‘Tabla'[EQPID]))))
Retorna UNION(‘Tabla’,notintable)

V-pazhen-msft_0-1618539095547.png

Paul Zheng _ Equipo de apoyo comunitario
Si esta publicación ayuda, acéptela como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

@dnsia

Esto debería ser mucho más fácil si solo crea una nueva tabla usando DAX, puede agregar condiciones adicionales para todas las columnas ([BL No], [EQPID], [Vessel], [Voyage], [Bound]) con && No en valores() combinación. Consulte pbix si es necesario.

Nueva tabla =
var notintable = CALCULATETABLE(‘Tabla (2)’,FILTER(‘Tabla (2)’,NO([BL No] en VALORES(‘Tabla'[BL No])) && NO([EQPID] en VALORES(‘Tabla'[EQPID]))))
Retorna UNION(‘Tabla’,notintable)

V-pazhen-msft_0-1618539095547.png

Paul Zheng _ Equipo de apoyo comunitario
Si esta publicación ayuda, acéptela como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Jihwan_Kim

Hola, @dnsia

Por favor corrígeme si entendí mal tu pregunta.

En mi opinión, esto se puede hacer en Power Query Editor usando APPEND + remove duplicate.

Si tiene un archivo pbix de muestra, elimine la información importante y comparta el enlace aquí, entonces puedo intentar investigarlo para encontrar una solución más precisa.

Gracias.

Hola, mi nombre es Jihwan Kim.

Si esta publicación ayuda, considere aceptarla como la solución para ayudar a otros miembros a encontrarla más rápido y dele un gran aplauso.

Linkedin: https://www.linkedin.com/in/jihwankim1975/

dnsia

En respuesta a Jihwan_Kim

Hola @Jihwan_Kim,

¡Gracias por su respuesta!

No puedo enviar el pbix ya que la fuente es de nuestra base de datos sql, no estoy seguro de si se puede acceder desde afuera.

Sin embargo, los conjuntos de datos en Power Query no están alineados como lo que presenté anteriormente (es decir, la Tabla 1 no tiene columnas de Carga y Descarga en Power Query. Tuve que crear un valor de búsqueda de la Tabla 2 para alinearlo).

Parecía así porque alineé las columnas de las tablas 1 y 2 a través de DAX.

Así que espero que algunos dax también puedan ayudar en la tabla 1 o tal vez crear una nueva tabla calculada, pero no estoy seguro de cómo.

¡Gracias!

Jihwan_Kim

En respuesta a dnsia

Hola,

Gracias por tus comentarios.

Si creó la columna de carga y la columna de descarga, ¿puedo preguntarle cómo obtiene la información de carga y descarga para Voyage 202006?

Creo que solo la información de Voyage 202007 está en Table2.

Y en mi opinión, es mejor crear una nueva tabla por SQL y luego obtener los datos en Power BI.

dnsia

En respuesta a Jihwan_Kim

Este es el equivalente de la Tabla 2 en mi publicación original. Esta es una lista de todos los contenedores y su ruta general. La parte complicada es que esta lista solo muestra el puerto de carga y descarga final. No muestra el transbordo (si el contenedor ha sido transferido a otra embarcación/viaje en un centro portuario determinado).

dnsia_0-1618316038627.png

Este es el equivalente de la Tabla 1 anterior. Una lista de seguimiento más completa del movimiento de cada contenedor.

El código de puerto de la columna sirve como centro del puerto donde el contenedor se descarga (DCHT) en su primer buque y se carga (LODT) en el siguiente buque.

dnsia_1-1618316272608.png

Dado que la Tabla 1 muestra la puerto de carga original y su puerto de descarga final y la tabla 2 muestra dónde ocurre la transferencia,

Creé como:

Carga = IF(ESBLANCO(Transbordo[LODT]), LOOKUPVALUE(‘Total de Slots + Repo'[LOADPORTID], ‘Tragaperras totales + Repo'[BL Number], transbordo[BL Number]), transbordo[portcode])

Descarga = IF(ESBLANCO(Transbordo[DCHT]), LOOKUPVALUE(‘Total de Slots + Repo'[DISCHARGEPORTID], ‘Tragaperras totales + Repo'[BL Number], transbordo[BL Number]), transbordo[portcode])

Espero que esto ayude. ¡Muchísimas gracias por su tiempo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *