Agregar una columna de índice único condicional basada en varios criterios

Un usuario Pregunto ✅

MarianneElver

El desafío es la necesidad de tener una columna que enumere una identificación única existente o crear una nueva identificación única basada en los siguientes criterios:

– Si se reconoce el número de cliente, utilice la identificación única existente, que está previamente vinculada a este número

– Si no se reconoce el no de cliente, busque el correo electrónico y, si se reconoce este correo electrónico, utilice la identificación única que estaba previamente vinculada a este número.

– Si ni el no del cliente ni el correo electrónico coinciden con los registros anteriores, busque el teléfono Y el nombre. Si coinciden, utilice la identificación única existente; de ​​lo contrario, cree una nueva identificación única.

La columna condcional con el ID único se puede agregar en la tabla existente, que es un archivo XML que se actualizará ocasionalmente (se cargará en Power BI. Todas las columnas se expanden). O bien, el ID único se puede crear en una nueva tabla separada. Tengo nombres en minúsculas y correos electrónicos en columnas separadas para asegurar que coincidan.

El propósito es tener siempre una columna o tabla con números de índice únicos vinculados al nombre de un cliente, de modo que las estadísticas se basen en clientes únicos.

¿Es esto posible? En caso afirmativo, ¿qué idioma sería la mejor opción para usar: M o DAX?

Cualquier tipo de sugerencia concreta es muy apreciada ya que he estado buscando en vano cualquier cosa que coincida con esto.

Muchas gracias por adelantado. Marianne

MarianneElver

En respuesta a ImkeF

Muchas gracias, parece muy útil. Intentaré implementar esto y responderé con comentarios lo antes posible. ¡Gracias de nuevo!

Greg_Deckler

M o DAX va a depender, ¿puede publicar algunos datos de muestra y una idea de las diversas tablas involucradas? Ni siquiera estoy seguro de cuál es su columna de índice única, ¿es solo un número entero único?

MarianneElver

En respuesta a Greg_Deckler

Hola, gracias por tu rápida respuesta.

Claro, aquí hay una pequeña muestra. Las primeras cuatro columnas se proporcionan actualmente y recibirán nuevos registros cuando se actualicen, y lo que necesito es una columna adicional que, al verificar el número de cliente o el correo electrónico, o el nombre y el teléfono, proporcione la identificación que ya existe o cree una nueva única. número entero:

Número de cliente Email Nombre del cliente Teléfono IDENTIFICACIÓN
10135000 nuevonombre@gmail.com Benny Johnson 4329463662 1
10031030 mhy@du.com Pete Madsen 4346123746 2
10056030 pete@gmail.com Pete Madsen 4346123746 2
10164001 janet.nielsen@gmail.com Donna D. Nielsen 4346272296 3
10258006 sannypeterson9@gmail.com Sanny Peterson 4346414642 4
10258032 sannypeterson9@gmail.com Sanny Peterson 4346414642 4

Espero que lo aclare, de lo contrario, ¡hágamelo saber!

Gracias de nuevo,

Marianne

En respuesta a MarianneElver

Hola @MarianneElver,

Puede escribir una función personalizada para llamar a la API de generación de hash, luego ingresar estas columnas de condición para generar el código único.

Saludos,

Xiaoxin Sheng

MarianneElver

En respuesta a v-shex-msft

Hola Pero gracias de todos modos, Marianne.

ImkeF

En respuesta a MarianneElver

Hola marianne

Si entiendo correctamente su solicitud, PowerBI no es la herramienta adecuada para ello:

¿Está importando datos en Power BI y desea crear un valor que se adhiera a los datos importados, también cuando se realiza la próxima actualización?

El problema es que actualmente no existe un concepto para almacenar dichos datos en PBI. Por lo tanto, necesitaría exportar su nueva tabla con los ID recién generados para que se mantengan … y se vuelvan a importar y se fusionen con los nuevos datos (segunda ejecución), donde nuevamente aparecerán nuevas filas con ID vacíos.

MarianneElver

En respuesta a ImkeF

Hola Imke, gracias por tu respuesta. Ya veo, ¿los datos tampoco se almacenarían si las ID generadas se introdujeran / añadieran a otra tabla? No, entonces, ¿existe algún otro método dentro de PBI para calcular el número único de clientes (y usar este número en varios otros cálculos) si se cumplen los criterios para no contar dos veces al mismo cliente? Gracias de antemano, Marianne

ImkeF

En respuesta a MarianneElver

Sí, puede crear una columna de índice como esta, que se volverá a crear completamente cada vez que actualice su consulta de esta manera:

let
    Source = Tabelle2,
    #"Grouped Rows" = Table.Group(Source, {"Phone"}, {{"All", each Table.AddIndexColumn(_, "NestedIndex",1,1), type table}}),
    TelIndex = Table.AddIndexColumn(#"Grouped Rows", "Index", 1, 1),
    HasMatches = Table.AddColumn(TelIndex, "Custom", each List.Count(List.Union({[All][email], [All][Customer Number], [All][Customer name]})) <> List.Count(List.Distinct(List.Union({[All][email], [All][Customer Number], [All][Customer name]})))),
    #"Expanded All" = Table.ExpandTableColumn(HasMatches, "All", {"Customer name", "Customer Number", "email", "NestedIndex"}, {"Customer name", "Customer Number", "email", "NestedIndex"}),
    #"Added Custom" = Table.AddColumn(#"Expanded All", "NewIndex", each if [Custom] = false then Text.From([Index])&"-"& Text.From([NestedIndex]) else [Index]),
    #"Removed Columns1" = Table.RemoveColumns(#"Added Custom",{"NestedIndex", "Index", "Custom"})
in
    #"Removed Columns1"

Simplemente reemplace «Tabelle2» en el paso Fuente por el nombre de su consulta / tabla.

La pregunta es qué se devolverá, si hay más de 2 filas por número de teléfono, y solo 2 coinciden, uno es distinto. Usando este código, la fila no coincidente también obtendría el mismo ID. No estoy seguro de si esto es lo que quieres.

MarianneElver

En respuesta a ImkeF

Hola, ¡esto ES realmente lo que estoy buscando! ¿Se «almacenará para siempre» en Power BI junto con el resto de los datos? Creo que también cambiaré la agrupación de grupo por teléfono a número de cliente, para seguir la verificación de número de cliente-correo electrónico-teléfono en ese orden. Muchas gracias, marianne

ImkeF

En respuesta a MarianneElver

Genial y sí, esto se almacenará y ejecutará cada vez que presione el botón de actualización 🙂

MarianneElver

En respuesta a ImkeF

Muchas gracias, parece muy útil. Intentaré implementar esto y responderé con comentarios lo antes posible. ¡Gracias de nuevo!

Deja un comentario

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