Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
2 years ago

Copiar valores

Hola equipo,

Tengo los siguientes datos en mi informe como una matriz en PBI Desktop

IDENTIFICACIÓNCódigoNombreValor1Valor2Valor3
5670670003Manzanas
578080Manzanas407839

Las columnas ID, Código y Nombre se expanden. No tengo valores presentes para el código 670003. ¿Cómo puedo escribir un cálculo para copiar el valor del otro Código 578080 a la primera línea?

Salida:

IDENTIFICACIÓNCódigoNombreValor1Valor2Valor3
5670670003Manzanas407839
578080Manzanas407839

Gracias

17 Replies

  • Hola @GallopPBI ,

    La mejor manera que se me ocurre es usar la opción de llenado en Power Query para que los valores que están presnetos en la fila de abajo se llenen en la fila de arriba y viceversa si está buscando copiar los datos a continuación. A partir de esto es que hay condiciones en su lógica donde desea copiar los datos.

    Si encuentra esto útil, márquelo como una solución que será útil para otros y sus felicitaciones / me gusta son muy apreciados.

    Gracias

    Dharmendar S

    LinkedIN

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      @dharmendars007 Gracias, no quiero rellenar los datos en Power Query, sino escribir una medida o una columna calculada para rellenar los datos del informe. ¿Cómo se puede hacer esto? Gracias

  • ¡Gracias @dharmendars007

    Hola, @GallopPBI

    Basándome en su descripción, utilizo los siguientes datos de ejemplo:

    He creado algunas columnas calculadas con la siguiente expresión DAX:

    Column1 = 
    VAR _id = 'Table'[Id]
    RETURN
    IF(
        ISBLANK('Table'[Value1]),
        FIRSTNONBLANKVALUE(SELECTCOLUMNS(FILTER(ALL('Table'),'Table'[Id]=_id),'Table'[Value1]),MAX('Table'[Value1])),
        'Table'[Value1]
    )
    Column2 = 
    VAR _id = 'Table'[Id]
    RETURN
    IF(
        ISBLANK('Table'[Value2]),
        FIRSTNONBLANKVALUE(SELECTCOLUMNS(FILTER(ALL('Table'),'Table'[Id]=_id),'Table'[Value2]),MAX('Table'[Value2])),
        'Table'[Value2]
    )
    Column3 = 
    VAR _id = 'Table'[Id]
    RETURN
    IF(
        ISBLANK('Table'[Value3]),
        FIRSTNONBLANKVALUE(SELECTCOLUMNS(FILTER(ALL('Table'),'Table'[Id]=_id),'Table'[Value3]),MAX('Table'[Value3])),
        'Table'[Value3]
    )

    Estos son los resultados:

    A continuación, utilice estas columnas calculadas para crear una matriz:

    He subido el archivo PBIX que usé esta vez a continuación.

    Saludos

    Jianpeng Leer

    Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        Hola, @GallopPBI

        Actualizo mi expresión DAX:

        Table 2 =
        VAR _table =
            ADDCOLUMNS (
                ALL ( 'Table'[Id], 'Table'[Code], 'Table'[Name] ),
                "Value1", [Measure1],
                "Value2", [Measure2],
                "Value3", [Measure3]
            )
        RETURN
            ADDCOLUMNS (
                _table,
                "Value1_new",
                    VAR _id = 'Table'[Id]
                    RETURN
                        IF (
                            ISBLANK ( [Value1] ),
                            FIRSTNONBLANK (
                                SELECTCOLUMNS ( FILTER ( _table, 'Table'[Id] = _id ), [Value1] ),
                                [Value1]
                            ),
                            [Value1]
                        ),
                "Value2_new",
                    VAR _id = 'Table'[Id]
                    RETURN
                        IF (
                            ISBLANK ( [Value2] ),
                            FIRSTNONBLANK (
                                SELECTCOLUMNS ( FILTER ( _table, 'Table'[Id] = _id ), [Value2] ),
                                [Value2]
                            ),
                            [Value2]
                        ),
                "Value3_new",
                    VAR _id = 'Table'[Id]
                    RETURN
                        IF (
                            ISBLANK ( [Value3] ),
                            FIRSTNONBLANK (
                                SELECTCOLUMNS ( FILTER ( _table, 'Table'[Id] = _id ), [Value3] ),
                                [Value3]
                            ),
                            [Value3]
                        )
            )

        Saludos

        Jianpeng Leer

        Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

  • @v-jianpeng-msft ¡Gracias!

    Sin embargo, obtengo el siguiente error

    Tenga en cuenta que el valor 1 es una medida calculada

    Valor1 = DIVIDIR(SUMA('Ventas'[Net_Sales]),SUMA('Cantidad'[Cantidad]))
    Por favor, avísenos
    Gracias

  • @v-jianpeng-msft Gracias

    Entiendo el siguiente problema

    El campo Valor1 es una medida calculada en la que divido un valor por otro. Además, ID es en realidad de otra tabla.

    ¿Podría aconsejarnos, por favor? ¡Gracias!

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hola, @GallopPBI

      Si es una medida, debe crear una nueva tabla calculada con su medida, utilizando mis datos de ejemplo anteriores, donde usé tres medidas y luego las usé para construir una tabla calculada.
      En la tabla de cálculo construida, agregué las columnas que necesita, que son básicamente las mismas que la anterior, y la siguiente es la expresión DAX que utilicé:

      Table 2 =
      ADDCOLUMNS (
          ADDCOLUMNS (
              ALL ( 'Table'[Id], 'Table'[Code], 'Table'[Name] ),
              "Value1", [Measure1],
              "Value2", [Measure2],
              "Value3", [Measure3]
          ),
          "Value1_new",
              VAR _id = 'Table'[Id]
              RETURN
                  IF (
                      ISBLANK ( [Value1] ),
                      FIRSTNONBLANKVALUE (
                          SELECTCOLUMNS ( FILTER ( ALL ( 'Table' ), 'Table'[Id] = _id ), 'Table'[Value1] ),
                          MAX ( 'Table'[Value1] )
                      ),
                      [Value1]
                  ),
          "Value2_new",
              VAR _id = 'Table'[Id]
              RETURN
                  IF (
                      ISBLANK ( [Value2] ),
                      FIRSTNONBLANKVALUE (
                          SELECTCOLUMNS ( FILTER ( ALL ( 'Table' ), 'Table'[Id] = _id ), 'Table'[Value2] ),
                          MAX ( 'Table'[Value2] )
                      ),
                      [Value2]
                  ),
          "Value3_new",
              VAR _id = 'Table'[Id]
              RETURN
                  IF (
                      ISBLANK ( [Value3] ),
                      FIRSTNONBLANKVALUE (
                          SELECTCOLUMNS ( FILTER ( ALL ( 'Table' ), 'Table'[Id] = _id ), 'Table'[Value2] ),
                          MAX ( 'Table'[Value2] )
                      ),
                      [Value3]
                  )
      )

      Esta es la tabla calculada generada por esta expresión:

      A continuación, proporcioné el archivo PBIX utilizado esta vez.

      Saludos

      Jianpeng Leer

      Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

  • Puedes escribir una medida:
    Value1_Fill =
    SI (
    ISBLANK ( MAX(TuTabla[Valor1]) ),
    CALCULAR (
    MAX(TuTabla[Valor1]),
    FILTRO (
    SuMesa,
    TuMesa[Nombre] = MAX(TuMesa[Nombre]) &&
    NOT(ISBLANK(TuTabla[Valor1]))
    )
    ),
    MAX(TuTabla[Valor1])
    )


    Del mismo modo, escriba para Value2 y Value3.

    Si esta publicación ayuda, considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente y sus felicitaciones / me gusta son muy apreciados.

    Saludos

    Kedar Pande

    www.linkedin.com/in/kedar-pande





    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      @Kedar_Pande Gracias, recibo este error "La función MAX solo acepta una referencia de columna como argumento número 1".

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        Esta es la solución actualizada que usa SELECTEDVALUE():

        Value1_Fill =
        SI (
        ISBLANK ( SELECTEDVALUE(TuTabla[Valor1]) ),
        CALCULAR (
        MAX(TuTabla[Valor1]),
        FILTRO (
        SuMesa,
        TuTabla[Nombre] = SELECTEDVALUE(TuTabla[Nombre]) &&
        NOT(ISBLANK(TuTabla[Valor1]))
        )
        ),
        SELECTEDVALUE(TuTabla[Valor1])
        )