Haz un gráfico de líneas con la fecha de inicio y la fecha de finalización

Un usuario Pregunto ✅

dickvankl

Hola,

Tengo un conjunto de datos con fecha de inicio y fecha de finalización por suscripción. Al lado tengo una columna con el tipo de suscripción. Quiero hacer un gráfico de líneas con el número de suscripciones a lo largo de los meses. ¿Alguien sabe cómo hacer esto?

Los datos se ven de la siguiente manera:

Muestra.JPG

Cuando la celda de la columna Fecha de finalización está vacía, la suscripción es una suscripción en curso. Entonces, cuando la fecha está entre la fecha de inicio y la fecha de finalización o la fecha es posterior a la fecha de inicio y la fecha de finalización está vacía, el cliente tiene una suscripción.

Quiero hacer un gráfico de líneas con la fecha en el eje x (por ejemplo, el primero de cada mes) y en el eje y el número de suscripciones en esa fecha.

Además, quiero usar un filtro con el tipo de suscripción, de modo que también pueda ver el gráfico de líneas con la cantidad de suscripciones a lo largo del tiempo para un determinado tipo de suscripción.

jdbuchanan71

Hola @dickvankl

Necesitará una tabla de fechas en su modelo para que mi medida funcione. Puedes hacer uno simple con el siguiente código DAX

Dates = 
VAR DateRange = CALENDARAUTO()

RETURN 
ADDCOLUMNS(
    DateRange,
    "Year",YEAR([Date]),
    "Month",FORMAT([Date],"mmmm"),
    "Year Month", FORMAT([Date],"yyyy-mmmm"),
    "YearMonthSort",YEAR([Date])*100 + MONTH([Date]),
    "ShortName",FORMAT([Date],"ddd"),
    "IsWeekDay", NOT WEEKDAY( [Date] ) IN {1,7}
)

Luego una medida así para contar las suscripciones.

Subscription Count = 
VAR _FirstDate = FIRSTDATE ( Dates[Date] )
VAR _LastDate = LASTDATE ( Dates[Date] )

RETURN
CALCULATE (
    DISTINCTCOUNT ( Subscriptions[Subscription number] ),
    Subscriptions[Starting date] <= _LastDate,
    Subscriptions[End date] > _FirstDate || ISBLANK ( Subscriptions[End date] )
)

Coloca el campo Año Mes en el eje y la medida en los valores:

Suscripciones.jpg

matan_benyishay

Y aquí está mi código, porque no pude pegarlo en un solo lugar:

Num of clients = 
CALCULATE(
DISTINCTCOUNT('Program enrollments'[Clients Unique Identifier]),
filter('Program enrollments', 
'Program enrollments'[Program Start Date]<=LASTDATE('Calendar Table'[Date].[Date]) && 
('Program enrollments'[Program Exit Date]>=FIRSTDATE('Calendar Table'[Date].[Date]) || ISBLANK('Program enrollments'[Enrollments Project Exit Date])))))

jdbuchanan71

En respuesta a matan_benyishay

@matan_benyishay

Quitar la unión a la tabla de fechas. El filtrado de las fechas se maneja en los criterios de la medida.

matan_benyishay

En respuesta a jdbuchanan71

Gracias. Intenté eso, y obtengo una línea plana en ese caso.

matan_benyishay_0-1606927922370.png

jdbuchanan71

En respuesta a matan_benyishay

par de preguntas,

¿Su tabla de Calendario está marcada como la tabla de fechas en el modelo?

¿Está su fecha en el eje X del gráfico de la tabla Calendario?

No necesita usar ‘Tabla de calendario'[Date].[Date], el segundo [Date] es de la inteligencia de tiempo automático que powerBI arroja cuando no tiene una tabla de fechas.

Solo debe usar ‘Tabla de calendario'[Date] en tu medida.

matan_benyishay

En respuesta a jdbuchanan71

¡Gracias, eso lo manejó! No, no lo había puesto como tabla de fechas en el modelo, eso no era algo que entendiera todavía.

matan_benyishay

Hola,

Estoy intentando algo como esto (bastante básico) pero creo que podría haber algún problema con mi combinación.

