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
Syndicate_Admin
Administrator
Administrator

Dependencia circular impide la creación de segunda columna calculada

Hola

Estoy buscando ayuda con un error de dependencia circular DAX que no puedo lograr evitar. He intentado usar ALLEXCEPT pero no he sido capaz de resolver mi problema. A continuación se muestra una versión simplificada del problema que tengo. He enviado mi código M para la creación de consultas, así como el código de las dos columnas calculadas que estoy buscando hacer. Una columna por sí misma funciona bien

Código M

dejar
Fuente = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("XY5LDsAgCAXvwtqcGq67ecWxvtfo4iWFhMlIZM3vFrhgAAYN3mEFGWJKIMRoYWPktEsg7Kn/NIO04yeq3jXuIeft+hpT81LvdOMXquXtZFjpsVR+c9MOi4qu1dn0qMempT6Jw/ZwSKwPQ===", BinaryEncoding.Base64), Compression.Deflate)), deje _t = (texto con valores NULL de tipo) meta [Serialized.Text = true]) en la tabla de tipos [Product = _t, Date = _t, Value1 = _t, Value2 = _t]),
#"Filas ordenadas" = Table.Buffer(Table.Sort(Source,{{"Date", Order.Ascending}})),
#"Filas agrupadas" = Table.Group(#"Filas ordenadas", {"Product"}, {{"Grouped", cada _, tabla de tipos [Product=nullable number, Date=nullable date, Value1=nullable number, Value2=nullable number]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Indexed", cada Table.AddIndexColumn([Grouped],"Index",0,1)),
#"Columnas eliminadas" = Table.RemoveColumns(#"Added Custom",{"Product", "Grouped"}),
#"Expanded {0}" = Table.ExpandTableColumn(#"Columnas eliminadas", "Indexed", {"Product", "Date", "Value1", "Value2", "Index"}, {"Product", "Date", "Value1", "Value2", "Index"}),
#"Tipo cambiado" = Table.TransformColumnTypes(#"Expanded {0}",{{"Product", type text}, {"Date", type date}, {"Value1", Int64.Type}, {"Value2", Int64.Type}, {"Index", Int64.Type}})
en
#"Tipo cambiado"

Dos medidas para las sumas de los dos valores

Suma de valor1 = SUM(Data[Value1])
Suma de Valor2 = SUM(Data[Value2])
Primera columna calculada para encontrar la diferencia entre informes consecutivos para el número Value1 de cada producto
Valor1 Cambio = 

VAR FirstFilesIndex = CALCULATE(MIN([Index]), FILTER(ALLEXCEPT('Data','Data'[Product]), Data[Index] + 1 =EARLIER('Data'[Index])))

devolución

IF(ISBLANK(FirstFilesIndex), 0, [Sum of Value1] - CALCULATE([Sum of Value1],FILTER(ALLEXCEPT('Data',Data[Product]),'Data'[Index] + 1 =EARLIER(Data[Index]))

Segunda columna calculada para hacer lo mismo con Value2. Aquí es donde aparece la dependencia circular

Cambio de Valor2 = 

VAR FirstFilesIndex = CALCULATE(MIN([Index]), FILTER(ALLEXCEPT('Data','Data'[Product]), Data[Index] + 1 =EARLIER('Data'[Index])))

devolución

IF(ISBLANK(FirstFilesIndex), 0, [Sum of Value2] - CALCULATE([Sum of Value2],FILTER(ALLEXCEPT('Data',Data[Product]),'Data'[Index] + 1 =EARLIER(Data[Index])))

Cualquier idea de cómo resolver esto sería apreciada. Si puedo encontrar la manera de enviar mi archivo .pbix estaría más que feliz de si ayuda

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Nunca había visto medidas usadas de esta manera. No lo recomiendo.

Así que creo que usted debe reemplazar el uso de las medidas en cada columna con el DAX apropiado - no demasiado complicado de hacer.

El DAX es un poco de viento largo, pero parece que funcionará.

--------------

Avísame cómo te pones

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

"Sintiéndonos un poco tenues"- Nada de eso por favor, todos aprendemos en este foro. Curiosamente, respondí a una pregunta 5 minutos después y la persona estaba usando medidas en una columna calculada.

En cuanto al DAX, si lo entiendo correctamente, FirstFilesIndex devuelve en blanco si estamos en la fila más temprana para cada producto (luego poner 0 en la columna) pero no necesitamos hacer eso, solo tienes que buscar Data[Index] = 0.

Ya no uso más antes- prefiero las variables. Pero no es un problema.

Es probable que el índice tampoco sea necesario, ya que tiene el campo de fecha. ¿Es un problema de rendimiento? Probablemente no.

Buena suerte.

Syndicate_Admin
Administrator
Administrator

Nunca había visto medidas usadas de esta manera. No lo recomiendo.

Así que creo que usted debe reemplazar el uso de las medidas en cada columna con el DAX apropiado - no demasiado complicado de hacer.

El DAX es un poco de viento largo, pero parece que funcionará.

--------------

Avísame cómo te pones

Gracias HotChili! Sentirse un poco tenue que era una solución directa. Pero sí, como usted sugirió, la eliminación de las medidas y la sustitución de las referencias a ellas en las columnas calculadas tiene cosas fijas

Por curiosidad, ¿hay alguna recomendación que pueda dar para simplificar el DAX? Parece funcionar bien, pero si hay eficiencias que se podrían hacer sería interesante escuchar

Gracias de nuevo por la respuesta rápida!

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.