Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
pc2
Helper I
Helper I

Cálculo de importe mes a mes para cada cliente por etapa

Tengo las siguientes tablas en Power BI Desktop:

  • Tabla de fechas
  • Tabla de facturación del cliente: Fecha de facturación, ID de cliente, Producto, Importe facturado
  • Tabla de clientes: ID de cliente, Primera fecha de facturación, Fecha de aviso de cancelación

Para cada cliente, me gustaría agrupar su facturación en 3 categorías: (1) Nuevo, (2) Churn y (3) Existente

  1. Nuevo: todas las facturas del cliente en el 1er 120 días desde la primera fecha de facturación caerían en esta categoría
  2. Churn: el cliente enviaría un aviso de cancelación. Se captura la "Fecha de aviso de cancelación" y todas las facturas desde esta fecha estarían en la categoría "Churn"
  3. Existente: todas las facturas para el cliente que no caiga en "Nuevo" y "Churn" se clasificarían como "Existente"

Mi objetivo es calcular el cambio mes a mes en Facturación $ para cada cliente y aislarlo para cada categoría: Nuevo, Existente y Churn. A continuación, me gustaría ver esto por mes que agrega cada número de cliente para cada mes.

Si el cliente no tiene una fecha de aviso de cancelación, solo tendría dos categorías: Nuevo y Existente.

No estoy seguro de cómo manejar esto si agregar algunas columnas calculadas y / o hacerlo con medidas.

Tengo la parte fácil, que calcula el cambio mes a mes:

Facturación del mes actual: suma (facturación[Facturado])

Facturación del mes anterior: calcular ( [Facturación del mes actual], DATEADD('Fecha'[Fecha], -1, MES))

Cambio de moM á [Facturación del mes actual] - [Facturación del mes anterior]

He abordado los siguientes pasos, pero no obteniendo los resultados que necesito (debajo de la tabla). ¿Cuál es la mejor manera de manejar esto? Me gustaría poder profundizar en el nivel del cliente y mirarlo por producto también.

MesMoM NuevoMoM ExistenteMoM Churn
Enero
Febrero
Marzo
Abril
Mayo
Junio
Julio
Agosto
1 ACCEPTED SOLUTION
Anonymous
Not applicable

Hola

Si lo hago bien, su cliente tiene un estado para cada pedido que realice, basado en la fecha de facturación,su primera fecha de compra y una fecha de cancelacióneventual. Este estado puede ser nuevo/existente/churn y puede evolucionar con el tiempo para un cliente.

En este caso, iría con una columna calculada. Pero este escenario también podría resolverse utilizando varias medidas dax o incluso otras técnicas. Puede encontrar el archivo .pbix que contiene lo que he hecho.

Opción 1: utilizando una columna calculada

¿Por qué iría por una columna calculada?

  • mejor rendimiento en el momento de la consulta, especialmente cuando se abordan cálculos intensivos de recursos como este que no son dinámicos (para una fila en Facturación de cliente, el valor para el estado del cliente seguiría siendo el mismo)
  • menos código DAX
  • posibilidad de cortar y cortar en el estado del cliente

Aquí, ya que su estado depende de la fecha del pedido, lo agregaría a la tabla facturación del cliente, ya que es la única tabla que contiene este nivel de detalle.

El código para 'Facturación del cliente'[Estado del cliente]

Customer Status = 

VAR OrderDate = Sales[Order Date]
VAR FirstBillingDate = RELATED( Customer[First Billing Date] )
VAR CancellationDate = RELATED( Customer[Cancellation Notice Date] )

VAR CustomerCategory =
    SWITCH(
        TRUE(),
        OrderDate >= CancellationDate, "Churn",
        OrderDate <= (FirstBillingDate + 120), "New",
        "Existing"
    )

RETURN CustomerCategory

Espero haber reproducido su lógica de negocios en el SWITCH como pretendía.

A continuación, simplemente tiene que agregar su campo a su visual y su medida moM que ya ha creado y obtiene:

Results using Option 1Resultados con la opción 1

Pero, ¿son correctos los resultados? Hice una comprobación rápida de spot mirando los detalles del cliente:

Are the results correct? We can check for a customer¿Son correctos los resultados? Podemos comprobar si hay un cliente

