Crear Columna calculada con expresión DAX

Ya estamos en 2013 y ya estamos de lleno en la actividad. Vamos a continuar con la serie dedicada al trabajo con el Lenguaje de Expresiones DAX visto desde MS Office Excel 2010 y SQL Server 2012.

Vamos a recordar el entorno de datos que habíamos creado que es sobre el que vamos a trabajar, tenemos 7 tablas, 6 de ellas procedentes de la Base de datos AdventureWorks 2012 y una que hemos agregado desde un fichero Excel. Las tablas tienen algunas relaciones entre ellas y estaremos viendo cómo afectan las relaciones que no están creadas y cómo crearlas.

Lo primero que vamos a hacer es crear una columna calculada sobre la tabla Fechas para tener el dato Año.

Entonces, ¿qué son las columnas calculadas? Pues son columnas adicionales que se definen desde la ventana PowerPivot o el Modelo Tabular de SQL Server 2012. A estas columnas se les asigna un nombre y una expresión DAX que es la encargada de determinar el contenido. No se trata de copiar y pegar. El contenido puede derivarse de columnas de la misma tabla o columnas de tablas relacionadas, sin importar que sean columnas de origen o calculadas. En las expresiones se incluyen funciones DAX, constantes y hasta medidas. Las columnas se llenan en el momento en que se definen, aplicando la expresión DAX a todas las filas a partir de las columnas existentes, mientras que el resto de las columnas, no calculadas, se definen y llenan durante el proceso de importación. A diferencia de Excel no se pueden aplicar expresiones diferentes a diferentes conjuntos de filas de una tabla. Una vez creadas actúan como columna no calculada en el sentido de que pueden ser utilizadas como columna de tabla dinámica, columna de filtro, segmentador y como parte de un cálculo que define a una medida.

Durante esta serie estaremos viendo varios ejemplos de columnas calculadas, podemos adelantar que se pueden utilizar para concatenar cadenas, realizar cálculos fila a fila, comparar valores, de-normalizar tablas, obtener agregados a partir de tablas relacionadas y muchos más.

Desde la ventana PowerPivot vista Datos seleccionamos la tabla Fechas

Veamos que en la columna a la derecha ya aparece la posibilidad de agregar una columna, seleccionamos una fila de esta columna y vemos como se activa la sección fórmulas, como en Excel.

El primer desplegable a la izquierda muestra las columnas que existen en la tabla actual, de forma tal que podemos seleccionarlos,

Esto es verdaderamente útil si tenemos una tabla con muchas columnas, algunas de las cuales no son visibles, está siempre activo, no depende de que estemos escribiendo o no una fórmula

El siguiente comando nos permite activar la ventana para Insertar funciones, cuya utilidad  vimos antes. Como se trata de definir el Año vamos a aprovechar el conocimiento de Excel y buscar YEAR dentro de las funciones de Fecha y Hora a ver si está

Está la función y nos vale, al seleccionarla aparece en el cuadro de expresiones, precedida del signo igual (=), que como hemos dicho antes  es imprescindible en cualquier expresión DAX

Es hora de seleccionar la columna con dato tipo Fecha para que se pueda obtener el resultado esperado. Podemos escribir directamente el nombre de la columna, seleccionarla empleando Intellisense, que veremos en otro momento, o seleccionar la columna entre las existentes como muestra la imagen

Tal y como está no nos valdría, para demostrarlo podemos oprimir la tecla Enter o utilizar el comando para verificación de sintaxis de expresiones, que aparece en la barra de opciones para expresiones, como nos ha faltado el paréntesis final, tenemos un error que se muestra a continuación.

Cerramos el paréntesis,  aquí es interesante que se muestra resaltado el paréntesis que abre y que cierra. Esta funcionalidad resulta de gran ayuda en los casos que veremos en los días sucesivos en los que tenemos varios paréntesis anidados. Ya está todo, así es que con Enter se calcula el contenido de la columna para cada una de sus filas.

Los nombres de las columnas de entrada pueden expresarse simplemente con nombre de columna, lo que nos vale perfectamente para columnas que están dentro de la tabla que estamos trabajando o nombre de tabla+nombre de columna para los casos que trabajamos con columnas de otras tablas y para es recomendable también hacerlo para las medidas, de las que hablaremos otro día. Recordemos que los nombres de columnas son únicos solamente dentro de una tabla.

En el caso actual es lo mismo   y

La columna ha tomado un nombre, CalculatedColumn1, que no nos va a valer en el futuro así es que lo cambiamos. Para ello basta con colocarse en la cabecera de la columna y con doble clic se activa el texto permitiendo cualquier modificación. La cambiamos por Año.

De esta manera hemos creado una columna calculada, lo hemos hecho despacito, sólo por ser la primera vez, vemos que ya existe otra columna disponible para continuar agregando columnas a partir de expresiones DAX.

En la expresión de hoy hemos utilizado el operador igual (=), la función YEAR de tipo Fecha y Hora y la columna Fecha de la propia tabla Fechas. Como resultado tenemos un número entero de 4 cifras que representa el año de la fecha seleccionada.

En la próxima entrada comenzaremos a trabajar con expresiones DAX para crear medidas desde una tabla dinámica y/o la ventana PowerPivot

4 pensamientos en “Crear Columna calculada con expresión DAX

  1. franklin escobar

    buenas tardes

    antes que nada gracias por el aporte que generas para el conocimiento. tengo conocimiento en excel pero mi experiencia es sobre el desarrollo de macros no conocia la herramienta de powerpivot y por necesidad lo descubri lo estoy comenzando a utilizar y a sido muy practico para mi labor.
    tengo una inquietud estoy tratando de generar una tabla dinamica después de extraer los datos de una bd pero la opcion para agrupar y la opcion para generar campos calculados me aparece desactivada te agradeceria si pudieras darme la indicacion de por que pasa esto

    gracias
    Franklin Escobar
    escobarfranklin@hotmail.com

    Me gusta

    Responder
    1. anabisbe Autor de la entrada

      Hola Franklin
      Gracias por tu mensaje y amables comentarios.
      Siento el retraso, estoy intentando ponerme al día con la web.
      Seguramente ya lo tienes todo solucionado; pero podrías decirme ¿en qué versión de Excel estás trabajando y si te quedan aun dudas?
      Siento no haber sido de utilidad.
      Espero que ya ido muy bien en ese proyecto.
      Saludos,
      Ana

      Me gusta

      Responder
      1. Franklin Escobar

        buenos dias

        que amable por responder a mi pregunta. en el momento estoy trabajando con office 2013

        muchas gracias
        franklin Escobar

        Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.