jonclemo
Estoy tratando de crear una tabla de resumen de ingresos para varias organizaciones durante varios años, clasificada por tamaño con una columna de índice de año base. El resultado final se vería así, conteniendo los resultados de varios años.
El informe está diseñado para su reutilización y actualización, por lo que intento minimizar los pasos si se actualizan los datos o se modifican las imágenes.
Tengo una tabla con los ingresos de cada organización para cada año.
Usé una función de cambio para crear una columna que clasifica esos datos en bandas personalizadas
Creé una tabla usando resumen que agrupa por columna de año e ingresos por banda con resumen.
esto me da cual es la correcta
Ahora quiero agregar la columna de índice
La fórmula para el índice de ingresos sería [income]/[income total in 2008]
Sé que simplemente podría codificar el número, pero quería hacer referencia a él. Lo que no puedo entender es cómo especificar la referencia o la consulta en la fórmula para obtener un valor específico devuelto. Esencialmente seria
Seleccione el ingreso donde final de año = 2008 Y la categoría está en blanco (o el total si supiera cómo nombrar la fila acumulada)
donde llegué es
Índice = ‘Tabla'[Income]/(CALCULAR(suma(‘Tabla'[Income]), ‘Tabla'[Year End] =2008, ‘Tabla'[Size By Income] = en blanco()))
Pero esto solo parece funcionar para la fila total de 2008; de lo contrario, parece que no obtiene la referencia y devuelve cero.
Miré la respuesta aquí, que parece usar variables que no he usado antes en DAX: ¿qué no veo y cuáles son mis opciones? muchas gracias
https://community.powerbi.com/t5/DAX-Commands-and-Tips/Creating-index-chart-showing-trend-from-the-b…
nathani
Hola @JonClemo,
¿Puede compartir datos de muestra o un archivo pbix de muestra?
Prueba esto
Index =
DIVIDE (
'Table'[Income],
CALCULATE (
SUM ( 'Table'[Income] ),
'Table'[Year End] = 'Table'[Year End] - 1
)
)
Saludos,
Nathani duro
jonclemo
En respuesta a nathani
Gracias @harshnathani, su sugerencia produce el siguiente error, pero si lo he entendido correctamente, creo que está tratando de responder a algo ligeramente diferente que es ‘año actual dividido por el año pasado’ mientras que estoy buscando ‘año actual dividido por un año específico en el pasado’
Aquí hay algunos datos de muestra
Test_Index Chart.xlsx
Al sacar esto, me di cuenta de que la referencia del año base también tendría que cambiar según la categoría.
nathani
En respuesta a jonclemo
Hola @JonClemo,
¿Cómo se determina el año especificado en el pasado?
Prueba esto.
Cree una tabla de año separada. Agregue esto como una cortadora. Esto determinará el valor de su índice.
Crear medidas
Total Income = SUM('Table'[Income])
Selected year Index = SELECTEDVALUE(YearTable[Year End])
Measure 5 =
var selyear = [Selected year Index]
var sumyear = CALCULATE(SUM('Table'[Income]),FILTER(ALL('Table'[Year End]), 'Table'[Year End] = selyear))
RETURN
DIVIDE ([Total Income],sumyear)
Saludos,
Nathani duro
¿Respondí tu pregunta? ¡Marca mi publicación como una solución! Agradecer con un Kudos!! (Haga clic en el botón Me gusta)
jonclemo
En respuesta a nathani
Hola, @harshnathani Eso ciertamente me está dando un resultado, así que gracias, solo necesito hacer un poco más de prueba para verificar que salgan las cifras correctas. Sin embargo, hay algo que no entiendo. Si trato de hacer esto en la tabla de datos en lugar de como una tabla en el objeto visual, creo que debería poder crear una columna calculada que proporcione el índice. Simplificando sin la cortadora que usé
Test1 =
var index_year = 2008
var Baseline = calculate(SUM('Table'[Income]), FILTER(ALL('Table'[Year End]), 'Table'[Year End] = index_year))
RETURN
DIVIDE('Table'[Income], [Baseline])
El resultado es que obtengo un resultado de 1 en la columna para todas las filas donde Fin de año = 2008 pero un campo vacío para todos los demás. Esto me implica que para el 2008 se está calculando correctamente la variable Baseline pero en otros años no se está devolviendo valor. Supongo que esto tiene que ver con la variable que se calcula mirando por fila, por lo que cuando filtra un valor de 2008 para filas que no sean 2008, no se devuelve nada, pero creo que debería poder configurarlo de alguna manera para filtrar toda la tabla. . ¡Cualquier sugerencia sería útil ya que estoy tratando de mejorar mi comprensión, no solo copiar soluciones!
nathani
En respuesta a jonclemo
Hola @JonClemo,
Según lo que he entendido:
Su índice es dinámico y cambia según el año que seleccione en una segmentación. La tabla almacena valores estáticos y no puede generar valores dinámicos. Las columnas calculadas funcionan mejor cuando desea categorizar o quiere consumir su memoria.
Sugiero ver este video:
Test1 = var index_year = 2008 var Baseline = calculate(SUM('Table'[Income]), FILTER(ALL('Table'[Year End]), 'Table'[Year End] = index_year)) RETURN DIVIDE('Table'[Income], [Baseline])
Haré todo lo posible para explicar en términos simples. Espero tener sentido.
Verifique la parte del filtro -> Está filtrando la columna de la tabla [Year End] donde Tabla[Year End] = 2018. Entonces, esto le dará solo filas de la tabla donde finaliza el año = 2018. Entonces, en caso de que su tabla tenga 100 filas, de las cuales 5 filas son 2018, se devolverán estas 5 filas.
Publique que está agregando los ingresos en estas 5 filas.
Ahora está dividiendo los Ingresos de todas las filas con la línea de base (la línea de base tiene valores solo para 5 filas). Entonces, para otras filas, es el ingreso dividido por el espacio en blanco. Y para 2018, obtiene 1. Ahora cambie el tipo de columna a decimal, puede obtener valores 0.xx en filas donde el año es 2018.
Espero que esto tenga sentido.
Saludos,
Nathani duro
jonclemo
En respuesta a nathani
Gracias @harshnathani
Tendré un reloj. No es la función de la fórmula lo que me cuesta entender, supongo que es la forma en que funciona la variable.
Según su ilustración, la tabla tiene 100 filas, esto se filtra a cinco y luego se suma, lo que da un valor, digamos 75. Se espera que ese valor se establezca luego. Como resultado en la segunda parte, todas y cada una de las filas tendrán el ingreso de esa fila dividido por 75.
Lo que está sucediendo es que, según su explicación, la línea de base solo tiene un valor para esas cinco filas.