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
PowerBIPilgrim
Helper II
Helper II

Dax, ParrallelPeriod, Dateadd, Now(), Drill through y otros problemas variados

Según el título, tengo varios problemas con los que estoy luchando.

Tengo una tabla: Suscripciones que tiene las siguientes columnas (relevantes para lo que estoy tratando de hacer):

SubscriptionFamily
PurchaseDate
TerminatedDate
Rama

También tengo una tabla Calendar que está unida a la columna PurchaseDate y a la columna TerminatedDate.

Estoy tratando de crear una serie de medidas:

Número total de suscripciones activas en el mes anterior a partir de ahora
Número total de nuevas suscripciones en el mes anterior a partir de ahora

Número total de suscripciones canceladas en el mes anterior a partir de ahora


Luego lo mismo de nuevo, pero para el mes anterior y el siguiente. Por ejemplo, si hoy es agosto quiero calcular lo anterior para julio, junio y mayo y hacer esto dinámicamente.

He intentado crear esto usando lo siguiente (para una de las medidas):

Cancelled Subscriptions= 
CALCULATE(
COUNTROWS(Subscriptions),
FILTER(Subscriptions,
PARALLELPERIOD(Subscriptions[TerminatedDate], -1, MONTH) &&
(Subscriptions[Subscriptionfamily] = "Tier1")

))

También he intentado ejecutar el parallelperiod en mi tabla Calendar[date] que falla debido a que hay varias fechas en esa columna.

Me las arreglé para obtener una medida exitosa usando la función anteriorme - sin embargo, me gustaría usar el mismo método para derivar la fecha - para simplificar el código DAX para el usuario final, por lo tanto, por qué estoy intentando usar la función Parallelperiod.

Una vez que tenga las medidas correctas, me gustaría tomarlas y generar algunas medidas derivadas adicionales - a saber, cambios de números y % de cambios - algo así como la siguiente:

Delta = 
calculate(
(Measures Table)[new subscriptions] - (Measures Table)[Cancelled Subscriptions]
)

Finalmente, una vez creadas las Medidas, me gustaría ponerlas en una tabla, que tenga este aspecto:
Cambio de número Cambio porcentual
Mes actual: 12345 +45 +0.3%
El mes pasado: 12300 +50 +0.3%
Hace 2 meses: 12250

Y luego, cuando el equipo de administración hace clic en él, se descompone para mostrar por rama:
Rama
Rama 1 Rama 2 Rama 3
Mes actual 4.115 4.115 4.115
El mes pasado 4.100 4.100 4.100

Disculpas por la pregunta de larga duración, estoy familiarizado con SQL, pero estoy teniendo que empezar a aprender DAX desde cero y a menudo perder medio día tratando de hacer algo, sólo para encontrar que si hiciera la pregunta con la terminología correcta, habría encontrado una función que hizo todo lo que necesitaba.

6 REPLIES 6
amitchandak
Super User
Super User

@PowerBIPilgrim , Puede utilizar la inteligencia de tiempo con una tabla de fechas marcada como fecha (Opción al hacer clic con el botón derecho)

Ejemplos

MTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESMTD('Date'[Date]))
last MTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESMTD(dateadd('Date'[Date],-1,MONTH)))
last month Sales = CALCULATE(SUM(Sales[Sales Amount]),previousmonth('Date'[Date]))
last MTD (complete) Sales =  CALCULATE(SUM(Sales[Sales Amount]),DATESMTD(ENDOFMONTH(dateadd('Date'[Date],-1,MONTH))))
last year MTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESMTD(dateadd('Date'[Date],-12,MONTH)))
last year MTD (complete) Sales =  CALCULATE(SUM(Sales[Sales Amount]),DATESMTD(ENDOFMONTH(dateadd('Date'[Date],-12,MONTH))))
Month behind Sales = CALCULATE(SUM(Sales[Sales Amount]),dateadd('Date'[Date],-1,Month))
Year behind Sales = CALCULATE(SUM(Sales[Sales Amount]),dateadd('Date'[Date],-1,Year))
Next month value =  CALCULATE(sum('table'[total hours value]),nextmonth('Date'[Date]))
previous month value =  CALCULATE(sum('table'[total hours value]),previousmonth('Date'[Date]))
previous to previous month value =  CALCULATE(sum('table'[total hours value]),previousmonth(dateadd('Date'[Date],-1,MONTH)))

