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
Anonymous
Not applicable

DAX Añadir meses a SELECTEDVALUE Date

Hola

Tengo una medida en la que quiero hacer uso de la fecha que se ha seleccionado en una tabla de calendario no relacionada, pero la medida debe devolver valores relacionados con dos meses más.

L3.2 = 
VAR _SelDate = FORMAT(DATEADD(SELECTEDVALUE('DIM Kalender'[Datum]), 2, MONTH), "YYYYMM")
RETURN
CALCULATE(
    COUNT('FACT ACM'[EAN]),
        'FACT ACM'[Subonderwerp] = "L3.2",
        FORMAT('FACT ACM'[InvoiceDate],"YYYYMM") = _SelDate
) 

EDITAR: se elimina _SelDate directamente después de RETURN

Sin embargo, esto genera un error: "Se ha utilizado una función 'SELECTEDVALUE' en una expresión True/False que se utiliza como expresión de filtro de tabla. Esto no está permitido."

Así que traté de ser creativo, y probé lo siguiente:

So I selected August 2020, And this is the result:
VAR _SelDate = FORMAT(SELECTEDVALUE('DIM Kalender'[Datum]), "YYYYMM")+2
RETURN _SelDate --Shows 202010, Which is 2020 October, exactly what I want, however an INT.

So then I tried to change it back to a date:
VAR _SelDate = FORMAT(FORMAT(SELECTEDVALUE('DIM Kalender'[Datum]), "YYYYMM")+2, "YYYYMM")
RETURN _SelDate --Shows 245301, Which is abracadabra to me why that happened.

Ahora parece que puede agregar meses a SELECTEDVALUE, pero todavía estoy atascado en formatear el INT de nuevo al período correcto.

¿O hay alguna otra función como DATEADD para agregar meses a un SELECTEDVALUE?

Atentamente

Igor

2 ACCEPTED SOLUTIONS
Anonymous
Not applicable

Parece que encontré la solución, pero no entiendo por qué funciona en absoluto.

Ahora utilizo la siguiente medida:

L3.2 = 
VAR _SelDate = 
    FORMAT(DATEADD('DIM Kalender'[Datum],2,MONTH), "YYYYMM")
RETURN  
CALCULATE(
    COUNT('FACT ACM'[EAN]),
        'FACT ACM'[Subonderwerp] = "L3.2",
        FORMAT('FACT ACM'[InvoiceDate],"YYYYMM") = _SelDate
) 

Cuando hago una selección en la segmentación de datos anterior y selecciono Agosto, devuelve los valores de octubre. Sin embargo, esta tabla Calendar NO TIENE NINGUNA RELACION con la tabla 'FACT ACM'. ¿Cuál es la razón por la que esto funciona sin SELECTEDVALUE?

Atentamente

Igor

View solution in original post

tex628
Community Champion
Community Champion

Lo siento, me acabo de dar cuenta, Cuando realizas un SELECTEDVALUE() en una columna ya no estás trabajando con una columna sino en su lugar con un solo valor. Dateadd() requiere una columnstatement para trabajar para que la combinación de selectedvalue() y dateadd() nunca funcione!

Puede solucionar esto simplemente agregando meses manualmente, en la línea si esto:

VAR NewMonth á IF( MONTH( Calendar[Date] ) á 11 , 1 , IF( MES( Calendario[Fecha] ) - 12 , 2 , MES( Calendario[Fecha]) +2 ))
VAR NewYear á IF( MONTH( Calendar[Date] ) > 10 , YEAR( Calendar[Date] ) +1 , YEAR( Calendar[Date] ))

Esto significaría que puede omitir completamente el dateadd, lo que significa que puede utilizar selectedvalue()

¡Pero si te entendía correctamente ya lo tienes para funcionar! 🙂

/j


Connect on LinkedIn

View solution in original post

8 REPLIES 8
tex628
Community Champion
Community Champion

¿Por qué hay un _SelDate donde resalto a continuación?

L3.2 ?
VAR _SelDate - FORMAT(DATEADD(SELECTEDVALUE('DIM Kalender'[Datum]), 2, MONTH), "YYYYMM")
DEVOLUCIONes _SelDate
CALCULATE(
COUNT('FACT ACM'[EAN]),
'FACT ACM'[Subonderwerp] á "L3.2",
FORMAT('FACT ACM'[InvoiceDate],"AAAAMM") ? _SelDate
)


