Cambio dinámico en el eje X

Un usuario Pregunto ✅

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í.

  1. 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.
  2. 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).
  3. Relacionar Año y Región para Región Año utilizando relaciones bidireccionales inactivas:
    Capture.PNG
  4. 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] )
        )
    )
  5. 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] )
    ) )
    )
  6. Entonces puedes crear visualizaciones usando RegionYear[Axis Value] y [Sales Amount Flexible Axis]
    Capture2.PNG

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

Capture.PNG

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

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í.

  1. 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.
  2. 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).
  3. Relacionar Año y Región para Región Año utilizando relaciones bidireccionales inactivas:
    Capture.PNG
  4. 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] )
        )
    )
  5. 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] )
    ) )
    )
  6. Entonces puedes crear visualizaciones usando RegionYear[Axis Value] y [Sales Amount Flexible Axis]
    Capture2.PNG

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:

image.png

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í:

image.png

image.png

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

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:

Capture.PNG

La medida:

Capture2.PNG

Saludos,

Xiaoxin Sheng

Deja un comentario

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