Buscar contenido de cadena, agrupar resultados similares y sumar resultados

Un usuario Pregunto ✅

kjoy

Hola,

Estoy trabajando con una gran cantidad de filas de rutas de páginas URL y su correspondiente número de sesiones. Lo que me gustaría poder hacer es buscar una parte específica de la ruta de la página URL, agrupar todos los resultados y calcular la suma de las sesiones para esos resultados.

Me gustaría averiguar cómo hacer esto con DAX y M.

URL de la página Sesiones URL de página agrupada Sesiones
/nueva-snowboard-23jk4j 118 /nueva-snowboard 235
/snowboard-usado-3jfjk3y 67 /snowboard-usado 148
/nueva-snowboard-54d51 22 /videos 54
/videos 54 /apoyo 40
/snowboard-usado-34d78c 81
/apoyo 40
/nueva-snowboard-a351v2cc 95

A la izquierda hay un ejemplo del tipo de datos que tengo. A la derecha está lo que me gustaría lograr.

¡Gracias!

ImkeF

Si el patrón para crear la URL de la página agrupada es omitir el último elemento después del «-«, podría usar este código M:

dejar

Fuente = … TuFuente …,

#»Tipo cambiado» = Table.TransformColumnTypes(Source,{{«Sessions», type number}}),

#»Dividir columna por delimitador» = Table.SplitColumn(#»Tipo cambiado»,»URL de página»,Splitter.SplitTextByEachDelimiter({«-«}, QuoteStyle.Csv, cierto),{«Grupo», «URL de página.2»}),

#»Columnas eliminadas» = Table.RemoveColumns(#»Dividir columna por delimitador»,{«URL de página.2»}),

#»Filas agrupadas» = Table.Group(#»Columnas eliminadas», {«Grupo»}, {{«Sesiones», cada List.Sum([Sessions]), teclee el texto}})

en

#»Filas agrupadas»

Tienes que reemplazar… YourSource.. por lo que dice 🙂

chuck_stones

De manera similar al OP, estoy tratando de usar Power BI para obtener información de uso del sitio de SharePoint de Google Analytics.

Tengo varios sitios de nivel superior, con subsitios y, en algunos casos, más subsitios y páginas debajo de esos subsitios. La jerarquía es algo así como:

URL del anfitrión:

https://nombredeempresa.sharepoint.com

Sitios:

/sitios/nombre del sitio

/sitios/nombre del sitio/subsitio1/subsitio2

/equipos/nombre del equipo

/buscar/páginas

etc

Lo que me gustaría hacer es agrupar las páginas por sitio/subsitio común y sumar los recuentos de sesiones para cada sitio/subsitio usando PowerBI para ver, en general, qué sitios tienen la mayor cantidad de sesiones, visitas, tasas de rebote, etc.

Estoy seguro de que hay una manera de hacerlo, pero soy un novato en PowerBI y realmente no sé por dónde empezar. Vi algunas de las respuestas aquí y pensé que podrían ser útiles en mi escenario, pero no sé cómo ponerlas en práctica.

Me imagino que si voy a usar un delimitador, debería estar en «https://community.powerbi.com/».

¿Alguna sugerencia?

chuck_stones

En respuesta a chuck_stones

Bien, logré lo que quería hacer al crear una columna personalizada y usar la siguiente fórmula:

