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

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.

Reply
Amanita
Frequent Visitor

Calcular columna de tabla basada en SELECTEDVALUE de otra tabla

Hola

Estoy usando DAX para calcular 4 intervalos diferentes entre campos de fecha específicos, usando DATEDIFF para contar los días. (Los campos de fecha son: Fecha de creación, Fecha activada, Fecha resuelta, Fecha cerrada.)

Los cuatro intervalos se denominan "tiempo de ciclo", " tiempo deentrega", " tiempode resolución" y " tiempo derevisión" y se muestran en una tabla junto con el identificador de los elementos relacionados.

Hasta ahora funciona bien.

Ahora me gustaría hacer lo siguiente: en lugar de mostrar todos los intervalos en la tabla me gustaría seleccionar el tipo en una segmentación de datos y mostrar solo el seleccionado en la tabla.

Así que creé una tabla "Tipo de intervalo" que contiene una columna "I-type" con los nombres de los intervalos y una segmentación de datos para seleccionarlos.
A continuación, creé el siguiente código dax:

SelectedInterval (SelectedInterval)
var showselected - SELECTEDVALUE('Interval type'[I-type],"no single selection")
devolución
var CT á DATEDIFF('Elemento de trabajo'[Elemento de trabajo.Fecha activada],'Elemento de trabajo'[Elemento de trabajo.Fecha cerrada],DIA)
devolución
var ResT á DATEDIFF('Elemento de trabajo'[Elemento de trabajo.Fecha activada],'Elemento de trabajo'[Elemento de trabajo.Fecha resuelta],DAY)
devolución
Var RevT á DATEDIFF('Elemento de trabajo'[Elemento de trabajo.Fecha resuelta],'Elemento de trabajo'[Elemento de trabajo.Fecha cerrada],DAY)
devolución
Var LT á DATEDIFF('Elemento de trabajo'[Elemento de trabajo.Fecha de creación],'Elemento de trabajo'[Elemento de trabajo.Fecha cerrada],DIA)
devolución
interruptor (showselected, "cycle time",CT,"lead time",LT,"review time",RevT,"resolved time", ResT,"no single selection",0)
Pero esta medida DAX siempre muestra el valor "0" como si no se seleccionara nada, incluso si mueso el valor seleccionado en la tabla y definitivamente muestra el valor correcto:

PBI_example.png
¿Qué estoy haciendo mal, puedes ayudarme?
Saludos
6 REPLIES 6
sevenhills
Super User
Super User

El error se debe a que falta el contexto de fila y puede usar "maxx"/"minx" de cada columna de fecha y obtenerlo. Decir

DATEDIFF (
                Maxx('Work Item'[Work Item.Activated Date]),
                Maxx('Work Item'[Work Item.Closed Date]),
                DAY),

Si fui yo, voy a rehacer diferente.

a) La mejor manera es volver a ver el problema. Necesita estos datos de cálculo a lo largo del proyecto.

b) Agregue columnas para cada fila como cálculo de diferencia de fecha ... "tiempo de ciclo", "tiempo de entrega", "tiempo de revisión", "tiempo de resolución"

c) Para este informe específico, utilice esas columnas en la medida final. Nota: esto no tiene nada que ver con el contexto de fila. Todavía necesita contexto de fila para la medida calc.

... Gracias

AlB
Super User
Super User

@Amanita

No estoy seguro de lo que está tratando de hacer, pero probablemente necesita SELECTEDVALUE( ) alrededor de todos ellos. Tenga en cuenta que no tiene un contexto de fila en una medida y DATEDIFF necesita valores específicos como argumentos. Una referencia de columna con nuestro contexto de fila no le dará un valor

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

.

SU18_powerbi_badge

AlB
Super User
Super User

@sevenhills

No hay mejoría real allí. El motor DAX es lo suficientemente inteligente como para no calcular variables a menos que las necesite realmente.

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

sevenhills
Super User
Super User

Además de @AlB respuesta, la mejoraré...

Motivo: No es necesario calcular todos los valores y, a continuación, decidir el modificador. Usted necesita solamente un cálculo y puede hacer directamente en el Switch.

SelectedInterval =
VAR showselected =
    SELECTEDVALUE ( 'Interval type'[I-type], "no single selection" )
    
RETURN
    SWITCH (
        showselected,

        "cycle time", DATEDIFF (
                'Work Item'[Work Item.Activated Date],
                'Work Item'[Work Item.Closed Date],
                DAY),

        "lead time", DATEDIFF (
                'Work Item'[Work Item.Created Date],
                'Work Item'[Work Item.Closed Date],
                DAY),

        "review time",  DATEDIFF (
                'Work Item'[Work Item.Resolved Date],
                'Work Item'[Work Item.Closed Date],
                DAY),

        "resolved time", DATEDIFF (
                'Work Item'[Work Item.Activated Date],
                'Work Item'[Work Item.Resolved Date],
                DAY),

        "no single selection", 0
    )

Hola

Gracias por la rápida respuesta. Desafortunadamente recibo un mensaje de error ahora, pero tal vez nos estamos acercando al fondo del problema:


PBI_example2.png

¿Quizás toda mi construcción no puede funcionar en absoluto?
Saludos
Amanita

AlB
Super User
Super User

@Amanita

Lo has estropeado de una manera interesante con tantas DEVOLUCIONES. Prueba esto:

SelectedInterval =
VAR showselected =
    SELECTEDVALUE ( 'Interval type'[I-type], "no single selection" )
VAR CT =
    DATEDIFF (
        'Work Item'[Work Item.Activated Date],
        'Work Item'[Work Item.Closed Date],
        DAY
    )
VAR ResT =
    DATEDIFF (
        'Work Item'[Work Item.Activated Date],
        'Work Item'[Work Item.Resolved Date],
        DAY
    )
VAR RevT =
    DATEDIFF (
        'Work Item'[Work Item.Resolved Date],
        'Work Item'[Work Item.Closed Date],
        DAY
    )
VAR LT =
    DATEDIFF (
        'Work Item'[Work Item.Created Date],
        'Work Item'[Work Item.Closed Date],
        DAY
    )
RETURN
    SWITCH (
        showselected,
        "cycle time", CT,
        "lead time", LT,
        "review time", RevT,
        "resolved time", ResT,
        "no single selection", 0
    )

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.