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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Anonymous
Not applicable

Ayuda con la solución para múltiples criterios

¡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_keymarket_keycustomer_keyorder_numberorder_datelatest_order_date
111123100109-jan-1810-dec-19
111123102010-dec-1910-dec-19
211123110005-jan-1705-jan-17
311123120020-jun-1820-jun-18
114125120111-jan-2011-jan-20
114126120212-jan-2012-jan-20
214125120502-feb-2002-feb-20
314127120610-mar-2010-mar-20
112128120710-mar-2010-mar-20
212129120810-jun-2010-jun-20
312129120910-jul-2010-jul-20
114130121010-aug-2010-aug-20
214130121111-aug-2011-aug-20
114131121212-aug-2012-aug-20
212132121310-jul-2010-jul-20
113133100510-aug-1710-jun-20
113133121510-jun-2010-jun-20
213133122005-jun-1905-jun-19
313133122511-mar-1911-mar-19

Tabla de marca

Brand_keyBrand_name
1lens1
2lens2
3lens3

Tabla de mercado

Market_keyMarket_NAME
11Finlandia
12Dinamarca
13Noruega
14Suecia

Tabla de clientes

CUSTOMER_KEYCUSTOMER_EMAIL
123123@gmail.com
125125@gmail.com
126126@gmail.com
127127@gmail.com
128128@gmail.com
129129@gmail.com
130130@gmail.com
131131@gmail.com
132132@gmail.com
133133@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!

1 ACCEPTED SOLUTION
Icey
Community Support
Community Support

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.

2.PNG1.PNG

3. Prueba.

multi.gif

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.

View solution in original post

2 REPLIES 2
Icey
Community Support
Community Support

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.

2.PNG1.PNG

3. Prueba.

multi.gif

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.

Fowmy
Super User
Super User

@mg_2000

He elaborado una solución, pero no estaba seguro acerca de la última pregunta, por favor, compruebe.

Puede descargar el archivo: HERE

Fowmy_0-1597409225829.png



________________________

¿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 🙂

Youtube Linkedin

Did I answer your question? Mark my post as a solution! and hit thumbs up


Subscribe and learn Power BI from these videos

Website LinkedIn PBI User Group

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

Power BI Carousel June 2024

Power BI Monthly Update - June 2024

Check out the June 2024 Power BI update to learn about new features.

RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

Top Solution Authors