Selección de Qliksense a Power Bi (wildMatch

Un usuario Pregunto ✅

smo

Hola

Estoy tratando de pasar de qliksense a power bi. Estoy buscando una alternativa al pick (wildmatch (4010,40 ??, 50 ??, 30 *), 1,2,3) en qliksese.

Con esta fórmula puedo usar el mapeo de comodines, por ejemplo, el resultado de la siguiente fórmula será pick (wildmatch (4010,40 ??, 50 ??, 30 *), 1,2,3) = 1. Como el 4010 está en el primer grupo, se selecciona el primer elemento de la segunda matriz. .

¿Hay algo en power bi que funcione así?

En Vba pude hacer esto con un me gusta inverso.

Para cada miembro de la matriz

si 4010 como miembro entonces

Resultado

demás

terminara si

Te agradeceré si pudieras ayudarme

Saludos

hola @smo

Puede usar la función SEARCH para seleccionar y la función IF o SWITCH anidada para wildmatch para crear una fórmula como su lógica.

por ejemplo:

New Column 2 = SEARCH( SWITCH( TRUE(),
SEARCH("40",[Column],1,0)>0,1,
SEARCH("50",[Column],1,0)>0,2,
SEARCH("30",[Column],1,0)>0,3) , "123",1,0)

Resultado:

2.JPG

y aquí hay un archivo pbix de muestra, inténtelo.

Saludos,

Lin

smo

En respuesta a v-lili6-msft

Hola Thansk por la respuesta, me las arreglo para usar la siguiente fórmula DAX para que todo funcione

PB_Account_F9991 =
Coincidencias VAR =
Topn (1,
CALCULATABLE (
GENERAR(
‘SUN_YTD’,
FILTRAR(
ACCOUNT_F9991,
BUSCAR(
[ACCOUNT_F9991_EXTERNAL],
SUN_YTD[KeyAccount],
1,
0
)
> 0)
))
)
REGRESO

CONCATENATEX (
Partidos,
[ACCOUNT_F9991_INTERNAL], «,»)

Pero me gustaría trasladar esto a M. Como la función lleva mucho tiempo en Dax y necesito consultar otro campo calculado en este

¿Hay alguna forma de mover esto a Power Query?
¿Hay alguna forma de utilizar la consulta de resultados, incluidas las columnas calculadas de otra importación de Power Bi, para poder modificarla con la consulta de Power?
Saludos
Sofía

En respuesta a smo

hola @smo

Es difícil hacerlo en Power query, es posible que intentemos optimizar la fórmula, ¿podría compartir algunos datos de muestra y su resultado esperado para que tengamos una prueba?

Saludos,

Lin

smo

En respuesta a v-lili6-msft

Hola

Estoy tratando de hacer esto con R en este momento.
Tengo una tabla con 2 columnas. Con una gran lista de opciones, pondré 4 ejemplos pero es más largo

WildCardColumna Cartografía
* _I * _ ??? _ 007870000000100 4111
* _ ??? _ 007870000000100 4112
* _I? * _ ??? _ 006330000000005 5111
* _I? * _ ??? _ 0063300000 ????? 5116

Mi otra tabla con los datos

Entidad Cuenta Contraparte Monto
B22 007870000000100 IR22 2000
B22 007870000000100 T222 4000
B22 006330000000005 R222 4500
B22 006330000000007 IR22 5000

Lo quiero como resultado

Entidad Cuenta Contraparte Monto Resultado
B22 007870000000100 IR22 2000 4111
B22 007870000000100 T222 4000 4112
B22 006330000000005 R222 4500 5111
B22 006330000000007 IR22 5000 5116

Estoy pensando en usar R

Para convertir el comodín en expresiones regulares, estoy usando la siguiente fórmula

outputRegEx <-within (conjunto de datos, {RegEx_WildCardColumn = glob2rx (conjunto de datos $ WildCardColumn)})

Puedo agregar una columna con el patrón de la siguiente manera

biblioteca («stringr»)
patrón <- "^. * _ ??? _ 0062102040 ..... $"
cleanRegEx <- str_extract (conjunto de datos $ KeyAccount, patrón)
outputRegEx <-within (conjunto de datos, {RegEx = cleanRegEx}) Mi idea es tal vez recorrer la tabla wild car obteniendo la expresión regular y filtrando la tabla de datos formando un nuevo marco de datos con la nueva columna ¿Podrías guiarme en esto?

Saludos

smo

En respuesta a smo

Hola

No sé si es la mejor solución desde el punto de vista del rendimiento, pero resuelvo el problema usando el código R a continuación
Primero en la tabla de mapeo aplico la siguiente función R para transformar los comodines en exprecions regulares

# ‘conjunto de datos’ contiene los datos de entrada para este script
outputRegEx <-within (conjunto de datos, {RegEx_ACCOUNT_F9991_EXTERNAL = glob2rx (conjunto de datos $ ACCOUNT_F9991_EXTERNAL)})

Luego, en la tabla con los datos, uso el siguiente código donde filtro por la tabla de mapeo tomando las expreciones regulares y filtrando la tabla de datos una vez que filtro agrego el código en la segunda columna. Reduzco el marco de datos para no obtener un mapeo duplicado. Y agrego el marco de datos que ahora se ha encontrado.

Espero que esto ayude a otras personas con el mismo problema.

# ‘conjunto de datos’ contiene los datos de entrada para este script
biblioteca («stringr»)

conjunto de datos <- conjunto de datos
conjunto de datos2 <- conjunto de datos2

subData <- data.frame (
ENTIDAD = carácter (),
KeyAccount = carácter (),
BCP_ACCOUNT = carácter ())
para (i en 1: nrow (dataset2)) {
patternLook <-dataset2[i,1]
patternResult <-dataset2[i,2]

isValid <- function (x) {grepl (patternLook, as.character (x), ignore.case = TRUE)}
subData <- rbind (subData, subconjunto (dentro de (conjunto de datos, {BCP_ACCOUNT = toString (patternResult)}), isValid (conjunto de datos $ KeyAccount) == "TRUE"))
conjunto de datos <- conjunto de datos[ !(dataset$KeyAccount%in% subset(dataset,isValid(dataset$KeyAccount)=="TRUE")$KeyAccount), ]
}
subData <- rbind (subData, dentro de (conjunto de datos, {BCP_ACCOUNT = "NA"}))

Es importante agregar el marco de datos de la segunda columna junto al otro marco de datos, solo agregue una columna y agregue el segundo marco de datos [dataset=#»Added Custom», dataset2=ACCOUNT_F9991].

Asegúrese de que esté en el mismo script R de ejecución

Amitchandak

Referir

https://dax.tips/2017/05/23/power-bi-and-regular-expressions/

Deja un comentario

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