En julio, nuestro cliente gasta 1222 y se considera existente (primera facturación el 22 de febrero)

A continuación, en agosto, el cliente sigue siendo "existente", pero gasta sólo 1100, que es de hecho 122 menos que el 1222 de julio

Opción 2, utilizando medidas DAX

Si no puede o no desea usar una columna calculada, todavía puede abordar el escenario con medidas DAX. Una de las principales desventajas es que tendrás que escribir cada medida tres veces: una para la nueva, otra para la existente y otra para el churn.

Las medidas para Sales for New serían las siguientes:

Sales for New = 

VAR SalesLinesMadeByNew = 
    FILTER(
        SUMMARIZE(Sales, Sales[Order Date] , Sales[CustomerKey], Customer[First Billing Date] ),
        Sales[Order Date] <= Customer[First Billing Date] + 120
    )

VAR SalesAmountMadeByNew =
    CALCULATE(
        [Sales Amount],
        SalesLinesMadeByNew
    )

Return SalesAmountMadeByNew    

Aquí primero calcule una tabla que luego usaré como filtro.

Esta tabla se almacena en la variable SalesLinesMadeByNew y contiene todos los valores de Customer/OrderDate que se consideran New.

Tenga en cuenta que seguramente hay otras alternativas de DAX para realizar este cálculo.

Y se puede ver que la opción 2 produce los mismos resultados que la opción 1:

He añadido la columna calculada como un encabezado de columna y luego las diferentes medidas.

compare_second_option.PNG

¿Cuáles son las diferencias de rendimiento?

En mi máquina, la consulta para generar el año/mes del informe con Sales + Sales MoM para cada estado del cliente:

  • Opción 1 > 60ms
  • Opción 2 > 240ms

La opción 1 es 4 veces más rápida que la opción 2

¿Qué hago si mis parámetros tienen que cambiar? Por ejemplo, necesito dejar que el usuario decida qué duración define la "Nueva categoría" con una segmentación de datos (en lugar de usar siempre 120 días).

Entonces la opción 1 ya no funciona y usar medidas DAX con un parámetro sería la mejor opción.

Saludos

Thomas

View solution in original post

12 REPLIES 12
Ashish_Mathur
Super User
Super User

Hola

Comparte el enlace desde donde puedo descargar tu archivo PBI.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

@Ashish_Mathur

Aquíestá el enlace al archivo pbix.

Gracias por su ayuda. Usé @ThomasKwakman 's Option #1 como la solución y se ve muy bien, pero sólo tengo este problema para resolver. Creo que el problema es con la medida Mes a mes donde tomar la facturación del mes actual menos la facturación del mes anterior. Sin embargo, esto hace que el mes (cuando se produce la cancelación) tenga los períodos "Existente" y "Churn" y uno falta Facturación actual y el otro falta Facturación del mes anterior. Verás en el archivo pbix de lo que estoy hablando.

Me gustaría que el Estado del Cliente fuera mutuamente excluyente, es decir, un mes determinado debe tener uno de los estados, no ambos.

Anonymous
Not applicable

Hola @pc2 ,

No sé qué pasó, pero mi respuesta se publicó en el foro español, pero no aquí...

Sí, como ha notado que un cliente puede tener un estado diferente para un mismo mes y, como entiendo, solo desea un valor.

Así que aquí tenemos dos cosas a tener en cuenta:

- el primero para el estado de abandono, ya que la fecha de cancelación puede ocurrir durante un mes (podríamos tener simultáneamente existente y Churn)

- el segundo para el nuevo estado, ya que el final del nuevo período puede ocurrir durante un mes (podríamos tener simultáneamente Nuevo y Existente)

Para ello es necesario cambiar el código de la columna calculada. La lógica de negocios será:

Para la rotación,ya que la fecha de cancelación puede producirse durante el mes, debe convertirla al inicio o al final del mes.
Fui por fin de mes
por ejemplo, 15-oct-2020 se convertirá a 01-oct-2020 y todas las ventas en octubre se considerarán como

Para nuevo, no es la primera fecha de facturación que vamos a cambiar, pero la primera fecha de facturación + 120 días que vamos a cambiar.

