Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
Hola a todos,
Necesito ayuda con un DAX para la columna calculada.
Abajo está el ejemplo:
Tengo fecha, el primer valor de apertura y el pago (campos verdes). Todos los demás campos dependen uno del otro.
Aquí está mi fórmula de prueba, pero no funciona 😞
Gracias de antemano
Hola @Ashish_Mathur ,
Gracias por su respuesta.
¿Puedo pedirle ayuda con las medidas?
Gracias de antemano
hola
Comparta la estructura exacta de sus datos de entrada en un formulario que puedo pegar en un archivo de MS Excel.
hola
Aquí está el ejemplo de entrada:
identificación | start_date | end_date | abertura | mensualidad | tipos de interés |
A1 | 01/09/2014 | 01/09/2024 | 539,057 | 5400 | 0.003 |
A2 | 01/09/2016 | 01/09/2021 | 300,500 | 3000 | 0.0025 |
Y aquí está la salida:
A | B | C | D | E | F |
identificación | mes | abertura | pago | interés | cierre |
A1 | 01/09/2014 | 539,057 | 5400 | 1601 | 535,258 |
A1 | 01/10/2014 | 535,258 | 5400 | 1590 | 531,448 |
A1 | 01/11/2014 | 531,448 | 5400 | 1578 | 527,626 |
A1 | 01/12/2014 | Cierre del mes anterior | 5400 | (Cierre anterior mes C - pago D) * tasa | C+D-E |
A1 | 01/01/2015 | 5400 | |||
A1 | 01/02/2015 | 5400 | |||
A1 | 01/09/2024 | 5400 | |||
Gracias, agradezco su experiencia!
Hay @astojanac,
¿Cómo obtener la columna "interés"? Basado en su fórmula,(Apertura-Pago)/100 no es igual a 1601
Saludos
Kelly
¿Respondí a su pregunta? Marcar mi post como una solución!
Hay @astojanac,
Veo, pero causará un problema de dependencia circular si usa 1 columna fija para obtener 3 columnas dinámicas.
como:
Es mejor que proporcione 2 columnas fijas para calcular otras 2 columnas dinámicas.
Saludos
Kelly
¿Respondí a su pregunta? Marcar mi post como una solución!
HOLA @v-kelly-msft ,
Traté de cambiar la lógica, así que ¿hay posibilidad de que pueda ayudarme si solo tenemos una columna / medida para calcular?
Por favor, encuentre la salida de ejemplo en el siguiente enlace:
https://www.dropbox.com/s/hlnfvukew1q3ah5/Sample%20data.xlsx?dl=0
gracias
Alex
Hay @astojanac,
Lo siento, olvidé mencionar que dado que el bucle no está permitido en el cálculo de dax, solo tenemos una solución para hacer un cálculo de suma, para multiplicar, no hay una buena solución que espere codificación rígida.
Revisa mi fórmula a continuación:
Para la medida:
Measure =
VAR _mindate =
MINX ( ALL ( 'Table' ), 'Table'[Date] )
VAR _previousinterest =
CALCULATE (
MAX ( 'Table'[Interest] ),
FILTER ( ALL ( 'Table' ), 'Table'[Column] = MAX ( 'Table'[Column] ) - 1 )
)
VAR _opening =
CALCULATE (
MAX ( 'Table'[Opening] ),
FILTER ( ALL ( 'Table' ), 'Table'[Date] = _mindate )
)
VAR _startinterest =
CALCULATE (
MAX ( 'Table'[Interest] ),
FILTER ( ALL ( 'Table' ), 'Table'[Date] = _mindate )
)
VAR _line1 =
_opening - MAX ( 'Table'[Payment] )
+ ( _opening - MAX ( 'Table'[Payment] ) ) * _startinterest
VAR _line2 =
_line1 - MAX ( 'Table'[Payment] )
+ ( _line1 - MAX ( 'Table'[Payment] ) )
* CALCULATE (
MAX ( 'Table'[Interest] ),
FILTER ( ALL ( 'Table' ), 'Table'[Column] = 2 )
)
VAR _line3 =
_line2 - MAX ( 'Table'[Payment] )
+ ( _line2 - MAX ( 'Table'[Payment] ) )
* CALCULATE (
MAX ( 'Table'[Interest] ),
FILTER ( ALL ( 'Table' ), 'Table'[Column] = 3 )
)
VAR _line4 =
_line3 - MAX ( 'Table'[Payment] )
+ ( _line3 - MAX ( 'Table'[Payment] ) )
* CALCULATE (
MAX ( 'Table'[Interest] ),
FILTER ( ALL ( 'Table' ), 'Table'[Column] = 4 )
)
VAR _line5 =
_line4 - MAX ( 'Table'[Payment] )
+ ( _line4 - MAX ( 'Table'[Payment] ) )
* CALCULATE (
MAX ( 'Table'[Interest] ),
FILTER ( ALL ( 'Table' ), 'Table'[Column] = 5 )
)
VAR _line6 =
_line5 - MAX ( 'Table'[Payment] )
+ ( _line5 - MAX ( 'Table'[Payment] ) )
* CALCULATE (
MAX ( 'Table'[Interest] ),
FILTER ( ALL ( 'Table' ), 'Table'[Column] = 6 )
)
RETURN
SWITCH (
MAX ( 'Table'[Column] ),
1, _line1,
2, _line2,
3, _line3,
4, _line4,
5, _line5,
6, _line6
)
Para la columna:
Column 2 =
VAR _mindate =
MINX ( 'Table', 'Table'[Date] )
VAR _previousinterest =
CALCULATE (
MAX ( 'Table'[Interest] ),
FILTER ( 'Table', 'Table'[Column] = EARLIER ( 'Table'[Column] ) - 1 )
)
VAR _opening =
CALCULATE (
MAX ( 'Table'[Opening] ),
FILTER ( ALL ( 'Table' ), 'Table'[Date] = _mindate )
)
VAR _startinterest =
CALCULATE (
MAX ( 'Table'[Interest] ),
FILTER ( ALL ( 'Table' ), 'Table'[Date] = _mindate )
)
VAR _line1 = _opening - 'Table'[Payment] + ( _opening - 'Table'[Payment] ) * _startinterest
VAR _line2 =
_line1 - 'Table'[Payment]
+ ( _line1 - 'Table'[Payment] )
* CALCULATE ( MAX ( 'Table'[Interest] ), FILTER ( 'Table', 'Table'[Column] = 2 ) )
VAR _line3 =
_line2 - 'Table'[Payment]
+ ( _line2 - 'Table'[Payment] )
* CALCULATE ( MAX ( 'Table'[Interest] ), FILTER ( 'Table', 'Table'[Column] = 3 ) )
VAR _line4 =
_line3 - 'Table'[Payment]
+ ( _line3 - 'Table'[Payment] )
* CALCULATE ( MAX ( 'Table'[Interest] ), FILTER ( 'Table', 'Table'[Column] = 4 ) )
VAR _line5 =
_line4 - 'Table'[Payment]
+ ( _line4 - 'Table'[Payment] )
* CALCULATE ( MAX ( 'Table'[Interest] ), FILTER ( 'Table', 'Table'[Column] = 5 ) )
VAR _line6 =
_line5 - 'Table'[Payment]
+ ( _line5 - 'Table'[Payment] )
* CALCULATE ( MAX ( 'Table'[Interest] ), FILTER ( 'Table', 'Table'[Column] = 6 ) )
RETURN
SWITCH (
'Table'[Column],
1, _line1,
2, _line2,
3, _line3,
4, _line4,
5, _line5,
6, _line6
)
Y verás:
Para el archivo .pbix relacionado, pls ver adjunto.
Para el cálculo del bucle recomendaría a continuación los blogs:
https://community.powerbi.com/t5/Community-Blog/For-and-While-Loops-in-DAX/ba-p/636314
https://community.powerbi.com/t5/Community-Blog/Previous-Value-Recursion-in-DAX/ba-p/638320
Espero que lo anterior ayudaría.
Saludos
Kelly
¿Respondí a su pregunta? Marcar mi post como una solución!
Hola @v-kelly-msft ,
Muchas gracias, esto es genial!!
Ahora, me enfrento al problema con el número de filas... Tengo 120 valores de fecha, la tabla de Excel que te envié fue solo una muestra.
No puedo escribir tantas filas manualmente, y segundo thinkg, tal vez ese número puede increse.
Así que lo que necesito es tomar siempre el mes pasado y recalcular uno nuevo. ¿Es eso posible?
gracias
Alex
Hay @astojanac,
Como dije, si necesita hacer un cálculo de multiplicación en un bucle, es mejor que lo termine fuera del escritorio, como SQL, luego regrese al escritorio para hacer un cálculo de suma.
De lo contrario, sería un gran cálculo en el escritorio como te muestro en la última respuesta.
Saludos
Kelly
¿Respondí a su pregunta? Marcar mi post como una solución!
Hola @v-kelly-msft ,
Exactamente, ¡ese es el problema! Es por eso que quería probar con columnas calc no medidas, pero no puedo firuge fuera de cómo...
gracias
Alex
Hey @astojanac ,
por favor, permítame señalarle a una de mis publicaciones de blog anteriores, estoy seguro de que puede adaptar mi enfoque a su requisito: Uso de iteradores de tabla para calcular un valor futuro - Mincing Data - Gain Insight from Data (mi...
saludos
gato
Hola Tom,
Gracias por la respuesta, increíble entrada de blog!!
Pero todavía estoy teniendo problema no para un valor calculado, sino tres y no puedo encontrar la manera de salir de un círculo 😞
hola
Creo que esto será más fácil de resolver con una medida directamente en lo visual.