Slicer en una lista de cadenas separadas por comas

Un usuario Pregunto ✅

Hola,

Esto es lo que estoy tratando de lograr:

Mi conjunto de datos:

Nombre del campo nombre de persona amamascotas
FieldDatatype cuerda cuerda
Sheldon nulo
amy Perro
Centavo pájaro, perro, gato
Howard gato, tortuga
Leonardo Perro gato

Ahora, quiero tener una rebanadora (filtro) con selección múltiple así:

Mascota:

  • Perro
  • Gato
  • Pájaro
  • Tortuga
  • Blanco

Sería genial tener esta lista de valores en la segmentación creada dinámicamente a partir del conjunto de datos principal. Pero está bien si no es dinámico.

Intenté hacer esto usando la consulta Measure y SEARCH DAX (encontré este enfoque en línea), pero las medidas no son aplicables como un filtro de nivel de página. Así que eso es un factor decisivo. Incluso cuando aplico esto en una imagen, los resultados fueron incorrectos.

Cualquier ayuda apreciada.

cristianor

¿Has encontrado una solución para esto? Tengo el mismo problema y la solución propuesta tampoco funcionaría.

Gracias

Ashish_Mathur

En respuesta a cristianor

Hola,

En primer lugar, la columna LovesPets debe tener solo una entrada por celda. Por lo tanto, utilice la función de división de celdas por delimitador. En Avanzado, seleccione dividir por filas allí.

Hola @amandal1810,

La mejor manera es ir a Power Query usando columnas divididas, si no es una buena solución para usted, entonces puede crear varias columnas usando dax, como a continuación:

Primero cree una columna para contar el número total de comas:

Comma count = LEN('Table'[LovesPets])-LEN(SUBSTITUTE('Table'[LovesPets],",",""))

Luego crea una columna para obtener la primera columna:

Column = 
var _searchcomma=SEARCH(",",'Table'[LovesPets],1,0)
Return
IF(_searchcomma=0,'Table'[LovesPets],LEFT('Table'[LovesPets],_searchcomma-1))

Y tu verás:

Captura de pantalla 2020-10-05 100650.png

Luego continúe creando las columnas restantes:

Remainingstring = 
IF('Table'[Comma count]=0,BLANK(),RIGHT('Table'[LovesPets],LEN('Table'[LovesPets])-LEN('Table'[Column])-1)

)
Column 2 = 
var _searchcomma=SEARCH(",",'Table'[Remainingstring],1,0)
Return
IF('Table'[Remainingstring]<>BLANK(),IF(_searchcomma=0,'Table'[Remainingstring],LEFT('Table'[Remainingstring],_searchcomma-1))
)

Finalmente crea una tabla para la cortadora:

Slicer table = DISTINCT(UNION(DISTINCT('Table'[Column]),DISTINCT('Table'[Column 2])))

Y tu verás:

Captura de pantalla 2020-10-05 102921.png

Para obtener más información, consulte el archivo adjunto.

Atentamente,
Kelly

¿Respondí tu pregunta? ¡Marca mi publicación como una solución!

En respuesta a v-kelly-msft

¡Muchas gracias Kelly por tu detallada respuesta! Desafortunadamente, no aborda mi caso de uso por completo.

La cantidad de valores en la columna LovesPets es dinámica: por lo tanto, no sabría con seguridad cuántas columnas necesito dividir. Y la columna RemainingString aún contendría las cadenas concatenadas por comas, lo que me llevaría al mismo problema con el que comencé.

En respuesta a amandal1810

Hola @amandal1810,

Sí, usar dax es un poco complejo en tu caso, ya que La columna LovesPets es dinámica, no sabemos cuántas comas puede tener cada fila, la columna «recuento de comas» ayuda a contar el número total de comas en una fila, lo que le indica cuántas columnas puede necesitar para crear.

—-La columna RemainingString aún contendría la coma

Sí, como cada fila puede tener diferentes números de comas, necesitamos una columna intermedia para almacenar las cadenas restantes que pueden tener comas adentro. No hay una manera fácil de obtener directamente todos los valores antes de la coma.

Mi sugerencia es que, si es posible, será mejor que vaya a consulta de energía>columna dividida por coma, lo que sería mucho más fácil.

Atentamente,
Kelly

¿Respondí tu pregunta? ¡Marca mi publicación como una solución!

farhanahmed

Una forma de hacerlo es dividir su columna en filas en Power Query usando «Columna dividida» y usar esa columna como una segmentación

Dividir-en-filas.png

En respuesta a farhanahmed

Gracias por tu respuesta Farhan!

No creo que esta solución sea viable. Motivo: el conjunto de datos en cuestión se extrae de Azure SQL Server y tiene más de 4 millones de filas. Ahora, si divido la columna en filas como dijiste, explotará el conjunto de datos. No creo que PowerBI pueda manejarlo. Sin embargo, voy a probar este enfoque.

farhanahmed

En respuesta a amandal1810

No estoy seguro de si esto funciona para usted, pero ¿ha verificado el filtro de texto de la fuente de la aplicación?

https://appsource.microsoft.com/en-us/product/power-bi-visuals/WA104381309?src=office&tab=Overview

En respuesta a farhanahmed

sí, le eché un vistazo a esto. El usuario final tiene que escribir los valores, que no es lo que estoy buscando.

Deja un comentario

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