singhal14
Hola, todos,
Estoy probando un escenario en el que necesito un gráfico, y debería mostrar dos imágenes como ventas (YOY) por año y ventas (YOY) por área.
El eje x debe cambiarse utilizando Slicer, que tiene dos valores Year y Area.
¿Hay alguna forma de lograrlo? No necesito ninguna alternativa para eso, como profundizar, etc. Necesito que se haga exactamente eso.
Si es posible con dax, sugiera algo. (Estoy probando diferentes funciones dax para resolver este problema, pero no sé qué función exacta debería usarse para hacer esto).
Gracias,
Akash Singhal
OwenAuger
En respuesta a singhal14
Hola @ singhal14
Aquí hay una idea de cómo se puede hacer usando una tabla puente.
Bien podría haber otras formas de manejar esto 🙂
Modelo ficticio de Power BI aquí.
- Asumiendo que tienes Región y Año tablas de búsqueda, cree una Región Año tabla que es el producto cruzado de Región Y Año mesas.
- Duplica cada fila de Región Año y agrega un Dimensión del eje columna que es «Región» para la mitad de las filas y «Año» para la otra mitad, y un Valor del eje columna que es la Región o Año valor para cada fila (dependiendo del Dimensión del eje valor).
- Relacionar Año y Región para Región Año utilizando relaciones bidireccionales inactivas:
- Crear un Dimensión del eje seleccionada medir para recolectar el valor de Axis Dimension. Algo equivalente a esto (esto protege contra la selección múltiple):
Axis Dimension Selected = IF ( ISFILTERED ( RegionYear[Axis Dimension] ), IF ( CALCULATE ( HASONEVALUE ( RegionYear[Axis Dimension] ), ALLSELECTED () ), VALUES ( RegionYear[Axis Dimension] ) ) )
- Crear un Importe de ventas Eje flexible medir así (asumiendo Cantidad de ventas es la medida normal):
Sales Amount Flexible Axis = IF ( NOT ( ISBLANK ( [Axis Dimension Selected] ) ), SWITCH ( [Axis Dimension Selected], "Region",
CALCULATE ( [Sales Amount], USERELATIONSHIP ( RegionYear[Region], Region[Region] ) ), "Year",
CALCULATE (
[Sales Amount],
USERELATIONSHIP ( RegionYear[Year], 'Year'[Year] )
) )
) - Entonces puedes crear visualizaciones usando RegionYear[Axis Value] y [Sales Amount Flexible Axis]
harib
@OwenAuger
Está bien usar la tarjeta hasta que el usuario no seleccione el modo foucs. Si el usuario hace clic en el modo de enfoque, la tarjeta desaparecerá. 🙂
Gracias
uria
Hay una mejor solución en este blog:
http://tinylizard.com/dynamically-changing-chart-axis/
El único cambio es que porque usamos Power BI podemos habilitar el filtrado en ambas direcciones, por lo que no necesitamos ninguna medida compleja.
OwenAuger
En respuesta a uria
¡Tienes razón @uria! Sería más elegante usar el método de @ scottsen, como este ejemplo
http: //community.powerbi.com/t5/Desktop/Switch-X-Axis-column-through-a-slicer-filter/mp/66815#M2768 …
Entonces no hay complejidad en el DAX.
Dado que tenemos que combinar Región y Año, ¿imagina que el modelo de datos se vería así?
Enlace
harib
En respuesta a OwenAuger
Hola @OwenAuger
Fue una buena idea, pero cuando seleccionamos cualquier valor de Axis Dimension (Like Region), el nombre de la región debería reflejarse en el encabezado de la tabla en lugar de mostrar el valor del eje. ¿Podemos lograr esto en Power BI? Si es así, hágamelo saber.
Gracias de antemano
OwenAuger
En respuesta a harib
@harib, ¿puedes aclarar a qué te refieres con una imagen u otra ilustración?
harib
En respuesta a OwenAuger
@OwenAuger
Lo que quiero decir. cuando seleccionamos Región o Año en la segmentación, se refleja en la tabla, está bien, pero el nombre del título de la columna solo muestra el valor del Eje. Mi requisito es que si seleccionamos Región en la cortadora, el nombre de la región también debe aparecer en el título de la columna y también el mismo para el año, si seleccionamos el año, el nombre del año debe reflejarse en el título de la columna en lugar de mostrar el nombre de la columna (Valor del eje)
Has hecho un buen trabajo. si puede encontrar la respuesta a mi pregunta, es un gran logro.
Espero que entiendas.
OwenAuger
En respuesta a harib
Interesante idea @harib 🙂
No puedo encontrar una forma particularmente elegante de actualizar el encabezado de la columna en función de la selección de Dimensión del eje.
Lo mejor que puedo hacer es crear una medida y colocarla en una tarjeta sobre la parte superior del encabezado de la columna original:
Actualicé mi archivo para hacer esto, el mismo enlace aquí.
Saludos,
Owen
v-shex-msft
Hola @ singhal14,
>> Estoy probando un escenario en el que necesito un gráfico, y debería mostrar dos imágenes como ventas (YOY) por año y ventas (YOY) por área.
El eje x debe cambiarse utilizando Slicer que tiene dos valores Año y Área
De acuerdo con su descripción, desea usar la cortadora para elegir qué columna se muestra en el objeto visual como el eje, ¿verdad?
Según la prueba, los elementos visuales de escritorio Power Bi actualmente no son compatibles con esta función.
Para su requerimiento, puede publicarlo en idea.
https://ideas.powerbi.com/forums/265200-power-bi
Saludos,
Xiaoxin Sheng
singhal14
En respuesta a v-shex-msft
Hola @ v-shex-msft:
Gracias por contactarnos.
Soy consciente de que power bi no admite esta función.
Pero si lo intentamos con las funciones de DAX, es posible que lo logremos.
Necesito sus sugerencias, ¿podemos hacerlo utilizando las funciones de DAX? Y si la respuesta es SÍ, ¿cuál sería el enfoque?
Gracias,
Akash Singhal
OwenAuger
En respuesta a singhal14
Hola @ singhal14
Aquí hay una idea de cómo se puede hacer usando una tabla puente.
Bien podría haber otras formas de manejar esto 🙂
Modelo ficticio de Power BI aquí.
- Asumiendo que tienes Región y Año tablas de búsqueda, cree una Región Año tabla que es el producto cruzado de Región Y Año mesas.
- Duplica cada fila de Región Año y agrega un Dimensión del eje columna que es «Región» para la mitad de las filas y «Año» para la otra mitad, y un Valor del eje columna que es la Región o Año valor para cada fila (dependiendo del Dimensión del eje valor).
- Relacionar Año y Región para Región Año utilizando relaciones bidireccionales inactivas:
- Crear un Dimensión del eje seleccionada medir para recolectar el valor de Axis Dimension. Algo equivalente a esto (esto protege contra la selección múltiple):
Axis Dimension Selected = IF ( ISFILTERED ( RegionYear[Axis Dimension] ), IF ( CALCULATE ( HASONEVALUE ( RegionYear[Axis Dimension] ), ALLSELECTED () ), VALUES ( RegionYear[Axis Dimension] ) ) )
- Crear un Importe de ventas Eje flexible medir así (asumiendo Cantidad de ventas es la medida normal):
Sales Amount Flexible Axis = IF ( NOT ( ISBLANK ( [Axis Dimension Selected] ) ), SWITCH ( [Axis Dimension Selected], "Region",
CALCULATE ( [Sales Amount], USERELATIONSHIP ( RegionYear[Region], Region[Region] ) ), "Year",
CALCULATE (
[Sales Amount],
USERELATIONSHIP ( RegionYear[Year], 'Year'[Year] )
) )
) - Entonces puedes crear visualizaciones usando RegionYear[Axis Value] y [Sales Amount Flexible Axis]
Anónimo
En respuesta a OwenAuger
Hola @OwenAuger,
Gracias por comentar
aquí hay cortadoras para cambiar el visual, si uso esto, nuevamente necesito usar la cortadora para cambiar el eje X y también necesito proporcionar la cortadora original que es la región a la región específica seleccionada y el año para seleccionar el año específico.
El socio desea ver el año (Cambio para el eje X de la región) cuando selecciona cualquier región en el filtro de región. No quieren que una cortadora separada cambie el eje X.
Saludos,
Nagesh
OwenAuger
En respuesta a Anónimo
Hola @Anónimo
Podría hacer algo como esto, con una dimensión Región / Año desconectada que contiene valores de Región y Año. Esta dimensión se utiliza en el eje de su (s) visual (es).
Luego, puede crear una medida que detecte si la región está filtrada.
Aquí hay un ejemplo que configuré (enlace PBIX).
Tengo una tabla de Ventas con columnas Región, Año y Ventas.
RegionYear (tabla desconectada) tiene este aspecto:
Luego escribe una medida como esta:
Sales for Chart =
IF (
ISFILTERED ( Sales[Region] ),
CALCULATE (
SUM ( Sales[Sales] ),
TREATAS (
VALUES ( RegionYear[Year] ),
Sales[Year]
)
),
CALCULATE (
SUM ( Sales[Sales] ),
TREATAS (
VALUES ( RegionYear[Region] ),
Sales[Region]
)
)
)
Entonces las imágenes se ven así:
Saludos,
Owen
saichander
En respuesta a OwenAuger
Seguí los pasos, pero estoy enfrentando la suma de la región o el mes. obtengo la suma de toda la columna para cada región o mes. ¿Puede ayudarme a resolver el problema?
Gracias.
Howard88
En respuesta a OwenAuger
Estoy tratando de implementar el mismo enfoque, sin embargo, trato de evitar la duplicación de las filas de la tabla para crear la «Tabla puente» debido a la gran cantidad de datos. ¿Se pregunta si hay alguna forma de lograr esto sin duplicar la tabla? – «Duplique cada fila de RegionYear y agregue una columna Axis Dimension que es» Region «para la mitad de las filas y» Year «para la otra mitad, y una columna Axis Value que es el valor de Región o Año para cada fila (según el Valor de dimensión del eje) «.
Un enfoque que se intentó es usar un @Parameter de nivel de informe llamado Para_XAxis para la función de cambio, sin embargo, aunque el valor del parámetro se actualiza sin problemas y se puede leer en la tarjeta, la función de cambio simplemente no pudo obtener un valor válido del @Parameter. ¿Me pregunto si me perdí de algo?
Sales Amount Flexible Axis = IF ( NOT ( ISBLANK ( Para_XAxis[Parameter Value] ) ), SWITCH ( Para_XAxis[Parameter Value], "Region",
CALCULATE ( [Sales Amount], USERELATIONSHIP ( RegionYear[Region], Region[Region] ) ), "Year",
CALCULATE (
[Sales Amount],
USERELATIONSHIP ( RegionYear[Year], 'Year'[Year] )
) )
)
harib
En respuesta a Howard88
@ Howard88
Gracias por su respuesta y solución. Si tiene algún archivo de muestra, puede cargarlo.
Gracias
harib
En respuesta a OwenAuger
@OwenAuger
Es realmente genial, pero en mi senario Si no seleccionamos ningún valor de la cortadora (Dimensión del eje) podemos obtener el valor de la cantidad de venta agregada (4040). Si es posible, hágamelo saber.
Gracias por adelantado
v-shex-msft
En respuesta a singhal14
Hola @ singhal14,
Puede usar dax para escribir una medida que pueda funcionar con la cortadora, pero no puede usar dax para crear una columna dinámica (la medida no se puede arrastrar al campo del eje).
Muestra:
Mida para obtener el valor de la cortadora:
Valor seleccionado = si (HASONEVALUE (‘Tabla 2′[Type]), VALORES (‘Tabla 2′[Type]),BLANCO())
Calcular columna:
La medida:
Saludos,
Xiaoxin Sheng