cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Syndicate_Admin
Administrator
Administrator

número de clientes que aumentan su compra

hola

Estoy tratando de hacer una fórmula DAx para obtener el número de clientes cómo aumentar la compra de treir en comparación con el año anterior.

Así que tengo 3 mesas

Empresa(sólo tienen el nombre de las empresas)

Clientes (con nombre de la empresa, código del cliente y las compras del cliente......)

DimDate2 (tabla de fechas personalizada con fechas continuas, número de año, número de mont, número de trimestre, nombre del trimestre........)

Trato de usar un recuento con resumen:

Increase=
 COUNTROWS(
            FILTER (
            SUMMARIZE (
                CLIENTS,
                CLIENTS[COMPANY],
                CLIENTS[CODCLI],
                "ytd", TOTALYTD ( SUM ( CLIENTS[IMPNET] ), DimDate2[DateFull]),
                "LYTD", CALCULATE ( SUM ( CLIENTS[IMPNET] ), SAMEPERIODLASTYEAR ( DimDate2[DateFull] ) ),
                "INCREASE", IF(CALCULATE ( SUM ( CLIENTS[IMPNET] ), SAMEPERIODLASTYEAR ( DimDate2[DateFull] ) )>
                TOTALYTD ( SUM ( CLIENTS[IMPNET] ), DimDate2[DateFull]),1,0)
            ),
           
            [INCREASE]=1
            --[ytd] > [LYTD]
            )
        )

Problema: No devolver los valores esperados, como se puede ver si pongo al cliente, sus compras en el presente año y compras el mismoperiodlastyear hay muchos clientes cómo aumentar su compra, pero cuando pongo el resultado de la fórmula en una matriz (filas -->nombre de la empresa, columnas--> trimestre del año:

Ion_Ander_0-1620922742718.png

¿Pasa algo en el DAX????

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

¿Quieres un consejo dorado? Aquí está: Por favor, deje de usar SUMMARIZE con cálculos debajo de él. SUMMARIZE solo se debe usar para agrupar filas. Nunca por nada más. En su lugar, debe utilizar la combinación SUMMARIZE/ADDCOLUMNS.

Hay un artículo completo sobre www.sqlbi.com por The DAX Gurus que explica por qué no debes hacer lo que tienes.

Y aquí está la medida:

// Assumptions:
// 1. Clients dimension that stores only unique clients.
// 3. Dates dimension for standard date calculations.
// 4. Purchases fact table that joins to the above dimensions
//    via a normal many-to-1 relationship with one-way filtering.
// Please bear in mind that fact tables must always be hidden
// and slicing can be done only via dimensions.

[Total Purchase] = SUM( Purchases[Amount] )

[# Cust. w/ Increase] =
COUNTROWS(
    FILTER( 
        // Purchases[ClientID] joins to Clients[ClientID]
        // and ClientID is a unique client identifier.
        DISTINCT( Purchases[ClientID] ),
        var PurchaseYTD = 
            CALCULATE(
                [Total Purchase],
                // Dates[Date] is the date column
                // without gaps in the date table
                // marked as such in the model. If this
                // is not true, time-intel functions
                // will not work properly.
                DATESYTD( Dates[Date] )
            )
        var PurchaseYTDLY =
            CALCULATE(
                [Total Purchase],
                DATESYTD( 
                    SAMEPERIODLASTYEAR(
                        Dates[Date]
                    )
                )
            )
        var PurchaseHasIncreased =
            PurchaseYTDLY < PurchaseYTD
        return
            PurchaseHasIncreased
    )
)

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

¿Quieres un consejo dorado? Aquí está: Por favor, deje de usar SUMMARIZE con cálculos debajo de él. SUMMARIZE solo se debe usar para agrupar filas. Nunca por nada más. En su lugar, debe utilizar la combinación SUMMARIZE/ADDCOLUMNS.

Hay un artículo completo sobre www.sqlbi.com por The DAX Gurus que explica por qué no debes hacer lo que tienes.

Y aquí está la medida:

// Assumptions:
// 1. Clients dimension that stores only unique clients.
// 3. Dates dimension for standard date calculations.
// 4. Purchases fact table that joins to the above dimensions
//    via a normal many-to-1 relationship with one-way filtering.
// Please bear in mind that fact tables must always be hidden
// and slicing can be done only via dimensions.

[Total Purchase] = SUM( Purchases[Amount] )

[# Cust. w/ Increase] =
COUNTROWS(
    FILTER( 
        // Purchases[ClientID] joins to Clients[ClientID]
        // and ClientID is a unique client identifier.
        DISTINCT( Purchases[ClientID] ),
        var PurchaseYTD = 
            CALCULATE(
                [Total Purchase],
                // Dates[Date] is the date column
                // without gaps in the date table
                // marked as such in the model. If this
                // is not true, time-intel functions
                // will not work properly.
                DATESYTD( Dates[Date] )
            )
        var PurchaseYTDLY =
            CALCULATE(
                [Total Purchase],
                DATESYTD( 
                    SAMEPERIODLASTYEAR(
                        Dates[Date]
                    )
                )
            )
        var PurchaseHasIncreased =
            PurchaseYTDLY < PurchaseYTD
        return
            PurchaseHasIncreased
    )
)

View solution in original post

Gracias por la respuesta y por el consejo.


Pero no estoy seguro de cómo implementar rowcount. Si pongo el PurchaseHasIncreased en atable con ClientId y funciona bien, pero no sé cómo poner esto en el ROWCOUNT.

Probé esto:

COUNTROWS(FILTER(CLIENTS, PurchaseHasIncreased=TRUE))


Pero si pongo en una tarjeta que muestra EN BLANCO, y si se pone en una tabla con el ClientID me muestran números inccrementales

@Ion_Ander,te di una medida. No tengo idea de lo que intentas hacer. Ponga esta medida en imágenes y véalo funcionar. Si desea ver de qué se trata Power BI y cómo funciona, puede ver algunos vids de introducción en YT. Por ejemplo, https://youtu.be/m1eLTtZHGs4

@daxer,Lo siento, probablemente estoy haciendo algo mal, pero si trato de poner esta medida (cambiar los nombres de las tablas para los míos) me dan un error.

Trato de modificar algunas cosas para trabajar, por ejemplo, asumo que [Total Purchase] y [# Cust. w/ Increase] son variables y eliminaron los cochecitos y pusieron el var detrás.
Bbut i tienen problemas, porque pensé que el RETURN debe salir de una variable.

Helpful resources

Announcements
PBI User Groups

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group!

MBAS on Demand

Microsoft Business Applications Summit sessions

On-demand access to all the great content presented by the product teams and community members! #MSBizAppsSummit #CommunityRocks

MBAS Attendee Badge

Claim Your Badge & Digital Swag!

Check out how to claim yours today!

Top Kudoed Authors