Usé la siguiente lógica:

  • si el día de la Primera Fecha de BIlling es menor o igual que 15, redondeo la fecha al comienzo del mes actual
    por ejemplo, 10-jan-2020 + 120 días > 10-may-2020 que se convierte en 1-may-2020 (c. 110 días para el nuevo período)
  • si el día de la Primera Fecha de BIlling es mayor que 15, redondeo la fecha al comienzo del mes siguiente
    por ejemplo, 20-jan-2020 + 120 días > 20-may-2020 que se convierte en 1-june-2020 (c. 130 días para el nuevo período)

Aquí está el código:

Customer Status = 

VAR OrderDate = Sales[Order Date]

// rounding end of "New status" period at start or end of month, to get all sales of one month under one status
VAR FirstBillingDate = RELATED( Customer[First Billing Date] )
VAR EndOfNewPeriodRaw = FirstBillingDate + 120
VAR EndOfNewPeriodStartOfMonth =
    IF( DAY(FirstBillingDate) <= 15,
        DATE( YEAR(EndOfNewPeriodRaw), MONTH(EndOfNewPeriodRaw), 1),
        EOMONTH(EndOfNewPeriodRaw,0)+1
    )

// same here, rounding cancellation date to start of month
VAR CancellationDateRaw = RELATED( Customer[Cancellation Notice Date] )
VAR CancellationDateStartOfMonth = DATE( YEAR( CancellationDateRaw ) , MONTH( CancellationDateRaw ) , 1 )

// calculating status
VAR CustomerCategory =
    SWITCH(
        TRUE(),
        OrderDate >= CancellationDateStartOfMonth, "Churn",
        OrderDate < EndOfNewPeriodStartOfMonth, "New",
        "Existing"
    )

RETURN CustomerCategory

Nota: aquí tomé algunas decisiones con respecto a la lógica de negocios, depende de usted para cambiarlo si es necesario

Nota 2: aquí si usted absolutamente necesita tener 120 días para el nuevo período, entonces usted tendrá que aceptar tener posiblemente los dos estados diferentes "existente" y "nuevo" para un mes para un cliente

¿Cómo puedes comprobar que todo funciona bien?

1. Cree una medida que cuente el número de estados de cliente distintos: DISTINCTCOUNT( ' Customer Billings'[Customer Status] )

2. Añadirlo a un objeto visual con la dimensionalidad del cliente/año/mes

3. Añadir un filtro en la medida: mayor que 1

•> Visual debe estar vacío, ya que no desea que ningún cliente con más de un estado de cliente durante un mes

Espero que ayude y funcione. ¿De verdad?

Que tengas un buen día

Thomas

@ThomasKwakman

Muchas gracias. He actualizado y tengo el siguiente resultado a continuación.

Puse el archivo pbix aquí (enlace de archivo). ¿Le importaría echarle un vistazo, por favor?

He actualizado la columna calculada, Estado del cliente, como usted prescribió y puedo ver que cada mes tiene un estado único ahora.

Sin embargo, el cálculo M2M todavía está desactivado. Verá que para el Cliente B, para el mes de junio de 2019, sucede lo siguiente:

  • Existente: Facturación actual de $11,513, Anterior Mo Billing-0, lo que causa M2M$11,513
  • Churn: Facturación actual 0, Mosdete anterior $11,377, causando M2M -$(11,377)

Creo que el problema es con el cálculo M2M para el mes superpuesto en cuestión.

Capture2.JPG

Lo que esperaba ver está a continuación (lo me burlé en Excel):

Capture3.JPG

Anonymous
Not applicable

Hola @p2c,

Tuve un vistazo de cerca a sus capturas de pantalla y gracias por ello, muy claro.

Después de pensar un poco, no estoy seguro de que el MoM calcula la figura incorrecta. En realidad, realmente depende de lo que queremos que calcule.

Si nos fijamos en el nivel de cliente,por lo que en las 3 columnas en el extremo derecho,vemos que el total calculado sigue siendo correcto:

  • +136$ en junio de 2019 como cliente pasó de 11 377 a 11 513
  • +6$ en junio de 2020 como cliente pasó de 11 153 a 11 159

Screenshot.PNG

