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
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 gustaMe gusta
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 gustaMe gusta
buenos dias
que amable por responder a mi pregunta. en el momento estoy trabajando con office 2013
muchas gracias
franklin Escobar
Me gustaMe gusta
Hola Franklin
Entiendo que ya has solucionado lo que tenías pendiente, no?
Saludos,
Ana
Me gustaMe gusta