Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.
Hola a todos,
Tengo un archivo pbix ContosoSales-Excerpt.pbix siendo sólo la tabla 'Producto' del ejemplo de ventas de Contoso. A continuación, hice una consulta de Dax por Dax Studio que calcula el total acumulado de 'Producto' [UnitPrice] por el orden ascendente de 'Product' [ProductSubCategoryKey].
La consulta es bastante simple como se muestra a continuación.
Esto funciona muy bien como se esperaba. Vuelve a continuación como salida
Pero si comentara la línea #7 de la consulta,
AccUnitPrice de todas las filas devuelven los mismos valores.
Parece que los valores devueltos son la suma del precio unitario de todos excepto el cuyo ProductSubCategoryKey es máximo (en este caso #35 ) en el filtro [NombreDeAMbre]"Contoso" && [ClassName]"Regular".
No puedo entender lo que está pasando en esta consulta. Me gustaría saber en qué tipo de contexto Se evalúa AccUnitPrice de cada fila y cómo se calcula así.
Cualquier sugerencia sería apreciada.
Gracias de antemano.
Hay @AllisonKennedy
Una cosa que hice para pensar en este tema.
Probé varios patrones de condiciones de filtro y ejecuté la consulta.
Permítanme compartir el resultado como se muestra a continuación.
Con la línea #7 , 'Product'[BrandName] ), todos los resultados son naturales y fáciles de entender.
Pero sin #7 de línea, siento que hay algunas regularidades en los cálculos, pero no puedo expresarlo en una oración.
AA) cambiar a "'Producto'[ProductSubcategoryKey] - CurrentSubKey"
<<Sin línea #7>>
<<Con línea #7>>
BB) cambiar a "'Product'[ProductSubcategoryKey] <> CurrentSubKey"
<<Sin línea #7>>
<<Con línea #7>>
CC) cambiar a "'Producto'[ProductSubcategoryKey] - CurrentSubKey + 10"
<<Sin línea #7>>
<<Con línea #7>>
DD) cambiar a "'Producto'[ProductSubcategoryKey] á 11"
<<Sin línea #7>>
<<Con línea #7>>
Lo siento, pero no estoy seguro de que sea significativo...
saludos
@Usagi_Nakamura Sí, eso es meaningul. Eso es básicamente similar a lo que estaba tratando de expresar en oración en uno de mis mensajes anteriores - el contexto de filtro de la subcategoría parece requerir ese contexto de fila de nombre de marca, pero sólo en SUMX y no en CONCATENATEX. Es por eso que agregué la columna CurrentSubcategoryKey a mi consulta de prueba, pero no arrojó mucha luz sobre la situación. He puesto la llamada para más entrada, veremos si tenemos algún otro cerebro que responda aquí, pero gracias por mantener este hilo en marcha.
Copying DAX from this post? Click here for a hack to quickly replace it with your own table names
Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C
I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com
Hola @AllisonKennedy otra vez,
Muchas gracias por su comentario.
Por ahora, me gustaría compartir con los espectadores el resultado del senario revisado en el que amablemente agrega elementos en su publicación anterior.
Esto muestra sin duda bien el contraste entre Countrows y Countx.
<<Con línea #7>>
<<Sin línea #7>>
Atentamente
No @Payeras_BI
Muchas gracias por tu ayuda. ¡Eso es soberón!
Pero mi consulta fue al principio sumando 'Sales'[SalesQuantity] y filtrando 'Product'[ClassName], 'Product'[BrandName] y 'Product'[ProductSubCategoryKey].
Dudé de que el problema provenía de la relación (por ejemplo, relación "ambos", etc.). Así que con el fin de eliminar el impacto de la relación, hice el modelo a la tabla única uno.
De todos modos voy a comprobar mi código anterior.
Gracias de nuevo por su ayuda continua!
saludos
No @Payeras_BI,
Lo siento. No entendí totalmente lo que dijiste.
Incluso si sumamos una columna de otra tabla en lugar de 'Product'[UnitPrice], es posible que no podamos deshacernos de este problema.
El problema puede provenirse del hecho de que más de dos filtros están en una tabla.
La consulta para dos tablas ( 1 Dimension ( Product ) + 1 Fact ( Sales ) pero lo mismo sucede así.
saludos
No @Usagi_Nakamura ,
Responder a su última pregunta:
No es que esté seguro de que esto sea Auto-Exist más, pero en el ejemplo anterior, donde intercambiaste Product[UnitPrice] por Sales[UnitPrice] todavía tenías todos los ingredientes para activarlo de acuerdo con esto:
https://docs.microsoft.com/en-us/dax/all-function-dax
"Un ejemplo en el que auto-exist y ALL() proporcionan resultados inesperados es cuando se filtran en dos o más columnas de la misma tabla (como cuando se usan segmentaciones de datos), y hay una medida en esa misma tabla que utiliza ALL()."
En el último ejemplo ProductSubcategoryKey (ALL), ClassName y BrandName (SLICERS) siguen siendo de la misma tabla. Ahora, mientras que mover ClassName y BrandName a una tabla diferente podría ordenar el problema, todavía queremos saber por qué está sucediendo esto.
Lo dejo a los expertos, pero esperando que esto sea de alguna ayuda, he reproducido el escenario en PBI con la tabla más simple posible (sólo dos filas, sólo una marca / clase y sin duplicados) para descartar posibles causas:
La medida que se rompe:
SUMX =
VAR CurrentKey = SELECTEDVALUE('Table'[Key])
RETURN
SUMX(
FILTER(
ALL('Table'[Key]);
'Table'[Key]<CurrentKey
);
[Sum of UnitPrice]
)
Una medida que funciona:
With Calculate =
VAR CurrentKey = SELECTEDVALUE('Table'[Key])
RETURN
CALCULATE(
[Sum of UnitPrice];
'Table'[Key]<CurrentKey
)
En PBI:
- Una visualización de tabla con sólo una de las columnas utilizadas para cortar se muestra:
- Ok para cortar por el que no está presente en la visualización:
- Pero tan pronto como se corta por ambos de la medida con roturas SUMX:
saludos
No @Payeras_BI
Muchas gracias por su último post que es muy útil para mí y lamento por responder tarde.
Intenté asignar los casos en su publicación para correspondientes a mi consulta dax y resumir el resultado.
<<En su caso 1>>
En este caso, una columna de agrupación (clase) + Ningún archivador > SUMX está bien
La consulta dax correspondiente es
<<En su caso 2>>
Una columna de agrupación ( Clase ) + 1 Columna de filtro ( Marca ) > Aceptar
La consulta dax correspondiente es
<<En su caso 3>>
Una columna de agrupación ( Clase ) + 2 Columna de filtro ( Clase, Marca ) > NG
La consulta dax correspondiente es
Intenté algunos otros casos y resumir el resultado como se muestra a continuación.
Gracias Saludos amables,
No @Payeras_BI,
Gracias por darme una pista que debe ser útil.
Trataré de entender el concepto de dax-auto-exist y aplicarlo a este asunto.
Saludos amables,
Hola de nuevo @Usagi_Nakamura ,
Para ser honesto, también me cuesta entender por qué el 51.663,53 por cada fila, hágamelo saber si usted se entera.
Pero, al menos, si sigues el consejo al final del artículo te des haces del problema:
"En modelos de datos más simples con una sola tabla y con una distribución de datos elegante de valores, podría ser posible encontrarse con problemas de existencia automática. Cuando esto sucede, la solución más fácil es evitar el uso de una sola tabla y crear un esquema de estrella adecuado en su lugar."
Exactamente la misma consulta, pero ahora cortando en columnas que pertenecen a las tablas de dimensiones:
saludos
No @AllisonKennedy ,
¡Muchas gracias por sus amables sugerencias!
En realidad sabía que con tu consulta, funcionaba bien.
Además, la consulta, incluso si no hay #63 de línea, puede obtener el mismo resultado.
De hecho, mi consulta era originalmente visual de matriz y SumUnitPrice y AccUnitPrice se calcularon medidas y el filtro BrandName provenía de un objeto visual Slicer. La consulta se realiza a partir de estos objetos visuales, utilizando el analizador de perfomance power bi.
Además, para mi consulta, intenté cambiar SUMX a CONCATENATEX y encontré que con o sin #7 de línea, se devuelve el mismo valor en cada fila. Estos valores deben ser elementos que se calcularán en la versión SUMX. Pero si cambio de nuevo a Sumx, los valores devueltos son diferentes entre con #7 de línea y sin #7 de línea.
<< Con línea #7>>
<<Sin línea #7>>
Traté de averiguar por qué es posible, pero en vano durante tres meses...
Gracias.
@Usagi_Nakamura Veo su problema ahora, interesante que CONCATENATEX se comporta de manera diferente que SUMX. Para ser honesto, esta consulta es multicapa y no se optimizan las mejores prácticas, por lo que la cambiaría, pero me fascina aprender de ella. Definitivamente me está ayudando a entender mejor parte del comportamiento, y me he convertido en escenarios en los que SUMX no se comporta como esperaba y esto podría dar una idea de por qué.
Sólo por diversión, aquí hay algunos ejemplos adicionales para agregar a su escenario. Parece que COUNTROWS se comporta como CONCATENATEX, mientras que COUNTX se comporta como SUMX. Intente también comentar los TREATAS que usa el nombre de marca y tenga en cuenta que esto también corrige las cosas. El problema surge cuando tiene un filtro/relación en una columna que no existe también en la tabla y, a continuación, intenta utilizar iteradores agregados:
Copying DAX from this post? Click here for a hack to quickly replace it with your own table names
Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C
I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com
No @Usagi_Nakamura ,
De su última explicación este comportamiento parece responder a lo que @AlbertoFerrari explica aquí https://www.sqlbi.com/articles/understanding-dax-auto-exist/
saludos
@Usagi_Nakamura Puede probar esto en su lugar:
Copying DAX from this post? Click here for a hack to quickly replace it with your own table names
Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C
I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com
@Usagi_Nakamura Esta es una función muy compleja -hay mucho que hacer. En primer lugar, se utiliza CALCULATE para permitirle usar SUM dentro de una columna calculada. La función SUMMARIZECOLUMNS crea una tabla con 2 columnas calculadas: "SumUnitPrice" y "AccUnitPrice". Crea estas 2 columnas dentro del contexto de la tabla que compila: cuando comenta la línea 7, se quita el contexto de ProductBrand, que afecta al contexto en el que se calcula suMX. Puesto que tiene un CALCULATE(SUM() dentro de ese SUMX para calcular AccUnitPrice, este cambio de contexto de eliminación de ProductBrand importa.
¿Tenía algún sentido?
Copying DAX from this post? Click here for a hack to quickly replace it with your own table names
Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C
I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com