Cree una cadena de variable DAX dinámica y valor de retorno

Un usuario Pregunto ✅

Anónimo

Quiero tomar parte de una fórmula DAX de un conjunto de datos y luego devolver el valor del cálculo de esa fórmula.

Por ejemplo:

RuleStringCol =


VAR RuleString =  // Building the RuleString variable by string concatenation, using the string in RulesTable.Rule column
"=CALCULATE(COUNTROWS('Dataset1'),
FILTER(ALL('Dataset1')," & RulesTable[Rule] & "))"



RETURN RuleString

Pero encuentro que mientras RuleString se completa correctamente con el valor de RulesTable.Rule y luego se concatena en una expresión CALCULATE, esta expresión no se calcula. ¿Cómo lo consigo?

Hola @Anonimo,

Si envolviéramos la expresión de cálculo con dcomillas dobles («») en una definición de variable, el resultado devuelto será la cadena estática, en lugar del valor del resultado calculado por la expresión. En su escenario, ¿por qué no escribió directamente la expresión de cálculo? ¿Cuál es el propósito de las comillas dobles?

Por ejemplo, una fórmula común puede ser:

CumulativeTotal =
VAR var1 =
    CALCULATE (
        COUNTROWS ( Applications ),
        FILTER (
            ALL ( Applications ),
            Applications[Date] <= MAX ( Applications[Date] )
        )
    )
RETURN
    var1

Para obtener más consejos, publique datos de muestra y muéstrenos el resultado esperado.

Atentamente,

Yuliana Gu

Anónimo

En respuesta a v-yulgu-msft

@v-yulgu-msft

La expresión de cálculo es dinámica: se recupera de una tabla en una fuente de datos externa. Entonces debería haber 2 pasos:

1. Para resolver la expresión: por eso he usado el operador concatenador y las comillas.

2. Para ejecutar la expresión.

El paso 1 está sucediendo correctamente. Obtengo que var RuleString se complete como:

CALCULATE(COUNTROWS('MyDataset'), FILTER(ALL('MyDataset'),'MyDataset'[Source System] = "MainFrame"))

Mi problema es que el paso 2, es decir, ejecutar realmente la declaración CALCULATE, no está sucediendo.

Espero estar explicando el tema más claramente.

Stachu

En respuesta a Anónimo

que yo sepa, en DAX no puede ejecutar un código que reside en una cadena, solo se considerará texto y no la sintaxis adecuada
por lo tanto, aunque la cadena contiene un código válido, el motor lo interpreta como si estuviera envuelto en «»

Anónimo

En respuesta a Stachu

Si este es el caso, es toda una limitación. SQL dinámico existe desde hace mucho tiempo.

En respuesta a Anónimo

Estoy de acuerdo, es una gran limitación para un lenguaje tan poderoso. También estoy buscando que esta función esté disponible pronto.

En caso de que encuentre alguna alternativa, hágamelo saber.

Gracias,

Arun

Stachu

En respuesta a Anónimo

cierto, y me encantaría ver esa característica, pero DAX tiene un propósito diferente al de SQL, si creo que la comparación con MDX es más precisa, no tengo idea de si MDX dinámico fue una cosa

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *