Pivote la tabla y luego divida las columnas

Un usuario Pregunto ✅

Anónimo

Tengo una tabla dinámica que se parece a esto:
pivot.png

Estoy intentando reemplazar la columna ‘WK 1’ con ‘WK 1 «https://community.powerbi.com/» Num of Active Users’ * 100 (expresado como%). Además, estoy intentando hacer un formato BG condicional solo en las filas WK 1 a WK 5. ¿Cómo puedo hacerlo?

Por lo general, quiero que mi producto final se vea así.
pivote 2.png

Hice esto en lugar de formar la tabla dinámica como una matriz, hice el pivote en la consulta de edición y pude hacer cálculos en cada columna individual. Los datos que estoy pivotando se ven así:
data.png

Mi operación de pivote se ve así:

pivote 3.png

AnthonyTilley

En respuesta a AnthonyTilley

para aplicar el formateo donde después.

Cree una segunda medida llamada formateo como se muestra a continuación

es casi idéntico a mi primera medida, pero en esta versión en la declaración de cambio, la columna de usuarios activos se reemplaza con un espacio en blanco

Formatting = 
--get number of active users
var activeusers = CALCULATE(sum('Copy of temp (1)'[cnt_pax]),'Copy of temp (1)'[week_diff] = "NUM OF ACTIVE USERS")
--get value to divide by
var cnt_p = sum('Copy of temp (1)'[cnt_pax])
--find the colunm header value
var sv = SELECTEDVALUE('Copy of temp (1)'[week_diff])
-- calculate teh value divided by the active users * 100
var diff = DIVIDE(cnt_p,activeusers)*100
-- switch the value based on the header colunm, for active user header use active user value for all others user DIFF
var ret = SWITCH(sv,"NUM OF ACTIVE USERS",blank(),diff)
-- return the values
return ret

luego, en la sección de formato condicional, seleccione el color de fondo activado, y en las opciones avanzadas use la siguiente configuración

formating.png

el Basado en archivado use la nueva medida de formato y asegúrese de que el formato predeterminado esté configurado para no

luego asegúrese de que divergir esté marcado y seleccione sus tres colores

f table.png

AnthonyTilley

¿Puede proporcionar algunos datos de muestra?

O mejor aún, un archivo PBIX de muestra

Anónimo

En respuesta a AnthonyTilley

AnthonyTilley

En respuesta a Anónimo

Lo siento, no estoy seguro de si me falta algo aquí, pero los datos de muestra que proporcionó no tienen nada que ver con el número de usuarios activos.

Anónimo

En respuesta a AnthonyTilley

AnthonyTilley

En respuesta a Anónimo

Está bien para obtener sus valores en la tabla, use la siguiente medida

Measure = 
--get number of active users
var activeusers = CALCULATE(sum('Copy of temp (1)'[cnt_pax]),'Copy of temp (1)'[week_diff] = "NUM OF ACTIVE USERS")
--get value to divide by
var cnt_p = sum('Copy of temp (1)'[cnt_pax])
--find the colunm header value
var sv = SELECTEDVALUE('Copy of temp (1)'[week_diff])
-- calculate teh value divided by the active users * 100
var diff = DIVIDE(cnt_p,activeusers)*100
-- switch the value based on the header colunm, for active user header use active user value for all others user DIFF
var ret = SWITCH(sv,"NUM OF ACTIVE USERS",activeusers,diff)
-- return the values
return ret

f1.png

simplemente trabajando en cómo formatear conditonalmente sin incluir la primera columna

AnthonyTilley

En respuesta a AnthonyTilley

para aplicar el formateo donde después.

Cree una segunda medida llamada formateo como se muestra a continuación

es casi idéntico a mi primera medida, pero en esta versión en la declaración de cambio, la columna de usuarios activos se reemplaza con un espacio en blanco

