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
Syndicate_Admin
Administrator
Administrator

Filtrar para calcular datos entre el día 1 y la fecha actual/fecha de hoy para cada mes

Hola

Estoy buscando una manera de calcular mis datos para cada mes desde la 1ª fecha del mes hasta la fecha actual. Como si hoy fuera 21 de octubre, entonces todos los datos de cada mes se calcularán desde el día 1 hasta el día 21.

1 ene a 21 ene,

1 feb a 21 feb,
1 mar a 21 mar

y así sucesivamente.

Ya sé que esto es posible mediante el uso de Slicer, esto puede cortar manualmente el valor de los datos por día en la tabla Fecha.

jonathangabe_0-1634885126630.png


¿Cómo hago el filtro (como lo hizo la segmentación de datos) dentro de la fórmula Calcular para obtener el día 1 a la fecha actual / fecha de hoy para cada mes?

2 ACCEPTED SOLUTIONS

Gracias por la aclaración. Aquí hay una manera de hacerlo.

Hasta el mismo día =
VAR hoy =
DÍA ( HOY () )
VAR mindate =
MIN ( 'Fecha'[Fecha] )
VAR maxdate =
FECHA ( AÑO ( mindate ), MES ( mindate ), hoy hoy)
DEVOLUCIÓN
CALCULAR (
[Ventas totales],
FILTER ( ALL ( 'Date' ), 'Date'[Date] >= mindate && 'Date'[Date] <= maxdate )
)

Palmadita

View solution in original post

Syndicate_Admin
Administrator
Administrator

Allí, @jonathangabe

Tu caso parece muy interesante, me tomó un tiempo y luego se me ocurrió una solución, y si te ayuda, eso es genial.

Aquí está mi medida:

Measure__lastdate = 
var _r=CALCULATE(DAY(MAX([Date])),ALL('Table'))
var _result=CALCULATE(SUM('Table'[Value]),FILTER(ALL('Table'),YEAR('Table'[Date])=YEAR(MAX('Table'[Date]))&&MONTH('Table'[Date])=MONTH(MAX('Table'[Date]))&&'Table'[Date]<=EOMONTH(MAX('Table'[Date]),-1)+_r))
return _result


Si desea que los datos cambien dinámicamente como lo hace la segmentación de datos anterior, cree un parámetro de qué pasaría si.

por lo que la medida:

Measure = 
var _result=CALCULATE(SUM('Table'[Value]),FILTER(ALL('Table'),YEAR('Table'[Date])=YEAR(MAX('Table'[Date]))&&MONTH('Table'[Date])=MONTH(MAX('Table'[Date]))&&'Table'[Date]<=EOMONTH(MAX('Table'[Date]),-1)+[Days Value]))
return _result

Datos:

vangzhengmsft_2-1635142091892.png

Resultado:

vangzhengmsft_1-1635142075921.png

Consulte el archivo adjunto a continuación para obtener más detalles. Espero que esto ayude.

Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng


Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

View solution in original post

8 REPLIES 8
Syndicate_Admin
Administrator
Administrator

Allí, @jonathangabe

Tu caso parece muy interesante, me tomó un tiempo y luego se me ocurrió una solución, y si te ayuda, eso es genial.

Aquí está mi medida:

Measure__lastdate = 
var _r=CALCULATE(DAY(MAX([Date])),ALL('Table'))
var _result=CALCULATE(SUM('Table'[Value]),FILTER(ALL('Table'),YEAR('Table'[Date])=YEAR(MAX('Table'[Date]))&&MONTH('Table'[Date])=MONTH(MAX('Table'[Date]))&&'Table'[Date]<=EOMONTH(MAX('Table'[Date]),-1)+_r))
return _result


Si desea que los datos cambien dinámicamente como lo hace la segmentación de datos anterior, cree un parámetro de qué pasaría si.

por lo que la medida:

