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

Ocultar dinámicamente las columnas de la tabla sin segmentación de datos de columnas

Hola

Estoy tratando de mostrar una tabla que muestra los costos agregados del proyecto en ciertos años de la vida de un proyecto. Esto es para que podamos comparar los costos en el enésimo año de vida de esos proyectos.

Entonces, por ejemplo, si miramos esta tabla de Power BI:

ShellyPC_0-1685041275308.png

Las filas son para los últimos 5 años, así como este año hasta ahora (Año de inicio) Las columnas muestran los costos en el año 1 al año 6 de la antigüedad del proyecto. (Hay una serie de agregaciones diferentes que pueden ser necesarias y el tipo de agregación simplemente se elige de un menú desplegable. Tengo una medida para cada año que es una instrucción de cambio simple que devolverá la agregación requerida). Permito que mis usuarios elijan cuántos años quieren retroceder, por lo que la tabla anterior es lo que ven si eligen 5 de una segmentación de datos de edad del proyecto. Si tuvieran que elegir 3 verían la siguiente tabla:

ShellyPC_1-1685041372811.png

Mirando el año 2022 vemos datos para el año 1 y el año 2. Estos son los costos para 2022 y 2023. El año 3 para 2022 está en blanco porque eso aún no ha sucedido. En la segunda tabla, las columnas de Year 5 y Year 6 están en blanco para cada uno de los años de inicio elegidos.

En la práctica, permito que los usuarios retrocedan 20 años, así que en realidad tengo 20 medidas (año 1 a año 20) para las agregaciones. Quiero poder eliminar columnas en blanco dinámicamente.

Primero intenté usar el parámetro field donde inserté todas las medidas anteriores como campos. Dejé marcado el "Agregar segmentación de datos" Esto produjo una tabla, así como una segmentación de datos para esa tabla. Tomé el campo creado de esa tabla y lo puse en las columnas de mi tabla. Ahora la cortadora funciona perfectamente y puedo elegir qué columnas deseo ver. Sin embargo, no quiero que mis usuarios tengan que elegir columnas. Creo que debe haber una manera de usar la segmentación de edad ya elegida para determinar qué columnas mostrar.

La tabla creada para los parámetros de campo tiene el siguiente aspecto:

YearsToShow = {

("Año 1", NAMEOF('Tabla de medidas'[Año 1]), 0), 0),

("Año 2", NAMEOF('Tabla de medidas'[Año 2]), 1), 1),

("Año 3", NAMEOF('Tabla de medidas'[Año 3]), 2), 2),

("Año 4", NAMEOF('Tabla de medidas'[Año 4]), 3), 3),

("Año 5", NAMEOF('Tabla de medidas'[Año 5]), 4), 4),

("Año 6", NAMEOF('Tabla de medidas'[Año 6]), 5)

}

Miré esto y pensé que sería simple agregar un interruptor o una instrucción if a esta tabla para poder usar el valor seleccionado para "edad del proyecto" para limitar qué tabla se devuelve. Sin embargo, ambos cambian y si solo devuelven valores de escalador y quiero devolver una tabla. ¿Hay alguna otra función de Dax que pueda devolver dinámicamente una tabla? O alternativamente, simplemente filtre esta tabla para devolver un subconjunto de la tabla donde la 3ª columna de la tabla anterior (orden) es menor o igual que "edad del proyecto". Intenté usar el filtro aquí, pero no pude hacer que funcionara. No sé si esto funcionaría, ya que dudo que la tabla cambie cuando cambie la selección de "edad del proyecto".

El primer premio sería cambiar dinámicamente esta tabla de alguna manera para que las columnas de mi tabla cambien visualmente en consecuencia.

Lo siguiente que pensé hacer es cambiar dinámicamente los valores elegidos para la segmentación de datos. La segmentación de datos contiene un valor para cada una de las columnas posibles. Si pudiera establecer programáticamente los valores en la segmentación de datos cuando cambia la "edad del proyecto", eso también puede funcionar. Entonces podría simplemente ocultar la cortadora en sí y hacer que cambie dinámicamente. Una vez más, no pude encontrar la manera de hacer esto.

Cualquiera de estas acciones suena simple, simplemente no sé cómo hacer ninguna de ellas o incluso si funcionaría.

Cualquier ayuda sería muy apreciada.

Gracias

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hola, por si alguien tiene un problema similar.