Formatting = 
--get number of active users
var activeusers = CALCULATE(sum('Copy of temp (1)'[cnt_pax]),'Copy of temp (1)'[week_diff] = "NUM OF ACTIVE USERS")
--get value to divide by
var cnt_p = sum('Copy of temp (1)'[cnt_pax])
--find the colunm header value
var sv = SELECTEDVALUE('Copy of temp (1)'[week_diff])
-- calculate teh value divided by the active users * 100
var diff = DIVIDE(cnt_p,activeusers)*100
-- switch the value based on the header colunm, for active user header use active user value for all others user DIFF
var ret = SWITCH(sv,"NUM OF ACTIVE USERS",blank(),diff)
-- return the values
return ret

luego, en la sección de formato condicional, seleccione el color de fondo activado, y en las opciones avanzadas use la siguiente configuración

formating.png

el Basado en archivado use la nueva medida de formato y asegúrese de que el formato predeterminado esté configurado para no

luego asegúrese de que divergir esté marcado y seleccione sus tres colores

f table.png

Anónimo

En respuesta a AnthonyTilley

@AnthonyTilley ¿Podría contarme un poco más sobre la declaración de cambio, ya que me gustaría entender su código para poder replicarlo en el futuro? ¡Gracias!

AnthonyTilley

En respuesta a Anónimo

Entonces, la instrucción Switch le permite cambiar valores en función de una expresión

SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])  

así, por ejemplo, una simple declaración de cambio sería la siguiente

digamos que teníamos una medida para la suma (valor de los pedidos)

podríamos crear una declaración de cambio que diga
– este primer bit dice que cambiaremos según el valor de la suma

Cambiar (SUMA (VALOR DE PEDIDOS),
– luego agregamos cualquier número de condiciones y el valor en el que se convertirán
10, «pequeño»,
20, «medio»

30, alto
el valor final es el valor predeterminado que se usa para cualquier cosa que no se encuentre en las condiciones anteriores

,»OTRO»)

así que en el ejemplo anterior he dicho cambio basado en la suma del valor de mis pedidos

si algunos = 10, reemplácelo con la palabra «Pequeño»

si es igual a 20 entonces medio y 30 entonces alto cualquier otra cosa decir otro

Si luego uso esta medida en un pivote, me dará un valor pequeño, medio, alto u otro según el valor.

así que si el valor total del pedido fuera 21, diría otro

puede utilizar menor que o mayor que o cualquier otra operación para comparar

en tu ejemplo

var ret = SWITCH(sv,"NUM OF ACTIVE USERS",activeusers,diff)

– estamos diciendo que cambie según el valor de SV (sv es un verificable donde tengo el valor en el encabezado el valor seleccionado

Cambiar (sv,
– Entonces digo que si el valor en sv = «NUM OF ACTIVE USERS», entonces use el valor almacenado en los usuarios activos verificables
«NUM DE USUARIOS ACTIVOS», usuarios activos,

– Luego termino la función diciendo si es algo más (en este caso WK1, WK2, Wk3, Wk4, WK5) y luego uso el valor almacenado en la diferencia verificable

, diff)

puede usar la función de cambio para muchas cosas, por ejemplo, para reemplazar el valor de un mes con una palabra

=SWITCH([Month], 
1, "January", 
2, "February", 
3, "March", 
4, "April" ,
5, "May",
6, "June", 
7, "July", 
8, "August", 
9, "September", 
10, "October", 
11, "November", 
12, "December"  
               , "Unknown month number" )  

si desea utilizar operaciones como mayor o menor que, puede utilizar un truco con el método True ()

en este ejemplo reemplazamos la expresión con la función verdadera VERDADERO (), ahora en lugar de tener un valor fijo en las condiciones tales como 10,20,30 podemos reemplazar esto con cualquier expresión

 = SWITCH(
          TRUE(),
          [MyMeasure]<1,expr1,
          [MyMeasure]<2,expr2,
          [MyMeasure]<3,expr3,
         …)

para obtener más información sobre la función real, consulte este artículo

https://powerpivotpro.com/2015/03/the-diabolical-genius-of-switch-true/

para obtener más información sobre la función de cambio, consulte el enlace a continuación

https://docs.microsoft.com/en-us/dax/switch-function-dax

AnthonyTilley

En respuesta a AnthonyTilley

Aquí hay un archivo de muestra

archivo de muestra

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *