Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Prepping for a Fabric certification exam? Join us for a live prep session with exam experts to learn how to pass the exam. Register now.

Reply
Anonymous
Not applicable

Medida DAX de flujo de segmento dinámico

Hola a todos,

He estado luchando mucho hoy, tratando de conseguir algo para trabajar.

Lo que estoy tratando de crear es un informe dinámico de migración de segmentos. Por cada semana, cada cliente se pone en uno de los 5 segmentos. (como "leal" y "arriesgado"). Dado que esto se hace para cada semana, puede mostrar desde qué segmento se movió el usuario a qué otro segmento. Así que imaginen que es la semana 45, pero todavía quiero ver la migración del segmento entre la semana 40 y 41, que debería ser posible. Quiero poder, con la ayuda de segmentaciones de datos o un parámetro hipotética, establecer las semanas que voy a comparar entre sí.

El resultado final debe mostrar las siguientes columnas:
- Semana del programa de segmento de origen

- Segmento de origen
- Semana del programa de Segmento de Desitanía
- Segmento de destino
- Número de personas distintas que hacen esta transición.

Los datos que tengo tienen 3 columnas relevantes: una semana, un segmento, un UUID.

Aquí hay algunos datos de prueba:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("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", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Segment = _t, UUID = _t, WeekCode = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"SegmentName", type text}, {"LoyaltyId", type text}, {"ProgramWeekCombination", type text}})
in
    #"Changed Type"

El problema con el que me encuentro es que no quiero crear una nueva tabla que tenga una combinación de cada semana con cada dos semanas y luego todas las transiciones posibles. Eso terminaría siendo demasiados datos. Así que esperaba usar medidas para esto, pero no puedo escribir una lo suficientemente buena para hacer lo que quiero.

¡Cualquier ayuda es apreciada!

9 REPLIES 9
v-lili6-msft
Community Support
Community Support

hola @Jaap_Olsthoorn

Podrías consultar este blog:

Segmentación dinámica

Si todavía tiene el problema, comparta su salida esperada basada en los datos de ejemplo anteriores.

saludos

Lin

Community Support Team _ Lin
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

Hola Lin,

Sí, puedo entender que esto es confuso, me ha estado confundiendo todo el día!

Este es un ejemplo de lo que quiero:

Result example.png

Por lo tanto, el usuario puede elegir una semana de destino (por ejemplo, la semana pasada) y una semana de origen, digamos la semana anterior, utilizando las segmentaciones de datos. A continuación, la tabla mostrará todas las combinaciones de segmentos que las personas tenían en esas semanas. Por ejemplo, si sólo había 3 personas en mis datos, y esto es lo que sucedió:

"Johnny fue de Leales a Baja Frequentia" y "Lizzy fue de Novatos a En Riesgo", y "Benny también fue de Novatos a En Riesgo"

Los datos resultantes deben mostrar:

Segmento de origen del segmento de destino Número de usuarios

Baja Frequentia Leales 1

En Riesgo Novatos 2

Esa es la idea.

Como se puede ver en el ejemplo he llegado razonablemente lejos con él. El problema es que la segunda columna tiene que ser una medida, y esa medida utiliza actualmente un "MAX(segmento de destino)" que siempre dará A Novatos.

Espero que esto ayude un poco. ¡Perdón por confundirte!

Jaap

hola @Jaap_Olsthoorn

Si es posible, por favor comparta su archivo pbix de muestra para que tengauna una prueba.

saludos

Lin

Community Support Team _ Lin
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

Aquí está un archivo de ejemplo para usted, espero que este enlace funcione:

Archivo de ejemplo

hola @Jaap_Olsthoorn

En primer lugar, usted debe saber que:

1. La columna/tabla de cálculo no admite cambios dinámicos basados en filtro o segmentación de datos.
2. La medida puede verse afectada por el filtro / cortador, por lo que puede usarlo para obtener un resumen dinámico en funcióndel contexto de fila actual.

https://www.sqlbi.com/articles/calculated-columns-and-measures-in-dax/

Dado que _Segmentname Fuente es una medida, creo que es difícil lograr en power bi.

saludos

Lin

Community Support Team _ Lin
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

Sí, creo que lo que quería no era posible en PowerBI. Usé otra "solución" que acaba de toma el valor de hace 4 semanas, de hace 8 semanas y de hace 16 semanas en columnas.

¡Gracias por pensar!

Jaap

Anonymous
Not applicable

Llegué tan lejos como para conseguir una fila por cada UUID con cada destino y fuente, simplemente no puedo averiguar cómo agrupar esto por cada combinación de segmentos 😞 (y no, simplemente cambiar el loyaltyID a un recuento no funciona, la medida que utilizo para crear los datos de origen de segmento no juega bien con eso.

Aquí está la medida de referencia:

_Segment en el período de comparación ?
VAR SelectedWeekInPast á SELECTEDVALUE(ProgramWeekSelector[ProgramWeekCombination])
devolución
CALCULAR(
MAX('rfm LoyaltySegmentation'[SegmentName]),
ALL('rfm LoyaltySegmentation'[SegmentName]),
'rfm LoyaltySegmentation'[ProgramWeekCombination] - SelectedWeekInPast
)

Annotation 2020-03-31 180322.png

Anonymous
Not applicable

Las medidas que desea segmentar tienen que evaluar solo las filas con un precio dentro de los segmentos seleccionados. Por lo tanto, suponiendo que SalesAmount es la medida original, se define la medida SalesRange correspondiente que controla la segmentación de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SalesRange :-
CALCULAR (
[SalesAmount],
FILTRO (
VALORES ( Ventas[Precio] ),
COUNTROWS (
FILTRO (
Gamas
Ventas[Precio] > Rangos[Precio mínimo]
&& Ventas[Precio] < Rangos[Precio máximo]
)
) > 0
)
)
Anonymous
Not applicable

Oye Lewis, no puedo decir que siga. Estás hablando de cantidades de ventas, pero sólo tengo nombres de segmentos. La segmentación ya se ha realizado. Mi pregunta es sobre lo que viene después.

Helpful resources

Announcements
PBIApril_Carousel

Power BI Monthly Update - April 2025

Check out the April 2025 Power BI update to learn about new features.

Notebook Gallery Carousel1

NEW! Community Notebooks Gallery

Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.

April2025 Carousel

Fabric Community Update - April 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors
Top Kudoed Authors