Uso de variables en expresiones DAX

Se describen a continuación varios ejemplos en los que se utilizan variables dentro de expresiones DAX:

Definición de una medida concatenando textos y números

Sales txt = 
    VAR TotalSales = SUM(Sales[SalesAmount])
    VAR Text1 = "Este mes hemos vendido "
    VAR Text2 = "Este mes no hemos vendido nada"
    RETURN
        IF(
            TotalSales > 0;                 -- IF
            CONCATENATE(Text1; TotalSales); -- THEN
            Text2                           -- ELSE
        )

En este ejemplo se define una primera variable, TotalSales, conteniendo la suma (contextualizada) de la columna SalesAmount de la tabla Sales, columna que contiene los importes de cada venta. A continuación se definen dos variables conteniendo textos que serán usadas en la salida de la medida.

El valor devuelto es el resultado de un IF: Si las ventas (recordemos nuevamente, contextualizadas) son mayores que cero, se devuelve un mensaje indicando las ventas: "Este mes hemos vendido XXXX". En caso contrario, se devuelve directamente la cadena de texto Text2: "Este mes no hemos vendido nada". A pesar de los textos usados, la medida así definida no es capaz de distinguir si el contexto ha reducido las fechas a un mes o no.

Para la concatenación de los textos se ha usado la función CONCATENATE.

Medida con SWITCH

Greetings = 
    VAR CurrentTime = HOUR(NOW())
    VAR Period =
        SWITCH(
            TRUE();
            CurrentTime < 12; "morning";
            CurrentTime < 17; "afternoon";
            "evening"
        )
    RETURN "Good" & " " & Period

Se desea devolver en esta medida un mensaje de buenos días, tardes o noches en función de la hora de que se trate. Para ello extraemos hora con la función HOUR a partir de la fecha y hora actual que devuelve la función NOW.

A continuación, asignamos a la variable Period una cadena de texto en función de la hora calculada: Si la hora es anterior a las 12 del mediodía le asignamos el texto "morning", si es anterior a las 5 de la tarde le asignamos el texto "afternoon" y, si no se cumple ninguna de estas dos condiciones, le asignamos el texto por defecto "evening".

Por último, devolvemos la concatenación de la palabra "Good" y el contenido de la variable Period, resultando "Good morning", "Good afternoon" o "Good evening".

Creación de una columna calculada

State & Country =

    VAR State = Geography[StateProvinceName]

    VAR Country = Geography[Country]

    RETURN State & ", " & Country

En este ejemplo estamos añadiendo a la tabla Geography un campo al que denominamos State & Country conteniendo la concatenación del estado y del país. Para ello extraemos ambos campos y los almacenamos en sendas variables, y devolvemos la concatenación:

Creación de una columna calculada con variables

Medida que devuelve el número de elementos de una tabla filtrada

Bikes sales =

    VAR Bikes = FILTER(Sales; RELATED(Category[Category]) = "Bikes")

    RETURN

        COUNTROWS(Bikes)

En este ejemplo partimos de una tabla de ventas, Sales, y una tabla conteniendo las posibles categorías a las que pertenecen los productos que se venden, Category, y deseamos saber cuántas ventas han sido de productos de la categoría Bikes.

Comenzamos extrayendo el subconjunto de la tabla Sales conteniendo las ventas de productos cuya categoría es la buscada, para lo que filtramos la tabla con FILTER especificando como filtro que la categoría sea Bikes. Al encontrarse esta información (la categoría de cada producto) en una tabla de dimensiones, se necesario usar la función RELATED para acceder a ella.

Por último, devolvemos el recuento de las filas de esta tabla usando la función COUNTROWS.

Funciones DAX involucradas
Enviado por admin el Jue, 03/01/2019 - 17:46