Forum Discussion
Calcular % diff en una matriz
Hola a todos,
Necesita ayuda con alguna tabla (visual de matriz)
ahora tengo esto visual:
| P1 | P2 | P3 | P4 | |
| Valor | 2 | 1 | 6 | 3 |
Estoy tratando de añadir una fila para que el objeto visual se vea así:
| P1 | P2 | P3 | P4 | |
| Valor | 2 | 1 | 6 | 3 |
| Cambio en % | -50% |
|
Por ejemplo P1 : (1-2)/2= -50%
los datos se toman de este, mientras que en visual estoy haciendo SUM en cada período y hay una segmentación por grupo y nombre
| Grupo | Nombre | P1 | P2 | P3 | P4 |
| a | Abc | 1 | 0.5 | ||
| a | Fd | 1 | 0.5 |
¡Muchas gracias!
@Linoy18 , En potencia bi; a partir de, no tenemos las operaciones de fila o columna. Así que tienes que crear un diff .
Cree una tabla de períodos o una tabla de período de año separada
Tener una columna como esta en esa tabla período
Rango de período = RANKX(all('Period'),'Period'[período del año],,ASC,Dense)
Calcular medidas como estas y tomar diff
Este período = CALCULATE(sum('order'[Qty]), FILTER(ALL('Period'),'Period'[Period Rank]=max('Period'[Period Rank])))
Último período = CALCULATE(sum('order'[Qty]), FILTER(ALL('Period'),'Period'[Period Rank]=max('Period'[Period Rank])-1))No @Linoy18,
Puede transformar la tabla desoyendo , agregando una columna Nivel por columna Atributo...
La tabla transformada tiene este aspecto:
Aquí está toda la sintaxis M:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSlTSUUpMSgaShkBsoGcKJI3AvFgdiGxaCoqkCVhBbCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Group = _t, Name = _t, P1 = _t, P2 = _t, P3 = _t, P4 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Group", type text}, {"Name", type text}, {"P1", Int64.Type}, {"P2", type number}, {"P3", Int64.Type}, {"P4", Int64.Type}}), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Group", "Name"}, "Attribute", "Value"), #"Duplicated Column" = Table.DuplicateColumn(#"Unpivoted Other Columns", "Attribute", "Attribute - Copy"), #"Replaced Value" = Table.ReplaceValue(#"Duplicated Column","P","",Replacer.ReplaceText,{"Attribute - Copy"}), #"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value",{{"Attribute - Copy", Int64.Type}}), #"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"Attribute - Copy", "level"}}) in #"Renamed Columns"A continuación, puede utilizar la siguiente fórmula para crear una meaure :
Change in = VAR aft = CALCULATE ( SUM ( 'Table2'[Value] ), FILTER ( ALL ( 'Table2' ), 'Table2'[level] = MAX ( 'Table2'[level] ) + 1 ) ) RETURN DIVIDE ( aft - SUM ( Table2[Value] ), SUM ( Table2[Value] ) )Espero que esto sea lo que se espera:
Por favor, eche un vistazo al archivo pbix aquí.
Saludos
Párpados Qin
Si este post ayuda, entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
2 Replies
- Syndicate_Admin
Administrator
@Linoy18 , En potencia bi; a partir de, no tenemos las operaciones de fila o columna. Así que tienes que crear un diff .
Cree una tabla de períodos o una tabla de período de año separada
Tener una columna como esta en esa tabla período
Rango de período = RANKX(all('Period'),'Period'[período del año],,ASC,Dense)
Calcular medidas como estas y tomar diff
Este período = CALCULATE(sum('order'[Qty]), FILTER(ALL('Period'),'Period'[Period Rank]=max('Period'[Period Rank])))
Último período = CALCULATE(sum('order'[Qty]), FILTER(ALL('Period'),'Period'[Period Rank]=max('Period'[Period Rank])-1)) - Syndicate_Admin
Administrator
No @Linoy18,
Puede transformar la tabla desoyendo , agregando una columna Nivel por columna Atributo...
La tabla transformada tiene este aspecto:
Aquí está toda la sintaxis M:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSlTSUUpMSgaShkBsoGcKJI3AvFgdiGxaCoqkCVhBbCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Group = _t, Name = _t, P1 = _t, P2 = _t, P3 = _t, P4 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Group", type text}, {"Name", type text}, {"P1", Int64.Type}, {"P2", type number}, {"P3", Int64.Type}, {"P4", Int64.Type}}), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Group", "Name"}, "Attribute", "Value"), #"Duplicated Column" = Table.DuplicateColumn(#"Unpivoted Other Columns", "Attribute", "Attribute - Copy"), #"Replaced Value" = Table.ReplaceValue(#"Duplicated Column","P","",Replacer.ReplaceText,{"Attribute - Copy"}), #"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value",{{"Attribute - Copy", Int64.Type}}), #"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"Attribute - Copy", "level"}}) in #"Renamed Columns"A continuación, puede utilizar la siguiente fórmula para crear una meaure :
Change in = VAR aft = CALCULATE ( SUM ( 'Table2'[Value] ), FILTER ( ALL ( 'Table2' ), 'Table2'[level] = MAX ( 'Table2'[level] ) + 1 ) ) RETURN DIVIDE ( aft - SUM ( Table2[Value] ), SUM ( Table2[Value] ) )Espero que esto sea lo que se espera:
Por favor, eche un vistazo al archivo pbix aquí.
Saludos
Párpados Qin
Si este post ayuda, entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.