Forum Discussion
Copiar valores
Hola equipo,
Tengo los siguientes datos en mi informe como una matriz en PBI Desktop
| IDENTIFICACIÓN | Código | Nombre | Valor1 | Valor2 | Valor3 |
| 5670 | 670003 | Manzanas | |||
| 578080 | Manzanas | 40 | 78 | 39 |
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ÓN | Código | Nombre | Valor1 | Valor2 | Valor3 |
| 5670 | 670003 | Manzanas | 40 | 78 | 39 |
| 578080 | Manzanas | 40 | 78 | 39 |
Gracias
17 Replies
- Syndicate_Admin
Administrator
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
- Syndicate_Admin
Administrator
@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
- Syndicate_Admin
Administrator
@dharmendars007 En realidad, rellenar o rellenar no agrega nuevos valores para los campos que faltan. Gracias
- Syndicate_Admin
Administrator
¡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
Administrator
- Syndicate_Admin
Administrator
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.
- Syndicate_Admin
Administrator
@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ísenosGracias - Syndicate_Admin
Administrator
@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
Administrator
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.
- Syndicate_Admin
Administrator
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
Administrator
@Kedar_Pande Gracias, recibo este error "La función MAX solo acepta una referencia de columna como argumento número 1".
- Syndicate_Admin
Administrator
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])
)