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.

Power BI – Comparación de series de tiempo con dos fechas de inicio diferentes

Quiero comparar cómo están progresando diferentes campañas en función del número de días transcurridos en la campaña en lugar de por fecha (ver día1, día2, etc. en el eje x a continuación).

Aquí está mi código DAX, pero no puedo hacer que funcione. Cualquier ayuda será muy apreciada…

Métricas normalizadas de la campaña =
VAR FechaAlcanzada = CALCULATE(MIN(Days[Día]), db[FECHA_PAGO]<> BLANCO(), KEEPFILTERS(db[CÓDIGO_PRODUCTO SWITCH]))
VAR MaxFecha = CALCULATE(MAX(db[FECHA_PAGO]), KEEPFILTERS(db[CÓDIGO_PRODUCTO SWITCH]))
VAR NúmeroDía = SELECTEDVALUE(Days[Día])
RETURN CALCULATE(contar(db[FECHA_PAGO]),
FILTER(ALL(db[FECHA_PAGO]),
FechaAlcanzada+NúmeroDía && FechaAlcanzada+NúmeroDía<=MaxFecha))

¡Muchas gracias!
ver descripción de imagen aquí

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el código carece de contexto e información, como la estructura y contenido del modelo de datos utilizado, y la relación entre las tablas utilizadas en el cálculo. Sin esta información, es difícil proporcionar una solución específica.

    Sin embargo, según el código proporcionado y la imagen, parece que el objetivo es crear un gráfico de series temporales que muestre el progreso de diferentes campañas en función del número de días desde el inicio de la campaña.

    Un posible problema con el código es el uso de la tabla “Days”. No está claro qué representa esta tabla y cómo está relacionada con las otras tablas utilizadas en el cálculo. Si esta tabla contiene una lista de números enteros que representan el número de días desde el inicio de la campaña, entonces podría funcionar.

    Suponiendo que la tabla “Days” sea correcta, una posible forma de modificar el código para que funcione como se pretende es reemplazar la variable “DateReached” por una variable que calcule la fecha de inicio de la campaña en función del número de días. Esto se puede hacer utilizando la función MINX para encontrar la fecha mínima en la tabla “db” donde el número de días sea igual al número de días seleccionado.

    Aquí tienes un ejemplo de código que supone que la tabla “Days” contiene una lista de números enteros del 1 al 30 que representan el número de días desde el inicio de la campaña:

    Métricas normalizadas de la campaña =
    VAR SelectedDay = SELECTEDVALUE(Days[Day])
    VAR CampaignStart = MINX(FILTER(db, db[PRODUCT_CODE SWITCH] = "Campaign1"), db[PAYMENT_DATE], db[DAY_NUMBER] = SelectedDay)
    VAR MaxDate = CALCULATE(MAX(db[PAYMENT_DATE]),KEEPFILTERS(db[PRODUCT_CODE SWITCH]))
    RETURN
    CALCULATE(COUNT(db[PAYMENT_DATE]), FILTER(ALL(db[PAYMENT_DATE]), db[PAYMENT_DATE] >= CampaignStart && db[PAYMENT_DATE]<= MaxDate))
    

    En este código, la variable “SelectedDay” se establece en el número de días seleccionado en la tabla “Days”. La variable “CampaignStart” utiliza la función MINX para encontrar la fecha mínima en la tabla “db” donde la columna “PRODUCT_CODE SWITCH” es igual a “Campaign1” y la columna “DAY_NUMBER” es igual al número de días seleccionado. Esto supone que la tabla “db” contiene columnas para “PRODUCT_CODE SWITCH” y “DAY_NUMBER” para identificar la campaña y el número de días de cada transacción.

    La variable “MaxDate” se calcula de la misma manera que en el código original, utilizando la función MAX y el modificador “KEEPFILTERS” para ignorar cualquier filtro aplicado a la tabla “db”.

    Finalmente, el cálculo devuelve el recuento de fechas de pago en la tabla “db” que se encuentran dentro del rango de fechas desde la fecha “CampaignStart” hasta la fecha “MaxDate”.

    Este código modificado debería generar un gráfico de series temporales que muestre el progreso de cada campaña en función del número de días desde el inicio de la campaña, como se muestra en la imagen proporcionada.

Comments are closed.