Dejé este proyecto solo durante 6 semanas y cuando volví a él, la solución fue realmente muy fácil.

La conclusión es que podría crear una tabla de parámetros de campo a partir de mi lista de medidas. Sin embargo, quería usar una segmentación de datos existente para cortar la tabla de parámetros y no hacerlo directamente. Una manera fácil de hacerlo es crear una tabla de unión entre la tabla en la que está trabajando mi segmentación de datos original y la nueva tabla de parámetros. A continuación, simplemente cree relaciones desde la nueva tabla de unión a la tabla original y la tabla de parámetros. Esto da como resultado poder usar la segmentación de datos original para cortar ambas tablas. Tuve que perder el tiempo con la dirección de filtrado, ya que tenía muchas o muchas relaciones en ambos lados de la mesa de unión, pero esto funciona como un encanto.

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

Hola, por si alguien tiene un problema similar.

Dejé este proyecto solo durante 6 semanas y cuando volví a él, la solución fue realmente muy fácil.

La conclusión es que podría crear una tabla de parámetros de campo a partir de mi lista de medidas. Sin embargo, quería usar una segmentación de datos existente para cortar la tabla de parámetros y no hacerlo directamente. Una manera fácil de hacerlo es crear una tabla de unión entre la tabla en la que está trabajando mi segmentación de datos original y la nueva tabla de parámetros. A continuación, simplemente cree relaciones desde la nueva tabla de unión a la tabla original y la tabla de parámetros. Esto da como resultado poder usar la segmentación de datos original para cortar ambas tablas. Tuve que perder el tiempo con la dirección de filtrado, ya que tenía muchas o muchas relaciones en ambos lados de la mesa de unión, pero esto funciona como un encanto.

Syndicate_Admin
Administrator
Administrator

Hola, lo intenté y terminé exactamente en el mismo dilema aquí. Termino con columnas en blanco en mi matriz. Así que descargué su Análisis de cohorte desde el enlace anterior y agregué una segmentación de datos para su tabla de fechas principal (esencialmente eso es lo que estoy haciendo) para mostrar solo la columna MesAño para 2019 y posteriores. Su solución ahora también tiene columnas vacías:

ShellyPC_0-1685133693196.png

Sí, es bastante fácil agregar otra segmentación de datos para la tabla FirstDate para eliminar esas columnas, pero eso es precisamente lo que no quiero hacer. Quiero usar el valor seleccionado de la segmentación de datos para establecer dinámicamente la primera segmentación de datos de fecha o usar ese valor para ocultar las columnas en blanco en la matriz.

¿Alguna idea?

Gracias

Syndicate_Admin
Administrator
Administrator

Gracias por mirar esto.

Esto es interesante y debería funcionar, lo intentaré hoy y haré más preguntas o le haré saber si tengo éxito (y marcaré su solución como la aceptada).

Necesito tomarme el tiempo para entender su ejemplo correctamente y luego aplicarlo a mis datos. Definitivamente lo haré.

Estaba tratando de no usar una matriz y más bien usar una tabla simple, ya que las medidas que actualmente muestro aquí se usan en muchas otras imágenes. El cálculo real de los valores en las medidas en mis 20 columnas "Año" ha sido probado y probado en otras imágenes e informes. Mi tabla actualmente se muestra correctamente: solo termino con algunas columnas en blanco que esperaba ocultar usando el valor seleccionado de la segmentación de datos de edad existente y no usando una nueva segmentación de datos para las columnas.

Syndicate_Admin
Administrator
Administrator

@ShellyPC , me gustaría ver los datos base.

Habría creado algo como esta cohorte

Análisis de cohorte de Power BI, retención de clientes %- https://youtu.be/qY1SDF1cwsg

Período de estancia – Análisis de cohortes: https://community.powerbi.com/t5/Community-Blog/Customer-Retention-Part-3-Period-Of-Stay-Cohort-Anal...

y luego usando el parámetro numérico puedo controlar el número de años

Si esto no ayuda
¿Puede compartir datos de muestra y salida de muestra en formato de tabla? O un pbix de muestra después de eliminar datos confidenciales.

Helpful resources

Announcements
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.

February 2024 Update Carousel

Power BI Monthly Update - February 2024

Check out the February 2024 Power BI update to learn about new features.

Fabric Career Hub

Microsoft Fabric Career Hub

Explore career paths and learn resources in Fabric.

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