Columna calculada para encontrar la dirección de correo electrónico de múltiples opciones

Un usuario Pregunto ✅

abhi_hgt

Queridos todos,

Necesito su ayuda para crear una columna calculada llamada «M_Email». Esta es una relación típica de gerente de empleado donde un gerente también es un empleado.
Si el rol de un empleado se define como «Gerente» en la columna Rol, entonces en la columna «M_Email» se debe completar la dirección de correo electrónico respectiva y, por lo demás, debe estar en blanco.

A continuación se muestra la captura de pantalla de algunos datos de muestra donde necesitamos tener la última columna «M_Email» como columna calculada.

Nota: el rol de campo ya es una columna calculada.

Abhi_hgt_0-1602840336501.png

Por favor ayuda.

Saludos,
abhi

Akul

Esto se puede implementar fácilmente en PowerQuery:

  1. Digamos que su tabla actual es A. Cree una tabla duplicada B a partir de A.
  2. En el filtro de la tabla B Rol = Gerente
  3. Volver a la tabla A. Combinar con la tabla B en A.Mname = B.Ename
  4. En las opciones de expansión, seleccione E_Email.
  5. Cambiar el nombre de TableB.E_Email a M_Email

¡Espero que esto ayude!
Si respondí correctamente a su pregunta, márquela como una solución aceptada.

Gracias

abhi_hgt

En respuesta a Akul

Hola Akul,

Gracias por la respuesta.

Es posible que me haya perdido detalles de que el campo Rol es una columna calculada, por lo que si intentamos usar su solución en el editor de consultas, la columna Rol no estará disponible.

¿Crees que podría haber otro enfoque?

Saludos,

Abhishek

Akul

En respuesta a abhi_hgt

Pruebe el siguiente DAX:

LOOKUPVALUE(
    'Table'[email],
    'Table'[ename],
    'Table'[mname]
)

Similar a BUSCARV en Excel.

abhi_hgt

En respuesta a Akul

Hola Akul,

Gracias por la respuesta, el DAX que propuso no funcionará como un administrador tendrá varias direcciones de correo electrónico diferentes y debemos seleccionar el correo electrónico particular que tiene la función definida como Administrador.

En el DAX propuesto, recibo un error porque tiene coincidencias múltiples.

Definí el escenario en la publicación original también en la imagen con color para ayudar.

Espero que puedas ayudarme.

Saludos,

Abhishek

Akul

En respuesta a abhi_hgt

¿Puede proporcionar un conjunto de datos de muestra en un archivo PBIX? Tal vez también si puede agregar el DAX con el error.

abhi_hgt

En respuesta a Akul

Hola Akul,

Debido a la información confidencial del cliente, no podré compartir el archivo PBIX. Lo siento por eso.

Nota: El Mid del gerente es también el Eid del gerente.

Saludos,

Abhishek

mfelix

En respuesta a abhi_hgt

Hola @Abhi_hgt,

Mirando sus datos y sin información adicional si su correo electrónico de los administradores es único, lo que significa que no tiene más de un correo electrónico marcado como administrador para el mismo usuario, entonces solo necesita agregar un parámetro adicional a la búsqueda , ese es el Rol que buscas:

Manager_Mail = LOOKUPVALUE('Table'[E_Email];'Table'[Ename];'Table'[Mname];'Table'[Role];"Manager")

MFelix_0-1603814317747.png

abhi_hgt

En respuesta a mfelix

Para mí, este DAX no funciona, no toma el tercer parámetro como nombre de columna y solicita el valor de búsqueda.

mfelix

En respuesta a abhi_hgt

Hola @Abhi_hgt,

Lo estás usando tiene una columna calculada correcta?

Tenga en cuenta que es posible que deba cambiar el «;» por «,» en su sintaxis. ¿Puede compartir una pantalla de impresión del error y la sintaxis que está utilizando?

abhi_hgt

En respuesta a mfelix

me sale el siguiente error

Abhi_hgt_0-1603903020559.png

«Las expresiones que producen un tipo de datos variante no se pueden usar para definir columnas calculadas».

mfelix

En respuesta a abhi_hgt

Hola @Abhi_hgt,

En su última sintaxis no debe colocar el = debe colocar el «Gerente de Ventas» como parámetro en su sintaxis reescriba el código a:

Parent User Email =
LOOKUPVALUE (
    User[internalemailadress],
    User[fullname], Use[parentsystemuseridyominame],
    User[Role Name], "Sales Manager"
)

No sé si tengo los nombres correctamente copiados de la imagen, pero esto debería funcionar.

abhi_hgt

En respuesta a mfelix

Su error diferente 😞

Abhi_hgt_0-1603903658100.png

Correo electrónico del usuario principal = LOOKUPVALUE (Usuario[internalemailaddress],Usuario[fullname],Usuario[parentsystemuseridyominame],’Usuario'[Role Name], «Gerente de ventas»)
Error: «Se proporcionó una tabla de valores múltiples donde se esperaba un solo valor».

mfelix

En respuesta a abhi_hgt

Hola @Abhi_hgt,

Una pregunta, ¿el rol proviene de una tabla diferente? preguntando esto porque en su fórmula tiene todas las columnas sin » y la tabla en el rol de usuario es ‘Usuario’?

abhi_hgt

En respuesta a mfelix

Hola MFelix,

Todas las columnas son de la misma tabla.

Saludos,

abhi

mfelix

En respuesta a abhi_hgt

¿Está seguro de que para el mismo usuario solo hay una fila con el rol de gerente de ventas?

Cree que el problema está relacionado con el hecho de que devuelve más de un valor en la búsqueda, por lo que no devuelve valores correctos

abhi_hgt

¿Puede alguien ayudarme con la resolución de este problema de publicación?

Tahreem24

@Abhi_hgt ,

Pruebe la siguiente columna DAX:

Columna M_Email = IF(Tbl1[Role]=»Administrador»,Tbl1[Memail],Tbl1[Eemail])
Captura.PNG
PD: puse solo un carácter en ambas columnas de ID de correo electrónico.

abhi_hgt

En respuesta a Tahreem24

Gracias por la respuesta pero no cumple con el requisito.

Necesitamos derivar M_email que ya usó en la columna calculada como condición y tenemos muchas direcciones de correo electrónico diferentes para el usuario y debemos seleccionar una dirección de correo electrónico específica considerando el valor de la columna de función.

Deja un comentario

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