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

Get inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.

Reply
Syndicate_Admin
Administrator
Administrator

Obtener valores únicos dentro de valores distintos

Hola gente,

Estoy tratando de obtener el número de valores uninque dentro de una medida de valores distintos. El objetivo es mostrar una columna apilada que muestre el número total de clientes, el número distinto de clientes para ese año, los clientes recurrentes y el número de nuevos clientes para cada año que no aparecieron en años anteriores.

He podido mostrar 3 de los 4 elementos en un solo gráfico, pero no puedo calcular correctamente los nuevos clientes para cada año que no aparecen en años anteriores. Jugué con instrucciones "IF", counta / x y tablas con fechas mínimas, pero no puedo averiguar cómo mostrar este subconjunto de datos.

Mi idea ha sido centrarse en una instrucción "IF" que comprueba si se hace referencia a un cliente único en años anteriores.

Los datos que estoy utilizando son muy simples. Nombre y fecha del cliente (con jerarquía).

Fecha del nombre del cliente

A-cliente enero de 2000

A-cliente enero 2010

A-cliente enero 2021

B-Client enero de 2005

B-Client Enero 2015

B-Client Enero 2021

C-Client Enero 2021

D-Client enero de 2000

D-Client enero de 2005

D-Client Enero 2015

D-Client Enero 2021

Los resultados deben haber contado cada nuevo cliente para cada año comparando la fecha actual con fechas anteriores.

2000 2005 2010 2015 2021

2 1 0 0 1

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

No @kbruce ,

He creado un archivo pbix de ejemplo(ver adjunto) para usted, por favor, compruebe si eso es lo que desea.

1. Crear una columna calculada para obtener el año

Year = YEAR('Table'[Date])

2. Cree dos medidas como se indica a continuación para obtener el recuento de nuevos clientes

Measure = 
VAR _minyear =
    CALCULATE ( MIN ( 'Table'[Year] ), ALL ( 'Table'[Year] ) )
VAR _curyear =
    SELECTEDVALUE ( 'Table'[Year] )
VAR _preclients =
    CALCULATETABLE (
        DISTINCT ( 'Table'[Client name] ),
        FILTER ( ALL ( 'Table' ), 'Table'[Year] < _curyear )
    )
VAR _curclients =
    CALCULATETABLE (
        DISTINCT ( 'Table'[Client name] ),
        FILTER ( 'Table', 'Table'[Year] = _curyear )
    )
RETURN
    IF (
        _curyear = _minyear,
        DISTINCTCOUNT ( 'Table'[Client name] ),
        COUNTROWS ( EXCEPT ( _curclients, _preclients ) )
    )
Count of new clients = SUMX ( VALUES ( 'Table'[Year] ), [Measure] )

yingyinr_0-1627284653009.png

Saludos

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Casi estoy ahí. No tomé en consideración múltiples instancias de un cliente en el mismo año, pero @yingyinr lo hice. Creo que estoy todo listo con estas dos respuestas.

Tras una revisión/retoque adicional, @yingyinr solución no es correcta y no resuelve la última parte de lo que se necesita.

El cliente A aparece varias veces en el mismo año @FrankAT está más cerca, pero la medida que calcula la columna agrega un 1 junto a cada uno de los duplicados, a continuación. Necesito eliminar los duplicados para obtener un recuento preciso.

A-cliente enero de 2000

A-cliente enero de 2000

A-cliente enero de 2000

No @kbruce ,

Como se comprueba en los datos de la tabla en su primer post, estos tres clientes A-cliente son de diferentes años (2000,2010 y 2021) por separado. Así que el cliente A-cliente no es valor duplicado en el mismo año... ¿Podría proporcionar algunos datos de ejemplo con clientes duplicados y su resultado esperado real con la lógica de cálculo correcta y ejemplos específicos. Gracias.

yingyinr_0-1627439716399.png

Saludos

Syndicate_Admin
Administrator
Administrator

No @kbruce ,

He creado un archivo pbix de ejemplo(ver adjunto) para usted, por favor, compruebe si eso es lo que desea.

1. Crear una columna calculada para obtener el año

Year = YEAR('Table'[Date])

2. Cree dos medidas como se indica a continuación para obtener el recuento de nuevos clientes

Measure = 
VAR _minyear =
    CALCULATE ( MIN ( 'Table'[Year] ), ALL ( 'Table'[Year] ) )
VAR _curyear =
    SELECTEDVALUE ( 'Table'[Year] )
VAR _preclients =
    CALCULATETABLE (
        DISTINCT ( 'Table'[Client name] ),
        FILTER ( ALL ( 'Table' ), 'Table'[Year] < _curyear )
    )
VAR _curclients =
    CALCULATETABLE (
        DISTINCT ( 'Table'[Client name] ),
        FILTER ( 'Table', 'Table'[Year] = _curyear )
    )
RETURN
    IF (
        _curyear = _minyear,
        DISTINCTCOUNT ( 'Table'[Client name] ),
        COUNTROWS ( EXCEPT ( _curclients, _preclients ) )
    )
Count of new clients = SUMX ( VALUES ( 'Table'[Year] ), [Measure] )

yingyinr_0-1627284653009.png

Saludos

Syndicate_Admin
Administrator
Administrator

No @kbruce ,

primero cree dos nuevas columnas calculadas, una con número de año y la otra de esta manera:

21-07-_2021_22-07-32.png

Utilice la siguiente medida en una matriz:

21-07-_2021_22-08-46.png

Con un cordial saludo desde la ciudad donde la leyenda del 'Gaitero pied de Hamelin' está en casa
FrankAT (Orgulloso de ser un Datanaut)

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code FABINSIDER for a $400 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

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

March2025 Carousel

Fabric Community Update - March 2025

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

Top Solution Authors
Top Kudoed Authors