Forum Discussion
Operador DAX
- Anonymous6 years ago
Hola @JeanWang ,
Ambos son iguales, pero una A será más rentable.
Vea este video de Jeffery Wang - el equipo que creó el motor DAX
https://www.youtube.com/watch?v=bJtRB86n9tk
La diferencia se explica en 37:540 en el video.
saludos
Harsh NathaniApreciar con un Kudos!! (Haga clic en el botón Pulgares arriba)
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución! - 6 years ago
@JeanWang Ambas medidas son diferentes, y la primera es incorrecta aquí es por qué:
Cuando se escribe una lógica de predicado/booleano en el argumento de filtro de CALCULATE, se expande internamente a una construcción FILTER y ALL. Producto[Color] - "Rojo" se convierte en
= FILTER ( ALL ( Product[Color] ), Product[Color] = "Red" )En la primera opción los dos predicados hacen referencia a 2 columnas diferentes de Products en el mismo argumento de filtro de CALCULATE, es decir, Color y Tamaño, ya que ambos serán expandidos por el motor, pero el motor no podrá crear una combinación de Color y Tamaño existentes únicos a partir de los predicados, es por eso que no se le permite usar predicados que hacen referencia a más de 1 columna en el argumento de filtro único de CALCULATE. , Producto[Color] á "Rojo" && Producto[Color] - "Azul" está bien y no producirá un error
si desea utilizar 2 columnas en el mismo argumento de filtro CALCULATE, tendrá que utilizar esto:
= CALCULATE ( [Measure], FILTER ( ALL ( Product[Color], Product[Size] ), Product[Color] = "Red" || Product[Size] = 50 ) )en la segunda opción, la referencia desnuda a la tabla Producto respetará cualquier filtro procedente de cualquier parte del informe, pero cuando utilice predicados, ALL elimina esos filtros. así que en caso de que desee tener un filtro de 2 columnas mientras se asegura de que el nuevo filtro se interseca con el filtro fuera de CALCULATE sin sobrescribirlo, entonces debe utilizar KEEPFILTERS.
= CALCULATE ( [Measure], KEEPFILTERS ( FILTER ( ALL ( Product[Color], Product[Size] ), Product[Color] = "Red" || Product[Size] = 50 ) ) )Además, no utilice un filtro de tabla donde el filtro de columna hará el trabajo es mucho más eficaz, ya que no hay necesidad de aplicar cada columna de la tabla de productos al contexto de filtro cuando no es necesario, también si no es consciente de las tablas expandidas, los valores devueltos por una medida podrían ser sorprendentes.
@JeanWang Ambas medidas son diferentes, y la primera es incorrecta aquí es por qué:
Cuando se escribe una lógica de predicado/booleano en el argumento de filtro de CALCULATE, se expande internamente a una construcción FILTER y ALL. Producto[Color] - "Rojo" se convierte en
= FILTER ( ALL ( Product[Color] ), Product[Color] = "Red" )
En la primera opción los dos predicados hacen referencia a 2 columnas diferentes de Products en el mismo argumento de filtro de CALCULATE, es decir, Color y Tamaño, ya que ambos serán expandidos por el motor, pero el motor no podrá crear una combinación de Color y Tamaño existentes únicos a partir de los predicados, es por eso que no se le permite usar predicados que hacen referencia a más de 1 columna en el argumento de filtro único de CALCULATE. , Producto[Color] á "Rojo" && Producto[Color] - "Azul" está bien y no producirá un error
si desea utilizar 2 columnas en el mismo argumento de filtro CALCULATE, tendrá que utilizar esto:
=
CALCULATE (
[Measure],
FILTER (
ALL ( Product[Color], Product[Size] ),
Product[Color] = "Red" || Product[Size] = 50
)
)
en la segunda opción, la referencia desnuda a la tabla Producto respetará cualquier filtro procedente de cualquier parte del informe, pero cuando utilice predicados, ALL elimina esos filtros. así que en caso de que desee tener un filtro de 2 columnas mientras se asegura de que el nuevo filtro se interseca con el filtro fuera de CALCULATE sin sobrescribirlo, entonces debe utilizar KEEPFILTERS.
=
CALCULATE (
[Measure],
KEEPFILTERS (
FILTER (
ALL ( Product[Color], Product[Size] ),
Product[Color] = "Red" || Product[Size] = 50
)
)
)
Además, no utilice un filtro de tabla donde el filtro de columna hará el trabajo es mucho más eficaz, ya que no hay necesidad de aplicar cada columna de la tabla de productos al contexto de filtro cuando no es necesario, también si no es consciente de las tablas expandidas, los valores devueltos por una medida podrían ser sorprendentes.
- Anonymous6 years agoNot applicable
¡Muchas gracias Antriksh!