coronatrabajador
Ok, aquí está mi problema, he estado usando Access con Excel hasta este momento para crear mis informes y estoy haciendo la transición a PowerBI y tengo muy poca comprensión de las medidas y DAX.
el SQL que estoy usando es el siguiente:
ACTUALIZAR MainTable, CategoryTable
SET MainCat = Categoría
WHERE TRBL_DESC Me gusta «*» +CategoryTable.Keyword + «*»;
MainTable: la tabla que se usa en PowerBI donde tengo una columna TRBL_DESC «descripción del problema» y he creado una columna en blanco «MainCat» para completar desde el SQL anterior.
CategoryTable – tiene 2 columnas «Palabra clave» y «Categoría»
Lo que hace el SQL es extraer ambas tablas, luego mirar para ver si el campo TRBL_DESC en MainTable contiene alguna de las palabras clave dentro de su cadena de los campos de palabras clave de CategoryTable y luego reemplaza el campo MainCat en MainTable con el campo Categoría en CategoryTable.
Me gustaría hacer todo esto en PowerBi, y no quiero tener una cadena larga porque a veces mis palabras clave están en los 1000 y necesito poder reordenarlas fácilmente.
En resumen, necesito el equivalente de Dax para el SQL.
Gracias.
robbieinoz
En respuesta a coronatrabajador
Hola @CrownWorker –
Creo que está recibiendo el error en el segundo conjunto porque necesita asegurarse de que su lista de palabras clave tenga un conjunto único de valores. es decir, no puede tener la misma palabra clave en su tabla de palabras clave más de una vez.
La fórmula que le di arriba devuelve la categoría en orden alfabético. Entonces, si hay varias coincidencias, el elemento que aparece primero en orden alfabético es el que aparece en la fórmula de categoría.
Parece que desea anular esta clasificación alfabética y devolver la categoría según su propia clasificación, donde define el orden de las categorías para devolver en el caso de múltiples coincidencias. Así es cómo:
Paso 1: agregue una columna a su tabla de palabras clave y clasifique su tabla de palabras clave de la siguiente manera:
Ahora cambie su fórmula coincidente a algo parecido a lo siguiente:
rankedCategory = LOOKUPVALUE( 'Keyword Table'[Narrative Contains],'Keyword Table'[Rank], CALCULATE( FIRSTNONBLANK('Keyword Table'[Rank],1), filter(
VALUES('Keyword Table'[Narrative Contains]), SEARCH('Keyword Table'[Narrative Contains],'Transaction list'[Narrative],1,0)<>0 ) ) )
Que ahora debería crear lo siguiente:
Esto debería permitirle asignar una clasificación para dictar qué categorías deben devolverse en el caso de múltiples coincidencias.
v-jiascu-msft
Hola @CrownWorker,
Importe estas dos tablas primero. Luego agregue una columna calculada con esta fórmula.
MainCat = LOOKUPVALUE ( CategoryTable[Category], CategoryTable[Keyword], MainTable[Trbl_Desc] )
Nota: los registros (filas) en «CategoryTable» deben ser únicos.
¡Atentamente!
Valle
coronatrabajador
En respuesta a v-jiascu-msft
Gracias por el intento, el único problema con su solución es que necesita una coincidencia exacta y estoy buscando una coincidencia parcial/similar
robbieinoz
En respuesta a coronatrabajador
Hola @CrownWorker
Tuve un problema similar y lo acabo de resolver. Esto es lo que hice:
Tenía una tabla de transacciones con varias narrativas. Quería buscar cada descripción narrativa para ver si contiene una palabra clave de una lista de palabras clave. Si lo hiciera, devolvería la categoría correspondiente emparejada con la palabra clave. Así como esto:
Lista de transacciones:
Lista de palabras clave:
Lo primero que hice fue configurar una columna para determinar si hay una coincidencia y, de ser así, qué palabra clave identificó la coincidencia. Creé una columna calculada con esta fórmula:
MatchFound = FIRSTNONBLANK( FILTER( values('Keyword Table'[Narrative Contains]), search('Keyword Table'[Narrative Contains],'Transaction list'[Narrative],1,0)) ,1)
Lo que agrega esta columna a la tabla, que identifica la palabra clave que se encontró en la cadena narrativa.
Luego usé una fórmula de valor de búsqueda para devolver la categoría correspondiente de esta manera:
category = LOOKUPVALUE( 'Keyword Table'[Category],'Keyword Table'[Narrative Contains],'Transaction list'[MatchFound] )
Lo que agrega esta columna de categoría. ¡Voila!
¡Espero que ayude!
coronatrabajador
En respuesta a robbieinoz
La primera parte funcionó, me gustaría entender cómo ha ordenado mi lista de palabras clave para poder ordenarlas correctamente para capturar la información de la mejor manera posible para representar el servicio.
La segunda parte no funciona correctamente aunque da el error indicado en el gráfico a continuación.
robbieinoz
En respuesta a coronatrabajador
Hola @CrownWorker –
Creo que está recibiendo el error en el segundo conjunto porque necesita asegurarse de que su lista de palabras clave tenga un conjunto único de valores. es decir, no puede tener la misma palabra clave en su tabla de palabras clave más de una vez.
La fórmula que le di arriba devuelve la categoría en orden alfabético. Entonces, si hay varias coincidencias, el elemento que aparece primero en orden alfabético es el que aparece en la fórmula de categoría.
Parece que desea anular esta clasificación alfabética y devolver la categoría según su propia clasificación, donde define el orden de las categorías para devolver en el caso de múltiples coincidencias. Así es cómo:
Paso 1: agregue una columna a su tabla de palabras clave y clasifique su tabla de palabras clave de la siguiente manera:
Ahora cambie su fórmula coincidente a algo parecido a lo siguiente:
rankedCategory = LOOKUPVALUE( 'Keyword Table'[Narrative Contains],'Keyword Table'[Rank], CALCULATE( FIRSTNONBLANK('Keyword Table'[Rank],1), filter(
VALUES('Keyword Table'[Narrative Contains]), SEARCH('Keyword Table'[Narrative Contains],'Transaction list'[Narrative],1,0)<>0 ) ) )
Que ahora debería crear lo siguiente:
Esto debería permitirle asignar una clasificación para dictar qué categorías deben devolverse en el caso de múltiples coincidencias.
coronatrabajador
En respuesta a robbieinoz
Hola Robbieinoz,
Eres fabuloso. Eso resolvió todos los problemas que tenía. Ojalá hubiera una manera de mostrar mi aprecio mejor que unas pocas líneas de texto en una pantalla. Intentaré enviarte algo de buena voluntad y karma.
Gracias de nuevo.
robbieinoz
En respuesta a coronatrabajador
No te preocupes feliz de ayudar 🙂