The ultimate Microsoft Fabric, Power BI, Azure AI, and SQL learning event! Join us in Stockholm, Sweden from September 24-27, 2024.
2-for-1 sale on June 20 only!
Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
¡Hola!
Soy bastante nuevo en power-bi y necesito ayuda con una fórmula y lógica para un análisis del cliente. Dado que no pude encontrar ningún problema similar en el foro trato de explicar mi situación a continuación.
La empresa para la que trabajo 3 marcas diferentes, las llama lens1, lens2 y lens3. Lo que ahora necesito controlar es (1) cuántos clientes tenemos en cada marca (con el mismo mercado), (2) cuántos clientes pertenece a más de una marca, y también (3) whithin qué marca tuvo lugar la última compra.
A continuación se adjuntan datos de ejemplo:
Tabla de ventas
Brand_key | market_key | customer_key | order_number | order_date | latest_order_date |
1 | 11 | 123 | 1001 | 09-jan-18 | 10-dec-19 |
1 | 11 | 123 | 1020 | 10-dec-19 | 10-dec-19 |
2 | 11 | 123 | 1100 | 05-jan-17 | 05-jan-17 |
3 | 11 | 123 | 1200 | 20-jun-18 | 20-jun-18 |
1 | 14 | 125 | 1201 | 11-jan-20 | 11-jan-20 |
1 | 14 | 126 | 1202 | 12-jan-20 | 12-jan-20 |
2 | 14 | 125 | 1205 | 02-feb-20 | 02-feb-20 |
3 | 14 | 127 | 1206 | 10-mar-20 | 10-mar-20 |
1 | 12 | 128 | 1207 | 10-mar-20 | 10-mar-20 |
2 | 12 | 129 | 1208 | 10-jun-20 | 10-jun-20 |
3 | 12 | 129 | 1209 | 10-jul-20 | 10-jul-20 |
1 | 14 | 130 | 1210 | 10-aug-20 | 10-aug-20 |
2 | 14 | 130 | 1211 | 11-aug-20 | 11-aug-20 |
1 | 14 | 131 | 1212 | 12-aug-20 | 12-aug-20 |
2 | 12 | 132 | 1213 | 10-jul-20 | 10-jul-20 |
1 | 13 | 133 | 1005 | 10-aug-17 | 10-jun-20 |
1 | 13 | 133 | 1215 | 10-jun-20 | 10-jun-20 |
2 | 13 | 133 | 1220 | 05-jun-19 | 05-jun-19 |
3 | 13 | 133 | 1225 | 11-mar-19 | 11-mar-19 |
Tabla de marca
Brand_key | Brand_name |
1 | lens1 |
2 | lens2 |
3 | lens3 |
Tabla de mercado
Market_key | Market_NAME |
11 | Finlandia |
12 | Dinamarca |
13 | Noruega |
14 | Suecia |
Tabla de clientes
CUSTOMER_KEY | CUSTOMER_EMAIL |
123 | 123@gmail.com |
125 | 125@gmail.com |
126 | 126@gmail.com |
127 | 127@gmail.com |
128 | 128@gmail.com |
129 | 129@gmail.com |
130 | 130@gmail.com |
131 | 131@gmail.com |
132 | 132@gmail.com |
133 | 133@gmail.com |
Cabe mencionar que la última fecha de pedido dentro de la tabla de ventas es una marca calculada basada en columnas, mercado y clave de cliente. La fecha de pedido más reciente siempre será máxima.
Salida esperada de datos de muestra:
Total sin clientes en la lente 1 | 7 |
Total sin clientes en la lente 2 | 6 |
Total sin clientes en la lente 3 | 4 |
Clientes comprados en lens1&lens2 (en el mismo mercado) | 4 |
Clientes comprados en lens1&lens3 (en el mismo mercado) | 2 |
Clientes comprados en lens2&lens3 (en el mismo mercado) | 3 |
Cliente comprado en lens1&lens2 con la última compra en lente1 (en el mismo mercado) | 2 |
Cliente comprado en lens2&lens3 con última compra en lente2 (en el mismo mercado) | 1 |
Cliente comprado en lens1&lens3 con la última compra en lente1 (en el mismo mercado) | 2 |
Explicación en palabras
Es necesario responder a las tres preguntas siguientes:
(1) ¿Cuál es el número total de clientes para cada marca?
Primero necesito entender cuántos clientes tengo realmente para cada marca. La marca se llama lente1, lente2, lente3.
(2) ¿Cuántos clientes pertenece a más de una marca?
Cuando sé la respuesta de (1), necesito subestimar cuántos clientes son clientes / han comprado de otra marca también. Por ejemplo, ningún cliente en lens1 y lens2 está en estos datos de muestra 4.
(3) ¿Dónde se llevó el último lugar de compra?
Al saber qué clientes que pertenecen a más de una marca (2), necesito mantener la última compra. Por ejemplo, los clientes de lens1 y lens2, donde la última compra fue en lens1, están en los datos de muestra 2.
Espero que alguien tenga la idea de cómo hacerlo - Gracias de antemano!
Solved! Go to Solution.
Hola @mg_2000 ,
¿Qué te parece esto?
1. Crear medidas.
Customers purchased more brand =
COUNTROWS (
FILTER (
VALUES ( Sales[customer_key] ),
COUNTROWS (
INTERSECT (
CALCULATETABLE ( VALUES ( Sales[Brand_key] ) ),
VALUES ( Brand[Brand_key] )
)
)
= COUNTROWS ( VALUES ( Brand[Brand_key] ) )
)
)
Customers purchased more brand 2 =
VAR MinBrandKey =
MIN ( Brand[Brand_key] )
VAR t =
SUMMARIZE (
FILTER (
ADDCOLUMNS (
Sales,
"Last_", CALCULATE (
MAX ( Sales[latest_order_date] ),
FILTER (
ALLSELECTED ( Sales ),
Sales[market_key] = MAX ( Sales[market_key] )
&& Sales[customer_key] = MAX ( Sales[customer_key] )
)
)
),
[Last_] = [latest_order_date]
&& [Brand_key] = MinBrandKey
),
[customer_key]
)
RETURN
COUNTROWS (
FILTER (
t,
COUNTROWS (
INTERSECT (
CALCULATETABLE ( VALUES ( Sales[Brand_key] ) ),
VALUES ( Brand[Brand_key] )
)
)
= COUNTROWS ( VALUES ( Brand[Brand_key] ) )
)
)
Customers purchased more brand and latest order date in min selected brand =
SUMX ( VALUES ( Sales[customer_key] ), [Customers purchased more brand 2] )
Title 1 =
IF (
COUNTROWS ( VALUES ( Brand ) ) = 1,
"Total no customers in " & SELECTEDVALUE ( Brand[Brand_name] ),
"Customers purchased in "
& CONCATENATEX ( VALUES ( Brand[Brand_name] ), [Brand_name], " & " ) & " (in same market)"
)
Title 2 =
IF (
COUNTROWS ( VALUES ( Brand ) ) = 1,
"Total no customers in " & SELECTEDVALUE ( Brand[Brand_name] ),
"Customer purchased in "
& CONCATENATEX ( VALUES ( Brand[Brand_name] ), [Brand_name], " & " ) & " with latest purchase in "
& MIN ( Brand[Brand_name] ) & " in same market"
)
Total no. customers = DISTINCTCOUNT(Sales[customer_key])
2. Cree objetos visuales.
3. Prueba.
BTW, archivo .pbix adjunto.
Saludos
Icey
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @mg_2000 ,
¿Qué te parece esto?
1. Crear medidas.
Customers purchased more brand =
COUNTROWS (
FILTER (
VALUES ( Sales[customer_key] ),
COUNTROWS (
INTERSECT (
CALCULATETABLE ( VALUES ( Sales[Brand_key] ) ),
VALUES ( Brand[Brand_key] )
)
)
= COUNTROWS ( VALUES ( Brand[Brand_key] ) )
)
)
Customers purchased more brand 2 =
VAR MinBrandKey =
MIN ( Brand[Brand_key] )
VAR t =
SUMMARIZE (
FILTER (
ADDCOLUMNS (
Sales,
"Last_", CALCULATE (
MAX ( Sales[latest_order_date] ),
FILTER (
ALLSELECTED ( Sales ),
Sales[market_key] = MAX ( Sales[market_key] )
&& Sales[customer_key] = MAX ( Sales[customer_key] )
)
)
),
[Last_] = [latest_order_date]
&& [Brand_key] = MinBrandKey
),
[customer_key]
)
RETURN
COUNTROWS (
FILTER (
t,
COUNTROWS (
INTERSECT (
CALCULATETABLE ( VALUES ( Sales[Brand_key] ) ),
VALUES ( Brand[Brand_key] )
)
)
= COUNTROWS ( VALUES ( Brand[Brand_key] ) )
)
)
Customers purchased more brand and latest order date in min selected brand =
SUMX ( VALUES ( Sales[customer_key] ), [Customers purchased more brand 2] )
Title 1 =
IF (
COUNTROWS ( VALUES ( Brand ) ) = 1,
"Total no customers in " & SELECTEDVALUE ( Brand[Brand_name] ),
"Customers purchased in "
& CONCATENATEX ( VALUES ( Brand[Brand_name] ), [Brand_name], " & " ) & " (in same market)"
)
Title 2 =
IF (
COUNTROWS ( VALUES ( Brand ) ) = 1,
"Total no customers in " & SELECTEDVALUE ( Brand[Brand_name] ),
"Customer purchased in "
& CONCATENATEX ( VALUES ( Brand[Brand_name] ), [Brand_name], " & " ) & " with latest purchase in "
& MIN ( Brand[Brand_name] ) & " in same market"
)
Total no. customers = DISTINCTCOUNT(Sales[customer_key])
2. Cree objetos visuales.
3. Prueba.
BTW, archivo .pbix adjunto.
Saludos
Icey
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
@mg_2000
He elaborado una solución, pero no estaba seguro acerca de la última pregunta, por favor, compruebe.
Puede descargar el archivo: HERE
________________________
¿He respondido a tu pregunta? Marque este post como una solución, esto ayudará a otros!.
Haga clic en el icono Thumbs-Up a la derecha si le gusta esta respuesta 🙂
⭕ Subscribe and learn Power BI from these videos
⚪ Website ⚪ LinkedIn ⚪ PBI User Group
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
Check out the June 2024 Power BI update to learn about new features.