En una tabla, tengo la ID única del cliente, el nombre del programa, la fecha de inicio y finalización del programa. Creé otra tabla con calendar() y le agregué cosas como el año fiscal.

Traté de unir la fecha de inicio del programa a la fecha en la tabla del calendario. Luego creé la variable de conteo como arriba. (Estoy tratando de publicarlo sin el código porque no funcionaba con él).

Sin embargo, el conteo no funciona bien en comparación con verificarlo manualmente. Eso probablemente tenga sentido ya que la unión es extraña.
¿Algún consejo sobre cómo debo unirme a las mesas?

jdbuchanan71

Hola @dickvankl

Necesitará una tabla de fechas en su modelo para que mi medida funcione. Puedes hacer uno simple con el siguiente código DAX

Dates = 
VAR DateRange = CALENDARAUTO()

RETURN 
ADDCOLUMNS(
    DateRange,
    "Year",YEAR([Date]),
    "Month",FORMAT([Date],"mmmm"),
    "Year Month", FORMAT([Date],"yyyy-mmmm"),
    "YearMonthSort",YEAR([Date])*100 + MONTH([Date]),
    "ShortName",FORMAT([Date],"ddd"),
    "IsWeekDay", NOT WEEKDAY( [Date] ) IN {1,7}
)

Luego una medida así para contar las suscripciones.

Subscription Count = 
VAR _FirstDate = FIRSTDATE ( Dates[Date] )
VAR _LastDate = LASTDATE ( Dates[Date] )

RETURN
CALCULATE (
    DISTINCTCOUNT ( Subscriptions[Subscription number] ),
    Subscriptions[Starting date] <= _LastDate,
    Subscriptions[End date] > _FirstDate || ISBLANK ( Subscriptions[End date] )
)

Coloca el campo Año Mes en el eje y la medida en los valores:

Suscripciones.jpg

martinmartinez

En respuesta a jdbuchanan71

Hola @jdbuchanan71, ¡espero que estés bien!

¡Tu solución me ayudó a resolver un caso muy similar! ¡Muchas gracias!

Pero también necesito agregar información al mismo cuadro y tal vez me puedas ayudar.

Tengo una columna de «Cantidad», donde pongo el dinero que cada cliente tiene que pagar mensualmente por el servicio.

Por lo tanto, agregué una medida de la siguiente manera (no tengo una posibilidad en blanco en «fecha de finalización», así que la omití):

Cantidad de suscripción =

VAR _FirstDate = FIRSTDATE ( Fechas[Date])

VAR _LastDate = LASTDATE ( Fechas[Date])

REGRESO

CALCULAR (

SUMA (‘Suscripción[Amount]);

Suscripción[Starting Date] <= _ÚltimaFecha;

‘Suscripción[End Date] > _Primera Fecha

)

De esta manera, accedo a un «Gráfico de columnas y líneas», «Mes del año» al eje compartido y «Cantidad de suscripción» a los valores de las columnas.

Y obtengo la SUMA de todos los pagos individuales de mis clientes por cada mes incluido en el contrato.

También arrastró el nombre del cliente a la serie de columnas.

Ahora necesito mostrar los «Ingresos acumulados» que me pagaron durante la línea de tiempo.

Ejemplo…

– si en enero de 2019 tengo un «cliente A» que pasa $100 y un «Cliente B» que paga $200. Entonces el acumulado para enero 2019 es de $300.

– si febrero de 2019 todavía tengo clientes A y B, y obtuve un nuevo contrato con el «Cliente C» por $400. Entonces, el ingreso acumulado para febrero de 2019 debería ser de $1000 ($300 en enero de A y B, y $700 en febrero para «A, B y C»).

– si marzo de 2019 todavía tengo clientes B y C, pero el contrato de A está terminado. Entonces, el ingreso acumulado para marzo de 2019 debería ser de $1600 ($1000 acumulados hasta febrero de 2019, más $200 para el cliente B y $400 para el cliente C).

Espero haber sido claro con la explicación y muchas gracias de antemano!!!

¡Saludos!

Matías.

dickvankl

En respuesta a jdbuchanan71

@ jdbuchanan71 ¡muchas gracias!

Deja un comentario

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