Measure = 
var _result=CALCULATE(SUM('Table'[Value]),FILTER(ALL('Table'),YEAR('Table'[Date])=YEAR(MAX('Table'[Date]))&&MONTH('Table'[Date])=MONTH(MAX('Table'[Date]))&&'Table'[Date]<=EOMONTH(MAX('Table'[Date]),-1)+[Days Value]))
return _result

Datos:

vangzhengmsft_2-1635142091892.png

Resultado:

vangzhengmsft_1-1635142075921.png

Consulte el archivo adjunto a continuación para obtener más detalles. Espero que esto ayude.

Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng


Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Syndicate_Admin
Administrator
Administrator

@jonathangabe , use datesytd con la ayuda de la tabla de fechas

ejemplo

MTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESMTD('Date'[Date]))

basado en hoy

MTD=
var _min = eomonth(today(),-1)+1
var _max = hoy()
devolución
CALCULATE(sum('Table'[Qty]), FILTER(ALL('Table'),'Table'[Date] >= _min && 'Table'[Date] <=_max ) )

Power BI: mes a mes con o sin inteligencia de tiempo
https://medium.com/@amitchandak.1978/power-bi-mtd-questions-time-intelligence-3-5-64b0b4a4090e
https://www.youtube.com/watch?v=6LUBbvcxtKA

Hola @amitchandak,gracias por su respuesta.
Ya he probado su fórmula de solución basada en hoy, pero el resultado solo se muestra hoy mes. Quiero obtener el resultado de cada mes, no solo de octubre (mes de hoy). Eso está cerca, pero no es lo que quiero lograr.

Pruebe el primer ejemplo de Amit con DATESMTD(). Si tiene una tabla de fechas (y marcada como una tabla de fechas), debería funcionar.

Palmadita

Hola @mahoneypat,gracias por su respuesta.

Lo siento, parece que no expliqué completamente lo que quiero lograr aquí. Por lo que da @amitchandak, ya tengo el cálculo para MTD.


Lo que estoy tratando de lograr es calcular mis datos para cada mes en función de la fecha de hoy.
Ejemplo:

Si la fecha de hoy es el 22 de octubre, entonces el cálculo solo mostrará para cada mes del rango 1 al 22.
1 ene a 22 ene
1 feb a 22 feb

y así sucesivamente.

Así que no el mes hasta la fecha, esto solo muestra este mes hasta la fecha de hoy, pero el otro mes muestra el total hasta el final del mes.
Todavía no puedo hacer esto sin usar Slicer, si no hay forma de lograr esto sin él, entonces tal vez realmente tenga que usar manualmente el Slicer para cortar los datos entre el rango de días que quiero.

jonathangabe_0-1634869814522.png

Gracias por la aclaración. Aquí hay una manera de hacerlo.

Hasta el mismo día =
VAR hoy =
DÍA ( HOY () )
VAR mindate =
MIN ( 'Fecha'[Fecha] )
VAR maxdate =
FECHA ( AÑO ( mindate ), MES ( mindate ), hoy hoy)
DEVOLUCIÓN
CALCULAR (
[Ventas totales],
FILTER ( ALL ( 'Date' ), 'Date'[Date] >= mindate && 'Date'[Date] <= maxdate )
)

Palmadita

@mahoneypat Muchas gracias, su solución es perfecta.

Trato de modificar un poco tu fórmula. Cambio el DAY(TODAY()) a DAY(LASTDATE[mydatetable]) porque quiero hacer referencia a la última Fecha en mi tabla para el FILTER, pero obtuve un error,
"Un argumento de la función 'DATE' tiene el tipo de datos incorrecto o el resultado es demasiado grande o demasiado pequeño"
Supongo que el resultado de LASTDATE[mydatetable] es demasiado grande, pero todavía no estoy seguro. Tengo una tabla de fecha que tiene relación con mi columna de fecha en mi tabla, todavía me pregunto si tengo que usar la tabla de fechas o la columna de fecha de mis datos.

Puede probar MAXX(ALL(Table[Date]), Table[Date]) para obtener la última fecha de su tabla a pesar de los filtros.

Palmadita

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.