Si procesamos la forma que pretendía en su maqueta, significará que su nueva categoría agregará ventas para que los clientes se conviertan en nuevas, pero no subsaplará las ventas para los clientes que abandonan la categoría. Lo que producirá resultados demasiado altos.

Aquí hay un ejemplo,digamos que miramos lo que sucedió entre febrero y marzo para la nueva categoría:

  • Cliente A: fue y se queda en Nuevo. Hace +500$ en marzo (de 1000$ a 1500$)
  • Cliente B: era nuevo en febrero, cambiar a existente en marzo. Fue 11 000$ en febrero. Según su explicación en la segunda captura de pantalla,produciría 0.
  • Cliente C: no estaba allí en febrero, pero es nuevo en marzo. Hace +10 000$

> Resultado: la nueva categoría creció por 10 100$ en marzo. Tenemos cada vez más nuevos clientes... cuando en realidad no lo hacemos como lo hicimos -500$

Tal vez estoy leyendo toda la situación desde el ángulo equivocado, por favor dime cuál es tu pensamiento en este caso.

Mejor

Thomas

@ThomasKwakman

Gracias por su respuesta. Te escucho que el Total M2M es correcto y estoy de acuerdo. Pero, creo que la lógica en M2M necesita cambiar para conseguir lo que estoy detrás de Thomas. Por favor, vea la imagen de abajo.

¿Hay alguna manera de actualizar DAX para calcular M2M para que el número de Prev Mo se incluya en el estado correcto?

Para junio de 2019, este es el estado "Existente" y quiero que tanto Current como Prev Mo Billing aparezcan aquí.

Lo mismo para junio de 2020, este es el estado "Churn" y quiero que tanto Current como Prev Mo Billing aparezcan aquí.

Capture4.JPG

@ThomasKwakman

Thomas, creo que he resuelto esto. Estoy haciendo algunas pruebas para asegurarme de que esto es correcto. Te lo haré saber.

He añadido otra columna calculada para agarrar Prev Mo Billing. Entonces, en lugar de usar la inteligencia de tiempo para calcular la facturación previa, estoy sumando esta nueva columna para obtener el Prev Mo Biling, que luego se utiliza para calcular M2M. Parece que me da lo que quiero (ver 2a imagen a continuación).

¿Puedes echar un vistazo y ver si lo que hice tiene sentido y debería funcionar en todo momento?

pc2_0-1602529813339.png

pc2_1-1602529953406.png

@ThomasKwakman

Thomas, mi sugerencia anterior tiene un defecto. Si el cliente no compra un producto específico en un mes posterior, no se capturará prev Mo Billing.

Por ejemplo, si el cliente compra

  • Feb 2020, Producto 1 por $100, Producto 2 por $50,
  • Mar 2020, Producto 1 para 80 y sin Producto 2

La columna calculada de Prev Mo Billing para Mar 2020 solo recogerá para el Producto 1 y el Producto 2 será cero y esto debería ser $50. Esto se debe a que no hay línea producto 2 en marzo de 2020. 😞

¿Alguna idea de cómo solucionar esto?

@ThomasKwakman

Tuve una solución y funciona. He creado otra tabla de facturación con todas las fechas en ella, por lo que puedo calcular los números M2M correctamente.

New Billing Table = CROSSJOIN( SUMMARIZE('Date', 'Date'[Date]), VALUES(Billing[Product]),   SUMMARIZE( Billing,  Billing[Customer_ID], Billing[Customer_Name]))

Luego agregué dos columnas calculadas para Billing y Prev Mo Billing.

Esto funciona, pero realmente puso en globo el tamaño del archivo, pero no veo ninguna otra manera de hacerlo para este problema que estaba resolviendo.

Tu solución y tus códigos de detalle realmente me ayudaron. Estoy marcando la tuya como la solución proporcionada.

Gracias de nuevo por su ayuda.

Anonymous
Not applicable

Hola @pc2

El comportamiento que observó y describió va en línea con el código, pero según entiendo no es el comportamiento que esperaba.

Aquí, a medida que la fecha de cancelación se produce durante el mes, su cliente puede tener dos estados y el MoM procesará un valor para cada uno de ellos. En el valor total se ve bien, sin embargo, tener dos estados con un valor cada uno puede crear confusión.

