cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Helper III
Helper III

Mostrar datos para categorías que no tienen ventas

Tengo la siguiente medida para calcular los días hábiles desde que se realizó la última venta del mes en cada categoría de artículo, según el mes que elijo de mi segmentación.
Por ejemplo, si elijo febrero y la última venta se hizo 25/2/2020, entonces la medida mostrará 3 (business_days).
En el caso de que no haya venta realizada en el mes seleccionado, la medida mirará hacia atrás en la fecha hasta que encuentre la última venta realizada.
Así que si elijo marchar y no hay venta hecha en marzo, la medida mostrará 22 (días hábiles para todo el mes de marzo) más los 3 días hábiles de febrero, por lo que un total de 22 + 3 x 25.
Fir más de todo, ¿hay una mejor manera de hacer esto que la medida que tengo a continuación?
Y lo que es más importante, me gustaría mostrar un número en cada categoría, incluso si no hay venta hecha en absoluto.
Por ejemplo, con la medida que he creado, si una categoría no tiene venta, entonces veo en blanco en la matriz. En su lugar, me gustaría que mostrara el número de días hábiles desde el comienzo del año. (en la imagen he marcado los espacios en blanco con lápiz rojo)
Business_days_since_last_sale de la casa de los Business_days_since_last_sale
CALCULATE(
CALCULATE(
COUNTA (fechas[BUSINESS_DT]),
DATESBETWEEN ( dates[BUSINESS_DT],[last_sale_date_in_month], ENDOFMONTH(dates[BUSINESS_DT])),
ALLEXCEPT(dates,dates[BUSINESS_DT] )
)
,USERELATIONSHIP(dates[BUSINESS_DT], Sales[sale_date])
)
aaa.png

4 REPLIES 4
Community Support
Community Support

Hola, @Dev13

Según su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.

Mesa:

b1.png

Calendario (una tabla calculada):

Calendar = CALENDARAUTO()

Hay una relación entre dos tablas. Puede crear una columna calculada y una medida como la siguiente.

Columna calculada:

YearMonth = YEAR([Date])*100+MONTH([Date])

Medida:

Result = 
var tab1 = 
ADDCOLUMNS(
    CROSSJOIN(
        CALCULATETABLE(
           DISTINCT('Calendar'[YearMonth]),
           ALL('Calendar')
        ),
        CALCULATETABLE(
            DISTINCT('Table'[Category]),
            ALL('Table')
        )
    ),
    "Result",
    var s = 
    CALCULATE(
       MAX('Table'[Date]),
       FILTER(
           ALL('Table'),
           [Category]=EARLIER('Table'[Category])&&
           RELATED('Calendar'[YearMonth])=EARLIER('Calendar'[YearMonth])
       )
    )
    var e = EOMONTH(s,0)
    return
    IF(
        s = e,
        0,
        COUNTROWS(
            FILTER(
                CALENDAR(
                    s+1,
                    e
                ),
                NOT(WEEKDAY([Date]) in {1,7})
            )
        )+0
    )
)

var newtab  =
ADDCOLUMNS(
    CROSSJOIN(
        DISTINCT('Calendar'[YearMonth]),
        DISTINCT('Table'[Category])
    ),
    "Re",
    SUMX(
        FILTER(
            tab1,
            [YearMonth]<=EARLIER('Calendar'[YearMonth])&&
            [Category]=EARLIER('Table'[Category])&&
            LEFT([YearMonth],4)=LEFT(EARLIER('Calendar'[YearMonth]),4)
        ),
        [Result]
    )
)      
return
SUMX(
        newtab,
        [Re]
)

Resultado:

b2.png

Saludos

Allan

Si este post ayuda, entonces considere Aceptarlo como la solución para ayudar a otros miembros a encontrarlo más rápido.

Hola @v-alq-msft, su medida parece que funciona también.

Pero todavía tiene espacios en blanco en la tabla donde no hay ventas realizadas (por ejemplo, 202003 para c2, 202007 para c1 etc.)

He probado una medida separada para cada categoría y he logrado no tener espacios en blanco.

Calculé los valores para cada columna de categoría por separado.

Pero ahora necesito otra columna (MIN) para calcular el valor mínimo de cada ROW usando una medida.

La opción power bi subtotals no cubre mi necesidad.

Por favor, mire la imagen de abajo para una mejor comprensión.

Gracias.

Dev13_1-1606473491667.png

Super User IV
Super User IV

@Dev13 , Pruebe una medida como

medida :
var _max á maxx(ALLSELECTED('DATE'[Date]),'DATE'[Date] )
devolución
averageX(summarize(Table, Table[Item CATEGORY],"_1", datediff( calculate(lastnonblankvalue('DATE'[Date], max(Table[[BUSINESS_DT])), filter(allselected(Table),
Tabla [Categoría de elementos]-max(Tabla[Categoría de elemento])), filter(all('Date'),'DATE'[Fecha]<_max)),_max)), [_1])



Did I answer your question? Mark my post as a solution! Appreciate your Kudos!!
Dashboard of My Blogs !! YouTube Channel !! Connect on Linkedin

Proud to be a Super User!

Hola Amitchandak,

A la función datediff le falta un argumento.

Y veo que usted está haciendo averageX también. No creo que esto sea lo que estoy buscando.

En esencia, quiero encontrar el número de días hábiles pasados de la última venta en el mes seleccionado por categoría.
Y si no hay venta en ese mes seleccionado, mostrar los días de la venta más reciente (incluso si es en otros meses antes de la seleccionada)

Helpful resources

Announcements
secondImage

Congratulations!

We are excited to announce the Power BI Super Users!

Wave Release 2

Check out the updates in Power BI.

Overview of Power BI 2020 release wave 2!

Microsoft Ignite

Microsoft Ignite

Join digitally, March 2–4, 2021 to explore new tech that's ready to implement. Experience the keynote in mixed reality through AltspaceVR!

secondImage

The largest Power BI virtual conference

100+ sessions, 100+ speakers, Product managers, MVPs, and experts. All about Power BI. Attend online or watch the recordings.