The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Hola a todos
La siguiente es 1 tabla:
La siguiente es la tabla de calendario:
¿Qué estoy tratando de lograr?
--> Quiero crear un dax dinámico que calcule la suma de los nuevos suscriptores en función de condt
Por ejemplo, el condt puede ser 1) mes no
dax1)
-------------------------------------------------
1) La primera pregunta sería por qué obtengo calcaulate_new_subs valor durante todo el mes en el sitio, no he hecho clic en nada en la cortadora.
Idealmente, se debería haber suministrado 0 de acuerdo con el dax y el espacio en blanco debería devolverse en la matriz correcta
--------------------------------
2) La segunda pregunta sería si soy suma, soy capaz de lograr el mismo resultado que el anterior.
¿Cuál es la diferencia entre usar
dax1)
-----------------------------------------------------------------------------------------
3) Si estoy usando todo el filtro de cálculo interno.
calculate_new_subs = CALCULATE(sum(net_subscriber_growth[NewSubscribers]),FILTER(all(net_subscriber_growth),MES(net_subscriber_growth[Mes]) = [month_selection]))
Obtengo el resultado como se muestra a continuación.
¿Es este el comportamiento esperado de ALL Dax?
----------------------------------------------------------------------------------
4) La cuarta pregunta sería cuál es la diferencia entre
1)CALCULAR(suma(net_subscriber_growth[NuevosSuscriptores]),FILTRO(net_subscriber_growth,MES(net_subscriber_growth[Mes]) = [month_selection]))
y
2) CALCULAR(suma(net_subscriber_growth[NuevosSuscriptores]),MES(net_subscriber_growth[Mes]) = [month_selection])
---------------------------------------------
Gracias
Arjun M
Solved! Go to Solution.
Las respuestas se encuentran a continuación, basadas en el siguiente código
DAX1)
1) La primera pregunta sería por qué obtengo calcaulate_new_subs valor durante todo el mes en el sitio, no he hecho clic en nada en la cortadora.
Idealmente, se debería haber suministrado 0 de acuerdo con el dax y el espacio en blanco debería devolverse en la matriz correcta
Respuesta: El código desencadena la transición de contexto para cada mes, por lo que siempre verá los meses en el objeto visual. Cambie el código según:
calculate_new_subs =
Selección de VAR =[month_selection]
DEVOLUCIÓN
CALCULATE(sum(net_subscriber_growth[NewSubscribers]),FILTER(net_subscriber_growth,MONTH(net_subscriber_growth[Month]) = selección ))
--------------------------------
2) La segunda pregunta sería si soy suma, soy capaz de lograr el mismo resultado que el anterior.
¿Cuál es la diferencia entre usar
DAX1)
-----------------------------------------------------------------------------------------
3) Si estoy usando todo el filtro de cálculo interno.
calculate_new_subs = CALCULATE(sum(net_subscriber_growth[NewSubscribers]),FILTER(all(net_subscriber_growth),MES(net_subscriber_growth[Mes]) = [month_selection]))
Obtengo el resultado como se muestra a continuación.
¿Es este el comportamiento esperado de ALL Dax?
Respuesta: sí, está considerando toda la tabla para cada mes con ese código, y todavía está activando la transición de contexto, por lo que ahora ve todos los meses para cada mes
----------------------------------------------------------------------------------
4) La cuarta pregunta sería cuál es la diferencia entre
1)CALCULAR(suma(net_subscriber_growth[NuevosSuscriptores]),FILTRO(net_subscriber_growth,MES(net_subscriber_growth[Mes]) = [month_selection]))
y
2) CALCULAR(suma(net_subscriber_growth[NuevosSuscriptores]),MES(net_subscriber_growth[Mes]) = [month_selection])
Answer
2) se traduce automáticamente a
CALCULATE(
suma(net_subscriber_growth[NewSubscribers]),
FILTRO (
TODOS ( net_subscriber_growth[Month]) ),
net_subscriber_growth[Mes] = [month_selection]
)
)
Entonces, en el caso 2, solo está aplicando la condición a la columna del mes, ignorando los filtros si existen (como el mes seleccionado), en el primer caso, está aplicando la condición a cada fila de toda la tabla y está considerando los filtros aplicados a esa tabla (por ejemplo, el mes)
El caso 2) es más eficiente
---------------------------------------------
Si esto ayudó, considere dar felicitaciones y marcar como una solución
@me en las respuestas o perderé tu hilo
considere la posibilidad de votar esta idea de Power BI
Francesco Bergamaschi
MBA, M.Eng, M.Econ, Profesor de BI
Las respuestas se encuentran a continuación, basadas en el siguiente código
DAX1)
1) La primera pregunta sería por qué obtengo calcaulate_new_subs valor durante todo el mes en el sitio, no he hecho clic en nada en la cortadora.
Idealmente, se debería haber suministrado 0 de acuerdo con el dax y el espacio en blanco debería devolverse en la matriz correcta
Respuesta: El código desencadena la transición de contexto para cada mes, por lo que siempre verá los meses en el objeto visual. Cambie el código según:
calculate_new_subs =
Selección de VAR =[month_selection]
DEVOLUCIÓN
CALCULATE(sum(net_subscriber_growth[NewSubscribers]),FILTER(net_subscriber_growth,MONTH(net_subscriber_growth[Month]) = selección ))
--------------------------------
2) La segunda pregunta sería si soy suma, soy capaz de lograr el mismo resultado que el anterior.
¿Cuál es la diferencia entre usar
DAX1)
-----------------------------------------------------------------------------------------
3) Si estoy usando todo el filtro de cálculo interno.
calculate_new_subs = CALCULATE(sum(net_subscriber_growth[NewSubscribers]),FILTER(all(net_subscriber_growth),MES(net_subscriber_growth[Mes]) = [month_selection]))
Obtengo el resultado como se muestra a continuación.
¿Es este el comportamiento esperado de ALL Dax?
Respuesta: sí, está considerando toda la tabla para cada mes con ese código, y todavía está activando la transición de contexto, por lo que ahora ve todos los meses para cada mes
----------------------------------------------------------------------------------
4) La cuarta pregunta sería cuál es la diferencia entre
1)CALCULAR(suma(net_subscriber_growth[NuevosSuscriptores]),FILTRO(net_subscriber_growth,MES(net_subscriber_growth[Mes]) = [month_selection]))
y
2) CALCULAR(suma(net_subscriber_growth[NuevosSuscriptores]),MES(net_subscriber_growth[Mes]) = [month_selection])
Answer
2) se traduce automáticamente a
CALCULATE(
suma(net_subscriber_growth[NewSubscribers]),
FILTRO (
TODOS ( net_subscriber_growth[Month]) ),
net_subscriber_growth[Mes] = [month_selection]
)
)
Entonces, en el caso 2, solo está aplicando la condición a la columna del mes, ignorando los filtros si existen (como el mes seleccionado), en el primer caso, está aplicando la condición a cada fila de toda la tabla y está considerando los filtros aplicados a esa tabla (por ejemplo, el mes)
El caso 2) es más eficiente
---------------------------------------------
Si esto ayudó, considere dar felicitaciones y marcar como una solución
@me en las respuestas o perderé tu hilo
considere la posibilidad de votar esta idea de Power BI
Francesco Bergamaschi
MBA, M.Eng, M.Econ, Profesor de BI
Oye, @FBergamaschi ¿podemos conectarnos por favor a través de una reunión?
¿Si está bien?
Por favor, envíame un mensaje directo.
@maverickf17 , puedo ver que tienes una fecha en el mes. Une esto con la tabla de fechas y crea medidas acumulativas
Asegúrese de unirse con la fecha de la tabla de fechas y filtre usando la tabla de fechas.
Para los nuevos suscriptores, la suma de la tabla de fechas de filtro solo es suficiente
SUM(Tabla[Nuevos suscriptores])
Este período comienza o hasta el mes pasado total de suscriptores
BOP= CALCULATE(SUM(Tabla[Nuevos suscriptores]),filter(all(date),date[date] <min(date[date]))) -
CALCULATE(SUM(Tabla[Suscriptores abandonados]),filter(all(date),date[date] <min(date[date])))
Este período Fin o hasta este mes total de suscriptores
EOP= CALCULATE(SUM(Table[New Subscribeers]),filter(all(date),date[date] <=Max(date[date]))) -
CALCULATE(SUM(Table[Suscriptores abandonados]),filter(all(date),date[date] <= Max(date[date])))