=Texto.AntesDelimitador(Texto.Inferior([ColumnName]), «https://community.powerbi.com/», 3)

Esto me dio una columna por la cual podía agrupar los sitios y subsitios. Bonza. Sin embargo, todavía tengo un problema que es que, por alguna razón, Google Analytics captura la página de inicio del sitio como dos valores separados, dependiendo de cómo se acceda;

http://nombredelaempresa.sharepoint.com/sites/nombredelsitio

o

http://nombredelaempresa.sharepoint.com/sites/nombredelsitio/

Esto está creando dos filas separadas en mi conjunto de datos.

¿Hay alguna forma de combinar estas dos filas en una sola? Intenté reemplazar valores, pero eso afecta a todas las filas, lo que convierte

http://nombredelaempresa.sharepoint.com/sites/nombredelsitio/subsitio1

en

http://nombredelaempresa.sharepoint.com/sites/nombredelsitiosubsitio1

o

http://nombredelaempresa.sharepoint.com/sites/nombredelsitio/subsitio1

en

http://nombredelaempresa.sharepoint.com/sites/nombredelsitio//subsitio1

dependiendo del valor que use como fuente para el reemplazo. ¿Alguien tiene alguna idea genial sobre cómo puedo combinar las dos filas?

chuck_stones

De manera similar al OP, estoy intentando usar Power BI para extraer datos de Google Analytics y observar la agrupación de URL por el comienzo de la URL. Por ejemplo, nuestro dominio es:

http://companyname.sharepoint.com y todas las URL posteriores siguen un formato similar al siguiente:

/sitios/nombre del sitio

/equipos/nombre del equipo

/equipos/nombre del equipo/departamento

/buscar/páginas/resultados.aspx

etc

Lo que quiero hacer es identificar una forma de sumar los recuentos de sesiones para todas las páginas dentro de cada sitio de nivel superior y los subsitios. Me imagino que esto es posible, pero al ser nuevo en PowerBI, no tengo idea de cómo se haría. ¿Alguna sugerencia? Cualquier uso del delimitador debería estar en «https://community.powerbi.com/».

kjoy

¡@ImkeF ese archivo ayudó mucho! ¡Gracias!

Tengo una pregunta rápida con la que tengo un problema. Como prefacio, estoy haciendo todo en Power BI Desktop. Cuando estoy editando las consultas, mis páginas vistas muestran el valor real de la página. Sin embargo, cuando cierro eso y estoy operando en la pestaña Datos, todas mis páginas vistas se convierten en un valor de 145. No tengo idea de por qué sucede esto.

ImkeF

En respuesta a kjoy

despistado otra vez 🙂

Mira mi pbix

kjoy

Problemas con la función de respuesta. En todo caso..

@ImkeF Creé una nueva consulta e implementé el código que creó, sin embargo, lo que hizo fue duplicar mi consulta existente. Nada se agrupó como se esperaba. ¿Alguna idea sobre lo que podría haber hecho mal?

¡Gracias!

ImkeF

En respuesta a kjoy

@KJoy

No hay ideas, echa un vistazo al archivo.

kjoy

Gracias por las respuestas rápidas y útiles.

Probaré las sugerencias aquí y les haré saber a todos si tengo más preguntas.

ImkeF

Si el patrón para crear la URL de la página agrupada es omitir el último elemento después del «-«, podría usar este código M:

dejar

Fuente = … TuFuente …,

#»Tipo cambiado» = Table.TransformColumnTypes(Source,{{«Sessions», type number}}),

#»Dividir columna por delimitador» = Table.SplitColumn(#»Tipo cambiado»,»URL de página»,Splitter.SplitTextByEachDelimiter({«-«}, QuoteStyle.Csv, cierto),{«Grupo», «URL de página.2»}),

#»Columnas eliminadas» = Table.RemoveColumns(#»Dividir columna por delimitador»,{«URL de página.2»}),

#»Filas agrupadas» = Table.Group(#»Columnas eliminadas», {«Grupo»}, {{«Sesiones», cada List.Sum([Sessions]), teclee el texto}})

en

#»Filas agrupadas»

Tienes que reemplazar… YourSource.. por lo que dice 🙂

kjoy

En respuesta a ImkeF

greggyb

En respuesta a ImkeF

greggyb

En respuesta a greggyb

Error muy extraño con mi publicación anterior: no se puede editar. Hay un error de renderizado extraño cuando voy a editarlo.

Sin embargo, probablemente sea mejor usar la solución Power Query @ImkeF o algo similar para hacer el texto de la URL. Esto es solo una limpieza de datos estándar.

Sin embargo, en lugar de conservar una suma como un campo en la tabla, recomendaría escribir una medida que cuente las instancias de la raíz URL. Sería tan simple como COUNTA():

CountURL = 
COUNTA( TestURL[URL] )

greg_deckler

Un poco feo, pero podría crear una cantidad de columnas igual a sus grupos y usar IFERROR y SEARCH (o FIND) para devolver la posición inicial o -1 si no se encuentra. Luego, podría tener otra columna donde tenga una declaración IF grande y coloque el nombre «amigable» correcto en la columna según cuál de sus columnas de agrupación no sea -1. Fuerza bruta, probablemente una forma más hábil de hacerlo, pero debería funcionar.

Deja un comentario

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