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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

Contar distinto en función de la condición

Hola a todos,

He estado luchando durante un par de días con el siguiente caso:

Estos son mis datos:

PARTE NONO ORDEN NOFECHA DE TRANSACCIÓNQty
Abc10014/11/2020200

Abc

10014/11/2020200
Abc10015/11/2020200
Abc10046/11/2020200
Abc10049/11/2020200
Cde10097/11/2020300
Cde10098/11/2020300

Mi intención es calcular cuántos pedidos diferentes se produjeron. En teoría, esto sería un conteo distinto, pero en la práctica, como con la orden de caso no 1004 cuando la orden se detuvo y continuó después de que se hizo la orden 1009. El resultado exacto sería calcular que se trataba de dos órdenes separadas.

El resultado correcto (recuento de órdenes) sería:

1001 a 1

1004 x 2

1009 a 1

--> 4 en lugar de un recuento distinto que resultaría en 3.

¿Alguna solución para esto? Estoy pensando que en base a la fecha de la transacción se podría decir que si el pedido no es el mismo y la fecha desde la última transacción para este producto es dentro de 1 día, entonces es uno, de lo contrario se cuenta en cuántos días diferentes se produjo en.

Gracias de antemano por cualquier ayuda!

5 REPLIES 5
V-lianl-msft
Community Support
Community Support

Hola @oscarrudnas ,

Según su descripción, creé una columna de índice en el editor de consultas como condición de filtro para crear una columna calculada.

diff =
VAR _diff =
    CALCULATE (
        FIRSTNONBLANK ( 'Table (2)'[TRANSACTION DATE], 1 ),
        FILTER ( 'Table (2)', EARLIER ( 'Table (2)'[Index] ) < 'Table (2)'[Index] )
    )
VAR day_ =
    DATEDIFF ( _diff, 'Table (2)'[TRANSACTION DATE], DAY )
RETURN
    IF(ISBLANK(day_),0,day_)

A continuación, cree una medida como esta:

Measure =
VAR diff_1 =
    CALCULATE ( DISTINCTCOUNT ( 'Table (2)'[ORDER NO] ), 'Table (2)'[diff] <= 0 )
VAR diff_2 =
    CALCULATE ( COUNT ( 'Table (2)'[ORDER NO] ), 'Table (2)'[diff] > 0 )
RETURN
    diff_2 + diff_1

V-lianl-msft_0-1604647416259.png

Ejemplo .pbix

Saludos
Liang
Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Anonymous
Not applicable

Gracias por la entrada. Creo que esa solución será mejor que la que derivó de @amitchandakrespuesta.

La solución que tengo ahora es muy lenta, así que podría revisar su solución más tarde cuando tenga tiempo para mejorarla. Esta es la solución:

var _prod = Table[PART NO]
var _datesapplied = Table[DATE_TIME]
var _lastday = 
    maxx(
        FILTER(Table,
             Table[ProductKey] = _prod &&
            Table[DATE_TIME]  < _datesapplied),
        Table[DATE])
var _diff = DATEDIFF(_lastday, _datesapplied,DAY)
return 
SWITCH(TRUE(),
    _diff = 0,0,
    1)

A continuación, creé una medida que calcuó el distinto ORDEN NO donde esta columna es 1

CALCULATE(
    DISTINCTCOUNT('Table'[SOURCE_REFKEY]),
    Table[Shop Order Count] = 1)

¡Gracias por la entrada!

Anonymous
Not applicable

Otra forma de pensar sería contar los días distintos con la excepción de si el mismo orden se produce durante varios días. ¿Quizás eso ayudaría a pensarlo al revés?

amitchandak
Super User
Super User

@oscarrudnas , una columna como esta le dará 0 para la diferencia de fecha mayor que 1. Vea si esto puede ayudar

Columna ?
var _1 á datediff(maxx(FILTER('Table','Table'[ORDER]- EARLIER('Table'[ORDER]) && 'Table'[Date] < EARLIER('Table'[Date])),'Table'[Date]) , 'Table'[Date],day)
devolver if(_1 <-1,1,0)

Anonymous
Not applicable

Gracias por la respuesta. Sin embargo, no funcionó.

Recibo 1 por cada caso. Supongo que tendría que iterar en función de la columna del producto? Ahora el pedido - antes (orden) significaría básicamente (si lo he entendido correctamente) que tomamos la fecha de la orden antes de eso?

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

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