La lógica de negocios debe cambiar y solo desea un estado al mes. La solución sigue siendo la misma, pero los valores de la columna calculada necesitan una pequeña corrección:

  • para el abandono, necesitamos ajustar la fecha de cancelación al inicio del mes actual o al inicio del mes siguiente
    por ejemplo, si la cancelación se produce el 15-august-2020, podría ser 01-august-2020 o 01-sept-2020
    Fui para el inicio del mes actual, es decir, 01-august-2020
  • para la nueva categoría, de la misma manera que necesitamos ajustar una fecha. Aquí no es la primera fecha de facturación, sino la primera fecha de facturación + 120 días que podría crear problemas. por ejemplo, si la primera fecha de facturación es 15-jan-2020, entonces mayo-2020 podría dividirse en dos (nuevo y existente)
    En este caso, redondeé el final del nuevo período de estado al inicio o al final del mes, dependiendo de la primera fecha de facturación:
    • si el día de la primera fecha de facturación es menor o igual a 15, redondear para el inicio del mes
      Si la fecha de primera facturación es 05-jan-2020, entonces el nuevo estado termina el 30-apr-2020 (c. 115 días)
    • si el día de la primera fecha de facturación es mayor que 15, redondré hasta fin de mes
      Si la primera fecha de facturación es 20-jan-2020, entonces el nuevo estado termina el 31-may-2020 (c. 130 días)

Aquí está el nuevo código para 'Facturaciones de cliente'[Estado del cliente] :

Customer Status = 

VAR OrderDate = Sales[Order Date]

// rounding end of "New status" period at start or end of month, to get all sales of one month under one status
VAR FirstBillingDate = RELATED( Customer[First Billing Date] )
VAR EndOfNewPeriodRaw = FirstBillingDate + 120
VAR EndOfNewPeriodStartOfMonth =
    IF( DAY(FirstBillingDate) <= 15,
        DATE( YEAR(EndOfNewPeriodRaw), MONTH(EndOfNewPeriodRaw), 1),
        EOMONTH(EndOfNewPeriodRaw,0)+1
    )

// same here, rounding cancellation date to start of month
VAR CancellationDateRaw = RELATED( Customer[Cancellation Notice Date] )
VAR CancellationDateStartOfMonth = DATE( YEAR( CancellationDateRaw ) , MONTH( CancellationDateRaw ) , 1 )

// calculating status
VAR CustomerStatus =
    SWITCH(
        TRUE(),
        OrderDate >= CancellationDateStartOfMonth, "Churn",
        OrderDate < EndOfNewPeriodStartOfMonth, "New",
        "Existing"
    )

RETURN CustomerStatus

Nota 1: si desea aplicar un estado por mes para un cliente, la regla de 120 días será un poco alterada: a veces será 115, 120, 125, ... Si necesita aplicar la regla de 120 días después de la primera fecha de facturación, tendrá que aceptar que para algún cliente tendrá los estados "Nuevo" y "Existente" para el mismo mes.

Nota 2: por supuesto, aquí tomé decisiones con respecto a la lógica de negocios, pero sólo tiene que adaptarlo a lo que mejor se adapte a su caso

Para comprobar si se valida la regla "un estado por cliente-mes", puede:

1. Cree la siguiente medida DAX

Nb of distinct statuses = DISTINCTCOUNT( Sales[Customer Status] )

2. Arrástrelo a una tabla con una dimensionalidad de cliente/año/mes

3. Aplique un filtro en la medida para comprobar si hay alguna celda con un valor superior a 1. La tabla debe estar vacía.

Espero que funcione para ti. ¿De verdad?

Que tengas un buen día

Thomas

Anonymous
Not applicable

Hola

Si lo hago bien, su cliente tiene un estado para cada pedido que realice, basado en la fecha de facturación,su primera fecha de compra y una fecha de cancelacióneventual. Este estado puede ser nuevo/existente/churn y puede evolucionar con el tiempo para un cliente.

En este caso, iría con una columna calculada. Pero este escenario también podría resolverse utilizando varias medidas dax o incluso otras técnicas. Puede encontrar el archivo .pbix que contiene lo que he hecho.

Opción 1: utilizando una columna calculada

