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

The ultimate Microsoft Fabric, Power BI, Azure AI & SQL learning event! Join us in Las Vegas from March 26-28, 2024. Use code MSCUST for a $100 discount. Register Now

Reply
Dev13
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
v-alq-msft
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

amitchandak
Super User
Super User

@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])

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
March Fabric Community Update

Fabric Community Update - March 2024

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

Fabric Community Conference

Microsoft Fabric Community Conference

Join us at our first-ever Microsoft Fabric Community Conference, March 26-28, 2024 in Las Vegas with 100+ sessions by community experts and Microsoft engineering.

Fabric Partner Community

Microsoft Fabric Partner Community

Engage with the Fabric engineering team, hear of product updates, business opportunities, and resources in the Fabric Partner Community.

Top Solution Authors