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.
Hola a todos,
¿Serías tan amable y me ayudarías con la medida para mis pagos de IVA?
Tengo el IVA como medida [IVA] y fecha de la tabla de fechas que está vinculada a mi mesura a través de relationshop donde tengo fechas como [MMM-YY"] pero para la calucación uso [MM/DD/AAAA]
Siempre tengo un solo día en el mes y no hay huecos.
Sé cómo calcular acumulaciones, pero no sé cómo calular la suma para las vistas previas 3 meses
El pago del IVA de enero es = suma de octubre, noviembre y diciembre
Abr IVA paymet es = suma de enero, febrero y marzo
El pago del IVA de julio es = suma de abril, mayo y junio
El pago del IVA de octubre es = suma de jul, agosto y septiembre
etc. durante unos años
Muchas gracias.
Andrei
Solved! Go to Solution.
@AndrejZitnay , En la tabla de fechas crear una marca
bandera = if(month([Date] en {1,4,7,10}, 1,0)
a continuación, pruebe una medida como esta y filtrar la página de visual en la bandera anterior
Rolling 3 = CALCULATE(sum(Table[Amount]),DATESINPERIOD('Date'[Date],eomonth(MAX('Date'[Date]),-1) ,-3,MONTH))
@AndrejZitnay , En la tabla de fechas crear una marca
bandera = if(month([Date] en {1,4,7,10}, 1,0)
a continuación, pruebe una medida como esta y filtrar la página de visual en la bandera anterior
Rolling 3 = CALCULATE(sum(Table[Amount]),DATESINPERIOD('Date'[Date],eomonth(MAX('Date'[Date]),-1) ,-3,MONTH))
Hola Amit, tengo dudas. ¿Una función de inteligencia de tiempo siempre funcionará correctamente y dará resultados precisos en todos los escenarios en ausencia de una tabla de calendario o tablas con fechas que faltan en la columna de fecha? Especialmente cuando no está marcado como una "Tabla de fechas". @AndrejZitnay dijo que su mesa sólo tiene una cita al mes. En ese escenario, me sentí escéptico sobre el uso de una función de inteligencia de tiempo.
Además, en este artículo en sqlbi by @marcorusso https://www.sqlbi.com/articles/time-intelligence-in-power-bi-desktop/ , se sugirió agregar un ALL(<datefield>) a la función CALCULATE en ausencia de una tabla de fechas.
¿Cuál es la implicación aquí?
Hola @amitchandak ,
Gracias. Funciona.
Hola
Hay muchas maneras de manejar este tipo de cálculo, ya sea mediante el uso de las funciones internas de inteligencia de fecha / hora o mediante la escritura de sus propios cálculos de fecha / hora en DAX. Pero en casi todos los casos que implican cálculos de inteligencia de fecha y hora, el cálculo se basa en tener una tabla de calendario con todas las fechas del año sin ningún vacío y marcarlo como una tabla de fechas. Para escribir tales medidas, el conocimiento sobre las diversas relaciones con la tabla de calendario también es obligatorio, de lo contrario, la fórmula se verá correcta, pero el resultado será incorrecto y a menos que ya conozca el resultado y pueda verificar, no hay manera de que un usuario pueda saber si el resultado es correcto o no.
Usted mencionó que su mesa tiene sólo una fecha al mes... (Si lo entendí correctamente), por lo tanto, no estoy sugiriendo ninguna función de inteligencia de tiempo o funciones personalizadas similares, en su lugar, usaremos sólo dos funciones RANK (para clasificar las fechas en orden ascendente) y un MES (para determinar el número de mes calendario) para llegar a la solución.
A continuación se muestra la solución:
Suponiendo que haya una tabla denominada "Datos de IVA" con los siguientes datos de ejemplo.
Fecha | Iva |
31-05-2021 | 2 |
30-06-2021 | 3 |
31-07-2021 | 4 |
31-08-2021 | 5 |
30-09-2021 | 6 |
31-10-2021 | 7 |
30-11-2021 | 8 |
31-12-2021 | 9 |
31-01-2022 | 10 |
28-02-2022 | 11 |
31-03-2022 | 12 |
30-04-2022 | 13 |
31-05-2022 | 14 |
30-06-2022 | 15 |
31-07-2022 | 16 |
31-08-2022 | 17 |
30-09-2022 | 18 |
31-10-2022 | 19 |
30-11-2022 | 20 |
31-12-2022 | 21 |
31-01-2023 | 22 |
Agregue cuatro columnas calculadas a esta tabla mediante las siguientes expresiones.
Date Rank =
RANKX ( 'VAT Data', 'VAT Data'[Date], 'VAT Data'[Date], ASC, DENSE )
VAT Payment From = 'VAT Data'[Date Rank]-3
VAT Payment To = 'VAT Data'[Date Rank]-1
MonthNumber = MONTH('VAT Data'[Date])
La mesa ahora se verá así...
Fecha | IVA mensual | Rango de fecha | Pago del IVA desde | Pago del IVA a | MesNumber |
31 de mayo de 2021 | 2 | 1 | -2 | 0 | 5 |
30 de junio de 2021 | 3 | 2 | -1 | 1 | 6 |
31 de julio de 2021 | 4 | 3 | 0 | 2 | 7 |
31 de agosto de 2021 | 5 | 4 | 1 | 3 | 8 |
30 de septiembre de 2021 | 6 | 5 | 2 | 4 | 9 |
31 de octubre de 2021 | 7 | 6 | 3 | 5 | 10 |
30 de noviembre de 2021 | 8 | 7 | 4 | 6 | 11 |
31 de diciembre de 2021 | 9 | 8 | 5 | 7 | 12 |
31 de enero de 2022 | 10 | 9 | 6 | 8 | 1 |
28 de febrero de 2022 | 11 | 10 | 7 | 9 | 2 |
31 de marzo de 2022 | 12 | 11 | 8 | 10 | 3 |
30 de abril de 2022 | 13 | 12 | 9 | 11 | 4 |
31 de mayo de 2022 | 14 | 13 | 10 | 12 | 5 |
30 de junio de 2022 | 15 | 14 | 11 | 13 | 6 |
31 de julio de 2022 | 16 | 15 | 12 | 14 | 7 |
31 de agosto de 2022 | 17 | 16 | 13 | 15 | 8 |
30 de septiembre de 2022 | 18 | 17 | 14 | 16 | 9 |
31 de octubre de 2022 | 19 | 18 | 15 | 17 | 10 |
30 de noviembre de 2022 | 20 | 19 | 16 | 18 | 11 |
31 de diciembre de 2022 | 21 | 20 | 17 | 19 | 12 |
31 de enero de 2023 | 22 | 21 | 18 | 20 | 1 |
Ahora cree una medida denominada Pago de IVA con el código siguiente.
VAT Payment =
VAR CurrentMonth =
SELECTEDVALUE ( 'VAT Data'[Date Rank] )
VAR FromMonth = CurrentMonth - 3
VAR ToMonth = CurrentMonth - 1
VAR Amount =
SUMX (
FILTER (
ALL ( 'VAT Data' ),
'VAT Data'[Date Rank] >= FromMonth
&& 'VAT Data'[Date Rank] <= ToMonth
),
'VAT Data'[Monthly VAT]
)
VAR CurrentMonthNumber =
SELECTEDVALUE ( 'VAT Data'[MonthNumber] )
VAR ReturnValue =
IF ( CurrentMonthNumber IN { 1, 4, 7, 10 }, Amount, BLANK () )
RETURN
ReturnValue
Esto dará el siguiente resultado.
En realidad, el código DAX mencionado aquí utiliza un enfoque muy rudimentario sin utilizar ninguna de las funciones de inteligencia de fecha y hora incorporadas. No me ha preocupado el mejor o más eficiente método, y sólo he utilizado lo que se adapte a este escenario donde no hay una tabla de fechas estándar disponible y sólo hay una fecha para cada mes.
Pero si pudiera cambiar a un modelo estándar con una tabla de fechas adecuada, puede reescribir todo el asunto utilizando una combinación de funciones como SUMX, EDATE, STARTOFTHEMONTH, ENDOFTHEMONTH, DATESBETWEEN, SELECTEDVALUE, etc...
Depende de usted si desea cambiar el modelo de datos en aras de utilizar dichas funciones o simplemente utilizar las funciones que se ajustan al modelo actual.
Hola @sreenathv ,
Muchas gracias por su ayuda.
He intentado seguir tu trabajo pero no tengo otucome.
(No hay ningún error en la fórmula sólo el resultado está en blanco)
¿Me perdí algo?
Mi base de IVA proviene de este measrue
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |