cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Frequent Visitor

Dax WHERE cláusula equivalente a varias tablas

Hola, las tablas se unen en partNumber.
Estoy tratando de averiguar cómo conseguir
hostHardware (confighHost[Qty] * partsCost[Cost]) WHERE partsInterval[Interval] á "FIXED" && partsSuperCategory[superCategory] - "BASELINE"

Sé que puedo usar una columna calculada o una consulta para obtener esto, y he creado una tabla combinada grande para hacerlo, pero estoy tratando de aprender DAX y poner mi cabeza alrededor de las relaciones de la tabla, etc.

Esto funciona: hostHardware á sumx(confighost, RELATED(partsCost[Cost]) * configHost[Qty]) pero no puedo averiguar cómo obtener un WHERE.

En mi mente, necesito crear una tabla en memoria de la 1a cláusula, luego Y con una tabla de la 2a cláusula, luego tomar los partNumbers resultantes y usando la innerjoin, multiplicarla por qty

También fui por este camino:

hostHardware á sumx(configHost,

FILTER(configHost,

Y (

FILTER(partsSuperCategory, partsSuperCategory[superCategory] - "BASELINE"),

FILTER(partsInterval, partsInterval[Interval] - "FIXED")

)

) * configHost[Qty]

)

pbiRelationships.jpgRelaciones

6 REPLIES 6
Highlighted
Super User IX
Super User IX

Re: Cláusula DAX WHERE equivalente a varias tablas

Creo:

hostHardware á sumx(FILTER(configHost,

Y (

FILTER(partsSuperCategory, partsSuperCategory[superCategory] - "BASELINE"),

FILTER(partsInterval, partsInterval[Interval] - "FIXED")

)

) * configHost[Qty]

)


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

Not link spamming! If I posted a link in reply it is because I did assume you know how to search the web but thought it was the fastest way to fix your issue.

I have a NEW book! 
DAX Cookbook from Packt
Over 120 DAX Recipes!




Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




Highlighted
Frequent Visitor

Re: Cláusula DAX WHERE equivalente a varias tablas

Gracias Greg pero obtengo "Demasiados argumentos fueron pasados a la función SUMX. El recuento mínimo de argumentos para la función es 2." que puedo ver es el caso. Si le da un simple segundo argumento, como este

hostHardware á sumx(FILTER(configHost,
Y (
FILTER(partsSuperCategory, partsSuperCategory[superCategory] - "BASELINE"),
FILTER(partsInterval, partsInterval[Interval] - "FIXED")
)), configHost[Qty] * 5
)

Entiendo:

La expresión hace referencia a varias columnas. Varias columnas no se pueden convertir en un valor escalar.

como nota, esta medida se está creando en la tabla configHost

Highlighted
Super User IV
Super User IV

Re: Cláusula DAX WHERE equivalente a varias tablas

Hola @anotherPassword ,

No estoy seguro, y tal vez me estoy perdiendo algo, pero supongo que esto debería funcionar. Sólo tiene que utilizar CALCULATETABLE, para aplicar filtro adicional dentro de su iterador SUMX, RELACIONADO seguirá funcionando, aquí hay una muestra:

Measure 2 = 
SUMX(
    CALCULATETABLE(
        'Fact Sale'
        , 'Dimension City'[Sales Territory] = "External"
        , 'Dimension Customer'[Buying Group] = "Tailspin Toys"
    )
    , [Quantity] * RELATED('Dimension Stock Item'[Unit Price])
)

Con suerte, esto proporciona lo que está buscando, al menos una nueva idea.

saludos

Tom



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany
Highlighted
Frequent Visitor

Re: Cláusula DAX WHERE equivalente a varias tablas

Gracias Tom, después de sustituir mis nombres de mesa, funciona!

Medida 2 ?
SUMX(
CALCULATETABLE(
configHost
, partsSuperCategory[superCategory] á "BASESYSTEM"
, partsInterval[Interval] á "FIXED"
)
, configHost[Qty] * RELATED(partsCost[Cost])
)
Highlighted
Frequent Visitor

Re: Cláusula DAX WHERE equivalente a varias tablas

Como nota lateral, mientras esperaba un poco de ayuda, comencé a mirar IF vs FILTER, y esto también funciona:

hostHardware ?
sumx(configHost,
IF(
(RELACIONADO(partsSuperCategory[superCategory]) á "BASESYSTEM" && RELATED(partsInterval[Interval]) á "FIXED"),
RELACIONADO(partsCost[Cost]),0
) * configHost[Qty]
)

Highlighted
Super User IV
Super User IV

Re: Cláusula DAX WHERE equivalente a varias tablas

Hola @anotherPassword ,

Supongo que la solución IF podría no ser tan eficaz como la solución CALCULATETABLE, ya que la condición se comprobará fila por fila (las filas restantes de la tabla utilizada como iterador), mientras que CALCULATETABLE aprovecha la propagación del filtro.

saludos

Tom



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany

Helpful resources

Announcements
Ignite

Microsoft Ignite

This will be a conference that you do not want to miss!

Get Ready for Power BI Dev Camp

Get Ready for Power BI Dev Camp

Don't miss the Power BI Dev Camp this week!

August Community Highlights

Check out a full recap of the month!

August 2020 CYST Challenge

Check out the winners of the recent 'Can You Solve These?' community challenge!

Experience what’s next for Power BI

Join us for an in-depth look at the new Power BI features and capabilities at the free Microsoft Business Applications Launch Event.