Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Cómo hacer referencia a una columna en una medida de Power BI

Hola comunidad de Microsoft,

Da la sensación de que cuanto más aprendo sobre Power BI y DAX, menos sé realmente.

He estado trabajando con medidas recientemente, ya que uno de nuestros modelos de Power BI hace referencia a los datos en modo de consulta directa en lugar de en modo de importación, por lo que he estado transformando algunas de mis columnas calculadas en medidas para dar cabida a esto. Un problema que se me ha ocurrido es hacer referencia a otra columna en otra medida.

Así que este es el escenario. Tengo una tabla de datos con el ID de actividad, la fecha del cronograma y el ID del proyecto. Donde ID de proyecto, se conecta a una tabla de dimensiones que se utiliza como filtro para ver qué actividad pertenece a qué proyecto. Tengo una tabla de fechas que nos da las fechas de finalización del período de 2021 a 2030. Para mi empresa es cada dos viernes. Anteriormente tenía una columna calculada que tomaba todas las fechas de programación de cada actividad y mostraba a qué fecha de finalización del período pertenecía. Lo convertí a una medida que se muestra a continuación:

End Period Date Measure = 
VAR enddate = SELECTEDVALUE('Fact_Table'[Schedule Date])
RETURN
CALCULATE(
    MIN(Date_Table[End Period]),
    Filter(Date_Table, Date_Table[End Period] > enddate)
)

Cuando incluyo esto en un objeto visual de tabla de Power BI, esta medida funciona según lo previsto, de forma similar a una columna calculada. El problema con el que me encuentro es cuando filtro por proyecto, digo que solo quiero programar actividades del proyecto A, el objeto visual de Power BI muestra TODAS las actividades y, si la actividad NO está en el proyecto A, simplemente da la fecha de finalización más pequeña en mi tabla de fechas. Entonces, para dar una imagen rápida, ya que no puedo cargar mis datos (directquery to datalake)

Cómo se ve mi tabla de hechos:

Programar actividadFecha de programaciónProyecto
Caminar2024-01-03A
Comer2024-01-15A
Dormir2024-02-12B

Cómo se veía mi columna calculada anterior al filtrar al Proyecto A:

Programar actividadFecha de programaciónPeríodo de finalización
Caminar2024-01-032024-01-05
Comer2024-01-152024-01-19

Aspecto que genera la medida al filtrar para el proyecto A:

Programar actividadFecha de programaciónFecha de finalización del período
Caminar2024-01-032024-01-05
Comer2024-01-152024-01-19
Dormir2024-02-122021-01-08

Creo que este problema ocurre con el uso de "SELECTEDVALUE". El filtro, por alguna razón, mantiene toda la actividad programada en lugar de filtrarla, y dado que ese contexto de filtro no tiene una fecha de programación para esa actividad, usa BLANK() como variable de fecha de finalización. Esa es mi hipótesis.

Entonces, el TLDR, ¿hay una alternativa de SELECTEDVALUE en una medida, en general, y en mi escenario específico? Sé que max, min, sum, podría usarse, pero en mi escenario no tendrá sentido.

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hola

¡Eso funcionó perfectamente en mis pequeños datos de muestra! Ahora lo intentaré en mi conjunto de datos más grande, pero en todo caso, los problemas serán de otras entradas y no de este problema nulo y de filtro

Gracias

Syndicate_Admin
Administrator
Administrator

Hola

¡Eso funcionó perfectamente en mis pequeños datos de muestra! Ahora lo intentaré en mi conjunto de datos más grande, pero en todo caso, los problemas serán de otras entradas y no de este problema nulo y de filtro

Gracias

Syndicate_Admin
Administrator
Administrator

@AlvinLy , Intente medir como

Medida de fecha de finalización del período =
Fecha de finalización del VAR = Max('Fact_Table'[Fecha de programación])
DEVOLUCIÓN
CALCULAR(
MIN(Date_Table[Fin del período]),
Filter(all(Date_Table), Date_Table[Punto de finalización] > fecha de finalización)
)

Hola Amitchandak

Gracias por su sugerencia. Obtengo el mismo resultado. Empiezo a preguntarme si es porque tengo un DirectQuery en lugar de un modelo importado que se me ocurre este problema, pero es extraño ya que creo que la fórmula que tengo es bastante simple.

Además de SELECTEDVALUE, MAX y MIN, ¿cuáles son otras formas típicas en las que seleccionaríamos la columna de la misma fila mediante una medida?

Supongo que la lógica de MAX o MIN es que durante el contexto de fila del cálculo solo hay un valor, por lo que elige ese valor independientemente de si es MAX o MIN. Eso tiene sentido en mi mente, pero no estoy seguro de por qué no está funcionando.

Hola @amitchandak , gracias por la respuesta rápida, agregaré más.

Hola @AlvinLy ,

Con respecto a su pregunta, modifique su expresión dax.

End Period Date = 
VAR _a = SELECTEDVALUE(FactTable[Schedule Date])
RETURN  IF(ISBLANK(_a),BLANK(),MINX(FILTER('DateTable','DateTable'[Date] >= _a),[Date]))

vzhouwenmsft_0-1715758965864.png

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.