Unirse a la tabla de búsqueda donde la unión está condicionada a dos columnas

Un usuario Pregunto ✅

andrewpirie

Estoy tratando de agregar el nombre del empleado que creó una entrada en nuestro conjunto de datos de órdenes de venta en PowerBI. Las columnas relevantes son las siguientes:

ÓRDENES DE VENTA

SALESPERSON_ID VARCHAR (20)

EMPLEADO
OLD_FORMAT_EMPLOYEE_ID VARCHAR (20)
NEW_FORMAT_EMPLOYEE_ID INT
DISPLAYNAME VARCHAR (200)

En SQL, haría esto de la siguiente manera:

SELECT SALESORDER..., EMPLOYEES.DISPLAYNAME
FROM SALESORDER
   LEFT JOIN EMPLOYEE
      ON SALESORDER.SALESPERSON_ID = CAST(EMPLOYEE.NEW_FORMAT_EMPLOYEE_ID AS VARCHAR(20))
         OR SALESORDER.SALESPERSON_ID = EMPLOYEE.OLD_FORMAT_EMPLOYEE_ID

Para hacer esto en PowerBI, podría usar lo anterior, que se siente como una trampa (estoy tratando de ser competente en PowerBI), o agregar una columna con una declaración DAX como la siguiente (que da un error al comparar Texto y Número, que me confunde porque cambié el tipo de datos en ‘Empleado'[NEW_FORMAT_EMPLOYEE_ID] al texto en el Editor avanzado)

IF(
   IFERROR(VALUE('Sales Order'[SALESPERSON_ID]), -1) = -1,
   LOOKUPVALUE(
      'Employee'[DISPLAYNAME],
      'Employee'[OLD_FORMAT_EMPLOYEE_ID],
      'Sales Order'[SALESPERSON_ID]
   ),
   LOOKUPVALUE(
      'Employee'[DISPLAYNAME],
      'Employee'[NEW_FORMAT_EMPLOYEE_ID],
      'Sales Order'[SALESPERSON_ID]
   )
)

Agradecería cualquier ayuda para que esta combinación / búsqueda funcione en PowerBI.

Gracias,
Andrés

Hola, @andrewpirie

Primero asegúrese de que el tipo de datos de las columnas OLD_FORMAT_EMPLOYEE_ID y NEW_FORMAT_EMPLOYEE_ID en tabla EMPLEADO son ambos texto.

1.PNG2.PNG

Agregue una columna calculada en la tabla SALESORDER:

Name = IF(
LOOKUPVALUE(EMPLOYEE[DISPLAYNAME],EMPLOYEE[NEW_FORMAT_EMPLOYEE_ID],SALESORDER[SALESPERSON_ID])= "",
LOOKUPVALUE(EMPLOYEE[DISPLAYNAME],EMPLOYEE[OLD_FORMAT_EMPLOYEE_ID],SALESORDER[SALESPERSON_ID]),
LOOKUPVALUE(EMPLOYEE[DISPLAYNAME],EMPLOYEE[NEW_FORMAT_EMPLOYEE_ID],SALESORDER[SALESPERSON_ID])
)

Atentamente,
Yuliana Gu

Hola, @andrewpirie

Primero asegúrese de que el tipo de datos de las columnas OLD_FORMAT_EMPLOYEE_ID y NEW_FORMAT_EMPLOYEE_ID en tabla EMPLEADO son ambos texto.

1.PNG2.PNG

Agregue una columna calculada en la tabla SALESORDER:

Name = IF(
LOOKUPVALUE(EMPLOYEE[DISPLAYNAME],EMPLOYEE[NEW_FORMAT_EMPLOYEE_ID],SALESORDER[SALESPERSON_ID])= "",
LOOKUPVALUE(EMPLOYEE[DISPLAYNAME],EMPLOYEE[OLD_FORMAT_EMPLOYEE_ID],SALESORDER[SALESPERSON_ID]),
LOOKUPVALUE(EMPLOYEE[DISPLAYNAME],EMPLOYEE[NEW_FORMAT_EMPLOYEE_ID],SALESORDER[SALESPERSON_ID])
)

Atentamente,
Yuliana Gu

andrewpirie

En respuesta a v-yulgu-msft

Gracias Yuliana_Gu, ¡es una solución brillante!

Andrés

GilbertQ

¿Qué pasa con la opción de utilizar la opción Fusionar consultas en el Editor de consultas?

Eso le dará todas las opciones requeridas como se muestra a continuación.

Merge.png

ankitpatira

@andrewpirie Asegúrese de que el tipo de datos en ambas columnas sea el mismo, es decir, salesperson_id y new_format_employee_id.

andrewpirie

En respuesta a ankitpatira

@ankitpatira Ambos están configurados para enviar mensajes de texto en PowerBI

Deja un comentario

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