es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tabla de calendario condicional DAX en Power BI con Switch o declaración if.

Objetivo: construir una tabla de calendario dinámica que sea condicional según la selección de un filtro.

Contexto: Para reducir el tamaño del panel que estoy construyendo, los datos se proporcionan a nivel diario para los últimos 90 días y se agregan mensualmente para los 18 meses anteriores.
Se utiliza un filtro de fecha para filtrar los datos, pero quiero que el rango de este filtro refleje el rango de fechas que se está utilizando.

El objetivo es que el usuario elija el período de tiempo desde un filtro que luego filtra la fecha de inicio y fin del filtro de fecha.

Mi impresión es que tal vez no sea posible que una tabla de calendario sea tan dinámica como se requiere, pero agradecería mucho que se confirmara. ¡Gracias!

A continuación se muestra la tabla calculada que he estado intentando.

(change_mstart, change_mend, change_qstart y change_qend son tablas de valores de fecha únicas generadas a partir de un parámetro)

Period_D_Metric1# =
VAR _latestmonth = CALENDAR(max(change_mstart[change_mstart]), max(metric_mend[metric_mend]))
VAR _latestquarter = CALENDAR(max(change_qstart[change_qstart]), max(metric_qend[metric_qend]))
VAR _custommonth = CALENDAR(min(AvailabilityD[Date]), max(AvailabilityD[Date]))
VAR _customquarter = CALENDAR(min(AvailabilityM[Month]), max(AvailabilityM[Month]))
RETURN
Switch(
TRUE(),
SELECTEDVALUE(‘Table'[Period]) = “Último mes”,
_latestmonth,
SELECTEDVALUE(‘Table'[Period]) = “Último trimeste”,
_latestquarter,
SELECTEDVALUE(‘Table'[Period]) = “Diario personalizado”,
_custommonth,
SELECTEDVALUE(‘Table'[Period]) = “Mensual personalizado”,
_customquarter
)

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución

    Sí, es posible crear una tabla de calendario dinámica que condicione la selección de un cortador. Tu tabla calculada parece ser un buen comienzo.

    Para hacerlo funcionar, necesitas enlazar esta tabla con tu modelo de datos, y luego utilizar el rango de fechas seleccionado por el usuario para filtrar tus datos. Aquí te presentamos un ejemplo de cómo puedes hacerlo:

    1. Crea una nueva tabla en tu modelo de datos llamada “Calendario”. Puedes hacer esto yendo a “Modelado” > “Nueva tabla” en Power BI Desktop.
    2. Copia y pega el código de tu tabla calculada en la barra de fórmulas de la nueva tabla.

    3. Crea relaciones entre tu tabla “Calendario” y otras tablas de datos basadas en las columnas de fecha.

    4. En tus visuales, utiliza la columna de fecha de la tabla “Calendario” para mostrar los datos, en lugar de utilizar la columna de fecha de la tabla de datos original.

    5. Crea un cortador que permita a los usuarios seleccionar el período de tiempo que desean ver. Enlaza este cortador con tu tabla calculada, de modo que filtre las fechas de inicio y fin de la tabla de calendario.

    Aquí te presentamos un código DAX que puedes utilizar para filtrar tus datos basándote en la tabla de calendario:

    DatosFiltrados =
    SI (
        VALORSELECCIONADO ( 'Tabla'[Periodo] ) = "Último mes",
        FILTRAR ( 'DatosOriginales', 'DatosOriginales'[Fecha] >= MAX ( 'Calendario'[Fecha] ) ),
        SI (
            VALORSELECCIONADO ( 'Tabla'[Periodo] ) = "Último trimestre",
            FILTRAR ( 'DatosOriginales', 'DatosOriginales'[Fecha] >= MAX ( 'Calendario'[Fecha] ) ),
            SI (
                VALORSELECCIONADO ( 'Tabla'[Periodo] ) = "Personalizado diario",
                FILTRAR ( 'DatosOriginales', 'DatosOriginales'[Fecha] >= MIN ( 'Calendario'[Fecha] ) && 'DatosOriginales'[Fecha] <= MAX ( 'Calendario'[Fecha] ) ),
                FILTRAR ( 'DatosOriginales', 'DatosOriginales'[Fecha] >= MIN ( 'Calendario'[Fecha] ) && 'DatosOriginales'[Fecha] <= MAX ( 'Calendario'[Fecha] ) )
            )
        )
    )
    

    Con este código, puedes filtrar tus datos basándote en la selección del periodo de tiempo del usuario. El código comprueba qué periodo fue seleccionado y, a continuación, filtra los datos en consecuencia.

    ¡Espero que esto ayude! Hazme saber si tienes alguna otra pregunta.

Comments are closed.