Connect on LinkedIn
Anonymous
Not applicable

Gracias por la notificación. Es un error, edité la medida. que _SelDate directamente después de que el RETURN se utilizó para comprobar cuál es realmente el valor de _SelDate, porque no obtuve resultados.

tex628
Community Champion
Community Champion

Sinceramente, siento que su medida debe funcionar tal cual, me refiero a que la variable debe ser declarada antes de la declaración return para que no haya realmente ningún selectedvalue() sucediendo dentro de la calcule. Pero vamos a probar algunas cosas.

Deje que intente mover el selectedvalue(),

L3.2 = 
VAR SelDate = SELECTEDVALUE('DIM Kalender'[Datum])
VAR _SelDate = FORMAT(DATEADD( SelDate , 2, MONTH), "YYYYMM")
RETURN
CALCULATE(
    COUNT('FACT ACM'[EAN]),
        'FACT ACM'[Subonderwerp] = "L3.2",
        FORMAT('FACT ACM'[InvoiceDate],"YYYYMM") = _SelDate
) 


Otra cosa que puedes probar es esto:

L3.2 = 
VAR _SelYear = YEAR(DATEADD( SELECTEDVALUE('DIM Kalender'[Datum]) , 2, MONTH))
VAR _SelMonth = MONTH(DATEADD( SELECTEDVALUE('DIM Kalender'[Datum]) , 2, MONTH))
RETURN
CALCULATE(
    COUNT('FACT ACM'[EAN]),
        'FACT ACM'[Subonderwerp] = "L3.2",
        YEAR('FACT ACM'[InvoiceDate]) = _SelYear,
MONTH('FACT ACM'[InvoiceDate]) = _SelMonth
) 


Br
J


Connect on LinkedIn
Anonymous
Not applicable

Curiosamente, la primera sugerencia dice "El primer argumento a 'DATEADD' debe especificar una columna."

Y la segunda sugerencia dice "Una función 'SELECTEDVALUE' se ha utilizado en una expresión True/False que se utiliza como expresión de filtro de tabla. Esto no está permitido."

Atentamente

Igor

tex628
Community Champion
Community Champion

Lo siento, me acabo de dar cuenta, Cuando realizas un SELECTEDVALUE() en una columna ya no estás trabajando con una columna sino en su lugar con un solo valor. Dateadd() requiere una columnstatement para trabajar para que la combinación de selectedvalue() y dateadd() nunca funcione!

Puede solucionar esto simplemente agregando meses manualmente, en la línea si esto:

VAR NewMonth á IF( MONTH( Calendar[Date] ) á 11 , 1 , IF( MES( Calendario[Fecha] ) - 12 , 2 , MES( Calendario[Fecha]) +2 ))
VAR NewYear á IF( MONTH( Calendar[Date] ) > 10 , YEAR( Calendar[Date] ) +1 , YEAR( Calendar[Date] ))

Esto significaría que puede omitir completamente el dateadd, lo que significa que puede utilizar selectedvalue()

¡Pero si te entendía correctamente ya lo tienes para funcionar! 🙂

/j


Connect on LinkedIn
Anonymous
Not applicable

Muchas gracias, esta es una explicación muy útil de hecho.

Lo conseguí para funcionar, pero usar tu solución también hace el truco.

Atentamente

Igor

tex628
Community Champion
Community Champion

Excelente para escuchar, buena suerte con cálculos futuros!

Br

J


Connect on LinkedIn
Anonymous
Not applicable

Parece que encontré la solución, pero no entiendo por qué funciona en absoluto.

Ahora utilizo la siguiente medida:

L3.2 = 
VAR _SelDate = 
    FORMAT(DATEADD('DIM Kalender'[Datum],2,MONTH), "YYYYMM")
RETURN  
CALCULATE(
    COUNT('FACT ACM'[EAN]),
        'FACT ACM'[Subonderwerp] = "L3.2",
        FORMAT('FACT ACM'[InvoiceDate],"YYYYMM") = _SelDate
) 

Cuando hago una selección en la segmentación de datos anterior y selecciono Agosto, devuelve los valores de octubre. Sin embargo, esta tabla Calendar NO TIENE NINGUNA RELACION con la tabla 'FACT ACM'. ¿Cuál es la razón por la que esto funciona sin SELECTEDVALUE?

Atentamente

Igor

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.