Power BI — MTD
https://medium.com/@amitchandak.1978/power-bi-mtd-questions-time-intelligence-3-5-64b0b4a4090e

Para obtener lo mejor de la función de inteligencia del tiempo. Asegúrese de que tiene un calendario de fechas y que se ha marcado como la fecha en la vista de modelo. Además, únase a ella con la columna de fecha de su/s hecho/s. Consulte:
https://radacad.com/creating-calendar-table-in-power-bi-using-dax-functions
https://www.archerpoint.com/blog/Posts/creating-date-table-power-bi
https://www.sqlbi.com/articles/creating-a-simple-date-table-in-dax/

Vea si mi seminario web sobre Time Intelligence puede ayudar: https://community.powerbi.com/t5/Webinars-and-Video-Gallery/PowerBI-Time-Intelligence-Calendar-WTD-Y...


Apreciamos tus Felicitaciones.

Ashish_Mathur
Super User
Super User

Hola

¿Podría compartir algunos datos y mostrar el resultado esperado de esos datos.


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

Hola Ashish,

Aquí hay un excepto de mis datos:

ID únicoRamaSubscriptionFamilyPurchaseDateTerminatedDate
WM-SP-813293Rama 1Nivel 12/02/20153/05/2016
WM-SP-813295Rama 3Nivel 12/02/20154/07/2020
WM-SP-813296Rama 2Nivel 13/02/20154/05/2017
WM-SP-813297Rama 1Nivel 13/02/2015Null
WM-SP-813298Rama 2Nivel 13/02/2015Null
WM-SP-813299Rama 3Nivel 13/02/2015Null
WM-SP-813300Rama 1Nivel 13/02/2015Null

Así que para este mes, mostraría 4 suscripciones activas, el mes pasado mostraría 5 y el cambio sería una disminución del -20% de julio a agosto.

Hola

Utilice la técnica discutida aquí para crear una fila para cada mes y podrá utilizar las funciones de Data and Time Intelligence para calcular el crecimiento/varianza.

Espero que esto ayude.


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

Lamentablemente, ninguna de esas soluciones ha funcionado.

Cuando uso mi columna Calendar[date] - obtengo un error.

La columna Mi calendario tiene el siguiente código:

Calendar = CALENDARAUTO()

Si esto estuviera en SQL- usaría el siguiente código:

set @Last_Month_Start_DateTime = DATEADD(month, DATEDIFF(month, 0, @Last_Month_datetime), 0)
set @Last_Month_End_DateTime = dateadd(day, 1, (EOMONTH(@Last_Month_datetime)))

O

set @last_month = (SELECT convert(datetime, DATEADD(month, -1 ,getdate()), 126))

Con la opción 1 estableciendo una fecha de inicio y finalización para un mes, por ejemplo: 01/07/2020 y 31/07/2020 (aunque en el anterior la fecha final es en realidad 01/08/2020 12:00 am) y la opción 2 sólo estableciendo julio 2020

a continuación, en la configuración consulta:

WHERE (DATEPART(yy, i.datepaid ) = year(@last_month) 
AND DATEPART(mm, i.datepaid ) = month(@last_month))

Esto debería ser relativamente fácil - Puedo usar el mes anterior para obtener el último mes y que algo funciona, pero para obtener el mes más antiguo siguiente, o el anterior - debe ser un simple trozo de código de una línea

Hola

Puede descargar mi archivo PBI desde aquí.

Espero que esto ayude.

Untitled.png


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

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.