¿Por qué iría por una columna calculada?

  • mejor rendimiento en el momento de la consulta, especialmente cuando se abordan cálculos intensivos de recursos como este que no son dinámicos (para una fila en Facturación de cliente, el valor para el estado del cliente seguiría siendo el mismo)
  • menos código DAX
  • posibilidad de cortar y cortar en el estado del cliente

Aquí, ya que su estado depende de la fecha del pedido, lo agregaría a la tabla facturación del cliente, ya que es la única tabla que contiene este nivel de detalle.

El código para 'Facturación del cliente'[Estado del cliente]

Customer Status = 

VAR OrderDate = Sales[Order Date]
VAR FirstBillingDate = RELATED( Customer[First Billing Date] )
VAR CancellationDate = RELATED( Customer[Cancellation Notice Date] )

VAR CustomerCategory =
    SWITCH(
        TRUE(),
        OrderDate >= CancellationDate, "Churn",
        OrderDate <= (FirstBillingDate + 120), "New",
        "Existing"
    )

RETURN CustomerCategory

Espero haber reproducido su lógica de negocios en el SWITCH como pretendía.

A continuación, simplemente tiene que agregar su campo a su visual y su medida moM que ya ha creado y obtiene:

Results using Option 1Resultados con la opción 1

Pero, ¿son correctos los resultados? Hice una comprobación rápida de spot mirando los detalles del cliente:

Are the results correct? We can check for a customer¿Son correctos los resultados? Podemos comprobar si hay un cliente

En julio, nuestro cliente gasta 1222 y se considera existente (primera facturación el 22 de febrero)

A continuación, en agosto, el cliente sigue siendo "existente", pero gasta sólo 1100, que es de hecho 122 menos que el 1222 de julio

Opción 2, utilizando medidas DAX

Si no puede o no desea usar una columna calculada, todavía puede abordar el escenario con medidas DAX. Una de las principales desventajas es que tendrás que escribir cada medida tres veces: una para la nueva, otra para la existente y otra para el churn.

Las medidas para Sales for New serían las siguientes:

Sales for New = 

VAR SalesLinesMadeByNew = 
    FILTER(
        SUMMARIZE(Sales, Sales[Order Date] , Sales[CustomerKey], Customer[First Billing Date] ),
        Sales[Order Date] <= Customer[First Billing Date] + 120
    )

VAR SalesAmountMadeByNew =
    CALCULATE(
        [Sales Amount],
        SalesLinesMadeByNew
    )

Return SalesAmountMadeByNew    

Aquí primero calcule una tabla que luego usaré como filtro.

Esta tabla se almacena en la variable SalesLinesMadeByNew y contiene todos los valores de Customer/OrderDate que se consideran New.

Tenga en cuenta que seguramente hay otras alternativas de DAX para realizar este cálculo.

Y se puede ver que la opción 2 produce los mismos resultados que la opción 1:

He añadido la columna calculada como un encabezado de columna y luego las diferentes medidas.

compare_second_option.PNG

¿Cuáles son las diferencias de rendimiento?

En mi máquina, la consulta para generar el año/mes del informe con Sales + Sales MoM para cada estado del cliente:

  • Opción 1 > 60ms
  • Opción 2 > 240ms

La opción 1 es 4 veces más rápida que la opción 2

¿Qué hago si mis parámetros tienen que cambiar? Por ejemplo, necesito dejar que el usuario decida qué duración define la "Nueva categoría" con una segmentación de datos (en lugar de usar siempre 120 días).

Entonces la opción 1 ya no funciona y usar medidas DAX con un parámetro sería la mejor opción.

Saludos

Thomas

@ThomasKwakman

Muchas gracias su respuesta detallada.

Intenté Opción #1, Columna calculada. Casi está produciendo el resultado correcto, pero hay un problema. He incluido la foto de abajo.

He aislado para un solo cliente a cero en el problema

Este cliente tiene una fecha de cancelación del 6/22/2020.

Como puede ver, para el mes de junio de 2020, el importe de M2M aparece en "Churn" y "Existing". El importe neto está bien, ya que se compensa, pero individualmente, causa exageración en uno y subestimación en el otro.

¿Cómo puedo solucionar este problema?

Capture1.JPG

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.