Forum Discussion

DouweMeer's avatar
DouweMeer
Icon for Impactful Individual rankImpactful Individual
6 years ago

YTD sin contexto

Apuesto a que esto se ha preguntado antes y debería saber la respuesta también, pero sólo se me escapa y no puedo encontrarlo. Así que traté de reproducir mecon la tabla de abajo.

Columna1 : Variable de tiempo

Columna2 : Variable de producto

Columna3 : Variable de cantidad

1A3
2A8
3A7
4A12
5A5
6A1
7A18
1B3
3B5
4B4
5B6
7B9

Luego creé la siguiente medida:

Suma ?

VAR a1 a máx ( 'Tabla de prueba'[Variable de tiempo] )
devolución
calcular (
sumx ( filtro ( 'Test table' , 'Test table'[Time Variable] <'a1 ) , [Quantity variable] )
, todo ( 'Tabla de prueba'[Variable de tiempo] )
)
Ahora el problema, al trazar esta medida en una matriz...
Untitled.png
A continuación se devuelven los mismos valores que el anterior:
Suma ?
VAR a1 a máx ( 'Tabla de prueba'[Variable de tiempo] )
VAR a2 á máx ( 'Tabla de prueba'[Variable de producto] )
VAR t1 ?
SELECTCOLUMNS(
todos ( 'Tabla de pruebas' )
, "Column1" , 'Test table'[Time Variable]
, "Column2" , 'Test table'[Variable de producto]
, "Column3" , 'Test table'[Variable de cantidad]
)
devolución
sumx (
filtro ( t1
, if ( HASONEVALUE( 'Test table'[Time Variable] ) , [Column1] <-a1 , TRUE() )
&& if ( HASONEVALUE( 'Test table'[Product variable] ) , [Column2] ? a2 , TRUE() )
)
, [Columna3]
)
faltan los resultados de la variable de producto 'B' en las variables de tiempo 2 y 6, ya que faltan en la tabla.El problema es causado por la falta de contexto implícito. Añadir un 'ALL' es como multiplicar por 10... en un valor de 0. La eliminación de todos los filtros de ninguna referencia de tabla de registros sigue sin devolver registros. Cuando hay un registro, actuará como 'normal'. ¿Cómo puedo crear la medida de tal manera que para la variable de producto 'B' en el momento variable '2' mostrará el valor devuelto '3' y en la variable de tiempo '6' el valor devuelto '18'?

11 Replies

  • Greg_Deckler's avatar
    Greg_Deckler
    Icon for Community Champion rankCommunity Champion

    @DouweMeer - Me parece que usted debe crear una tabla desconectada como esta:

    Tabla: DISTINCT('CurrentTable'[Time Value])

    O simplemente use GENERATESERIES

    Usa eso como tus columnas. A continuación, puede tomar el valor de la columna actual utilizando MAX/MAXX o SELECTEDVALUE y obtener todo < ese valor de la otra tabla. Deberías arreglarte.

    • DouweMeer's avatar
      DouweMeer
      Icon for Impactful Individual rankImpactful Individual

      ¿Realmente necesitaría una mesa desconectada? De lo contrario, veo la consecuencia de que sería mejor simplemente crear toda la tabla como una tabla desconectada y utilizar sus columnas como filtros :).

      • Greg_Deckler's avatar
        Greg_Deckler
        Icon for Community Champion rankCommunity Champion

        @DouweMeer Supongo que porque aparentemente:

        Suma ?

        VAR a1 a máx ( 'Tabla de prueba'[Variable de tiempo] )
        devolución
        calcular (
        sumx ( filtro ( 'Test table' , 'Test table'[Time Variable] <'a1 ) , [Quantity variable] )
        , todo ( 'Tabla de prueba'[Variable de tiempo] )
        )
        No es devolver lo que quieres. Y la razón es que como no hay 2 estoy adivinando que su a1 se está poniendo en blanco para la intersección de B y 2 y por lo tanto, necesita una tabla desconectada para que siempre tenga un valor para Time Variable y por lo tanto a1.
        Esa es mi opinión.