Vous êtes sur la page 1sur 28

Power Pivot

El complemento para Excel 2010: Power Pivot puede utilizarse para elaborar informes muy elaborados y eficientes de tablas dinmicas manejando millones de datos. Tambin podremos vincular las tablas (de la ventana de Power Pivot), de manera que aprovecharemos estos vnculos para realizar informes con tablas dinmicas. Adems, contiene un lenguaje de manipulacin de expresiones DAX, con el que desarrollaremos nmeros ejemplos. 1.1 SQL PARA POWER PIVOT

Una herramienta incorporada a Excel 2007 fue Microsoft Query. Dicha herramienta permite hacer consultas sobre las tablas (vinculndolas) con un sublenguaje de SQL. Con Power Pivot podremos llevar a cabo cualquier consulta de las realizadas con Microsoft Query (utilizando en algunos casos el lenguaje DAX). Un ejemplo lo tenemos en la consulta que implica a 5 tablas de la base de datos Neptuno.accdb: Categoras, Clientes, DetallesDePedidos, Pedidos y Productos. Ver figura 1.1 para observar un detalle de la importacin de las tablas (y las relaciones entre ellas) a

partir En la

de misma

la tendremos 5

ventana pestaas (una

de por cada

Power tabla

Pivot. importada).

Para incorporarlas a dicha ventana lo nico que hemos debido hacer es hacer clic sobre el botn Desde bases de datos de la pgina Principal de Power Pivot y seguir los pasos indicados. Podemos manipular las relaciones entre las tablas desde la pestaa Diseo con el botn Administrar relaciones. Una de las diferencias clave entre realizar consultas con Microsoft Query y Power Pivot es que cualquier consulta que podamos hacer con Access, puede llevarse a Power Pivot, es decir, SQL para Power Pivot incluye a SQL para Access. As, la clusula TOP 1 que permite quedarnos con los primeros registros en una consulta que cumplan una condicin, no funciona en una consulta con Microsoft Query.

embargo,

observemos

la

figura

1.2

donde

se

ha

ejecutado

la

Sin consulta:

SELECT TOP 1 Pedidos.IdPedido, Pedidos.IdCliente, Pedidos.IdEmpleado, Pedidos.FechaPedido, Pedidos.FechaEntrega, Pedidos.FechaEnvo, Pedidos.FormaEnvo, Pedidos.Cargo, Pedidos.Destinatario, Pedidos.DireccinDestinatario, Pedidos.CiudadDestinatario, Pedidos.ReginDestinatario, Pedidos.CdPostalDestinatario, Pedidos.PasDestinatario, Clientes.N ombreCompaa, Clientes.Direccin, Clientes.Ciudad, Clientes.Regin, Clientes.CdPostal, Clientes.Pas FROM Clientes INNER JOIN Pedidos ON Clientes.IdCliente=Pedidos.IdCliente; Para ejecutar esta consulta bastar con que hagamos de nuevo la importacin de la base de datos pero Neptuno y escoger la segunda opcin en la ventana de dilogo (la de ejecutar consulta). Copiaremos la consulta anterior en la ventana y obtendremos una pestaa (cnsulta) en la ventana de Power Pivot con el resultado de la misma (un nico registro). Dicha consulta es el resultado de la combinacin entre las tablas Clientes y Pedidos con el vnculo IdCliente, mostrndose una serie de campos y quedndonos con el primer registro de la tabla derivada obtenida. 1.1.1 Ejemplo de consulta

Ahora pretendemos mostrar cmo realizar informes con tablas dinmicas desde la ventana de PowerPivot, detallando algunos de los aspectos ms relevantes de esta tcnica. Desde una base de datos del arbolado urbano de Sevilla podremos ejecutar la consulta: familias de rboles con ms de 60 ejemplares replantados entre 1 -1-1981 y el 2-2-2002.

La consulta requiere la inclusin de las tablas rboles y replantes (con el campo comn rbol que va a representar el vnculo). Desde la ventana de Power Pivot nos vamos a Desde bases de datos y seguimos los pasos indicados. Obtendremos la figura 1.3. Cuando vamos a importar datos de una base de datos en Power Pivot nos aparecer previamente a la eleccin de las tablas la ventana de dilogo de la figura 1.4. Como hemos visto en el apartado anterior, si elegimos la segunda opcin podremos escribir una expresin en SQL y obtener la tabla derivada de la consulta en la ventana PowerPivot (esta tcnica se repite con ciertas limitaciones si ejecutamos Microsoft Query). Estos tipos de operaciones tienen suma relevancia si consideramos Excel como parte del sistema de informacin (transaccional), donde vamos a ejecutar transacciones a partir de los datos almacenados en la base de datos (piense en obtener un informe cualquiera a partir de los datos almacenados en la base de datos). Otra opcin es disear la consulta en Access (con el entorno QBE incorporado) y despus importar los datos de la consulta desde la ventana de Power Pivot. El resto de pasos son inmediatos: 1. Haremos clic en PivotTable de la ficha de la ficha Pgina principal. 2. Escogemos PivotTable. 3. Agrupamos en Etiquetas de fila por familia, en valores la suma de nmero y en filtro la fecha (observar que las tablas estn ya vinculadas por el campo comn rbol).

4. Ahora procederemos a filtrar las fechas, de manera que no haya ninguna fuera del intervalo establecido. 5. Por ltimo hacemos una copia de la tabla dinmica en otro lugar de la hoja, convertimos el rango en tabla y en el filtro del nmero total de replantes establecemos la condicin de que sea mayor que 60 (Figura 1.4-a).

1.2

VINCULANDO

TABLAS

Es importante notar que Excel proporciona un espacio de trabajo, y que las tablas de Power Pivot slo contienen los datos que se han importado. Por lo tanto, Power Pivot es, sobre todo, un entorno para importar y relacionar datos de muy diversas fuentes (ver figura 1.5). Para comprobar lo que acabamos de decir, en el siguiente ejemplo vamos a suponer que los datos se encuentran en distintas hojas de un libro Excel el cual puede estar abierto o no.

Como no vamos a abrir el libro, partiremos de un libro en blanco y hacemos clic en el botn PowerPivot de la ficha PowerPivot. Importaremos con el botn otras fuentes las tablas contenidas en las hojas Asistencia y Trabajos (las tablas tienen que tener el mismo nmero de filas). Ver figura 1.1. Supongamos ahora que queremos realizar la siguiente consulta: Promedio del tanto por ciento de tiempo de asistencia que le falta por completar a los alumnos con una nota superior o igual a 8. Seleccionamos la columna de los nombre ([F1]) en Asistencia y creamos la relacin (uno a uno) con la tabla Tabln (ver figura 1.7). Para ello haremos clic en crear relacin del grupo Relaciones en la ficha Diseo. Como adelanto de lo que estudiaremos ms adelante, podemos visualizar en la columna calculada de Asistencia el valor de una columna de la tabla relacionada. Para ello utilizaremos la funcin RELATED de DAX. En concreto escribiremos en cualquier celda de la columna calculada (la primera libre a la derecha en la ventana de PowerPivot) la expresin = related(Trabajos[F11]). Adems podremos aadir a dicha columna el filtro que el contenido de la columna calculada sea superior o igual a 8, resultando la Figura 1.8. Para obtener la consulta, bastar con que copiemos el contenido de Asistencia en una hoja Excel, convirtamos el rango en tabla y le aadamos una fila de totales. A continuacin procederemos a calcular el promedio de la columna calculada (ver figura 1.9).

Por lo tanto el % buscado es 8,44 %, lo cual indica que los alumnos con notas altas han cubierto prcticamente el total de asistencia a clase. Otra manera de obtener el mismo resultado es generar una tabla dinmica con el botn PivotTable del grupo Informes de la ficha Pgina principal. Los campos sern F1 y F63 de Asistencia. En el filtro incluiremos la columna calculada y filtraremos por los valores superiores o iguales a 8. En el total se obtendr por defecto la suma. Cambiaremos la funcin resumen a promedio y le daremos el formato de %.

Un detalle importante es que si vamos a realizar una tabla dinmica sin antes filtrar los datos desde la ventana de Power Pivot no ser necesario vincular las tablas ya que se detecta de forma automtica la relacin (deber estar activado el botn Deteccin desde Power Pivot).Esto se debe a que el complemento Power Pivot dispone de unos algoritmos que activan de forma automtica dichas relaciones.

1.3 MS CONSULTAS En la ventana de PowerPivot, entre dos tablas slo puede establecerse una relacin (cosa un tanto limitada ya que hay casos en que existen dos relaciones). Por otro lado, la relacin estudiada en el ejemplo anterior es del tipo 1:1. Otro caso interesante es un ejemplo en el que la relacin sea del tipo 1:n (muy comn en bases de datos. Las del tipo n:m se reducen a dos del tipo 1:n y 1:m). Si volvemos al ejemplo de la pequea organizacin visto en los ejercicios captulos anteriores, un empleado puede tener varios telfonos. Esta relacin es del tipo 1:n. P odemos plantearnos la consulta: cul es el sueldo del empleado con ms telfonos? Tendremos importadas las tablas para empleados y telfonos. No ser necesario vincularlas ya que al importarlas de la base de datos tambin se dispone del vnculo (el campo empleado). Despus haremos el informe de tabla dinmica que se muestra en la figura 1.10 (previamente ordenaremos de mayor a menor por el campo Recuento de TLFN). 1.4 GRFICOS DINMICOS EN POWER PIVOT En ejemplos y ejercicios vistos anteriormente nos hemos planteado mostrar varios grficos obtenidos a partir de tablas dinmicos, con el fin de comparar resultados. Esta es una cuestin que se ha resuelto en el complemento para Excel 2010 Power Pivot incorporando al botn de Tabla dinmico (o PivotTable desde la ventana PowerPivot), otras opciones antes de generar la tabla dinmica. En concreto, en la Figura 4.13 tenamos un grfico y un informe de tabla dinmica. All los incorporamos uno detrs de otro seleccionado los campos del informe para hacer el grfico. Ahora podemos Vincular la tabla a la ventana PowerPivot y despus escoger desplegando el botn Tabla dinmica del grupo Informe de la Cinta PowerPivot y escogiendo Grfico y tabla (horizontal). Obteniendo un resultado similar al de la figura antes citada (ver Figura 1.12). Observar que al escoger dicha opcin se le crear una hoja para la tabla y otra para la tabla asociada al grfico (donde deber aadir los campos correspondientes a las etiquetas de fila

y Valor). Otro ejemplo ms potente si cabe es el que tendramos al retomar la figuras 4.14 (a y b).

Con el complemento Power Pivot es posible aadir de golpe 4 grficos correspondientes a sendas tablas dinmicas. El proceso es similar al explicado en este apartado y el resultado lo tenemos en la Figura 1.13. 1.5 LENGUAJE DAX Es hora de que entremos de lleno en el lenguaje de manipulacin de expresiones que viene con Power Pivot. Dicho lenguaje lo podemos utilizar tanto en las columnas calculadas de las tablas de la ventana PowerPivot (como ya hemos podido comprobar en un apartado anterior), como en informes de tablas dinmicas generadas a partir de Power Pivot.

Mientras que en una tabla dinmica ordinaria aadir un campo calculado tiene una tcnica determinada (presente desde las primeras versiones de Excel), con las tablas dinmicas de Power Pivot esto lo haremos mediante el botn Agregar medida de la cinta Power Pivot.

El nombre de DAX es un acrnimo de Expresiones de Anlisis de Datos. La sintaxis es similar a las de las frmulas de Excel slo que incluye muchas funciones nuevas. Otros detalles importantes son que las funciones DAX no trabajan con rangos sino con

tablas y columnas calculadas, y que los datos se manejan por un motor de memoria altamente optimizado, por lo que las bsquedas son bastante rpidas y manejan cmodamente tablas con millones de filas (tenga en este caso en cuenta las dificultades para cargarse los datosincrustados de Power Pivot al abrir el correspondiente libro Excel). Las frmulas con DAX presentan los siguientes aspectos relevantes: * Hay funciones que devuelven una tabla con lo que puede utilizarse este resultado para calcular valores para tablas o columnas completas (por esta razn en DAX son muy comunes las expresiones anidadas). * Algunas funciones proporcionan lo que se llama inteligencia de tiempo. Esto permite que los clculos pueden referirse a intervalos de fechas significativos, pudindose comparar los mismos para periodos diferentes de tiempo. * El correcto funcionamiento de una funcin DAX exige que no pueden devolver ningn valor errneo para todo el dominio, ya que se aplican a columnas o tablas.Para conseguir esto muchas veces nos veremos obligados a utilizar funciones como IFERROR, que establecen el valor que debe devolver la funcin si hay algn error. 1.6 FRMULAS EN TABLAS DINMICAS CON POWER PIVOT Una medida es una frmula creada especficamente para una tabla dinmica procedente de datos de la ventana Power Pivot (o para una columna calculada en una tabla de la ventana Power Pivot). Las medidas estn basadas en funciones de agregacin simples (media y suma, entre otras) o en funciones del lenguaje DAX. Una medida se usa en la zona Valores de la tabla dinmica. Tembin podemos crear una columna calculada desde la ventana de Power Pivot. Despus de agregar una tabla dinmica abriremos el cuadro de dilogo Configuracin de medida. Las agregaciones estndar se crean igual que desde Excel: arrastrando campos hasta la zona de Valores y eligiendo con el botn derecho del ratn el mtodo de agregacin. La medida que creemos se puede utilizar en ms de una tabla o grfico dinmicos. El nombre debe ser nico en un mismo libro y no debemos utilizar el nombre de alguna columna calculada. Para manejar estas medidas desde una tabla dinmica procederemos a crearla a partir del botn PivotTable de la ventana de Power Pivot. Como ejemplo sencillo se obtiene con una tabla donde tenemos el sueldo de trabajadores de una organizacin para diferentes provincias, y deseamos plantearnos el sueldo medio pero

aumentado en un 5% (suponemos que hemos hecho clic sobre el botn Vincular tabla de la cinta de PowerPivot con la tabla de la hoja Original). Una vez creada la tabla dinmica nos colocamos dentro de la misma y procedemos a hacer clic en Nueva medida dentro del grupo Medidas de la ficha PowerPivot. Ahora procedemos a aumentar en un 5% el sueldo, resultado la Figura 1.14. 1.7 FUNCIONES DAX 1.7.1 Funciones de texto Permiten manipular cadenas de texto obteniendo diferentes resultados que pueden facilitar muchas de nuestras consultas.

. 1.7.1.1 FUNCIN CONCATENATE Admite dos argumentos. Se utiliza para unir cadenas. Los argumentos pueden ser textos o nmeros. En el ejemplo (Figura 1.15) que se muestra la combinacin de los campos de la tabla2. Como CONCATENATE slo admite dos argumentos ha habido que hacer una combinacin en el segundo argumento (que adems nos sirve como ejemplo de expresin anidada). =concatenate("Nombre: ",concatenate([Nombre], concatenate("...Salario:

",concatenate([salario],concatenate(" ", concatenate("...Fecha de contratacin: ",concatenate([Fecha de contra],""))))))).

De esta manera podremos hacer un informe de tabla dinmica con el nmero de domicilios de cada empleado y visualizar en la misma el resto de informacin de dicho empleado (ver Figura 1.15-a). 1.7.1.2 FUNCIN EXACT Admite dos argumentos. Comprueba si dos columnas contienen los mismos valores (para la comparacin convierte los argumentos en textos).

En una columna calculada donde FechaPedido debe ser diferente de FechaEntrega habr que incluir la frmula:

=if(not(exact(Pedidos[FechaPedido],Pedidos[FechaEntrega])),"FALSO","Fech as incorrectas") 1.7.1.3 FUNCIN LEFT Devuelve un nmero de caracteres especificados empezando por el principio de una cadena. Se suele utilizar para crear un identificador con dos o ms campos de la tabla. Recordemos que un identificador es un campo en el que no hay dos filas con el valor valor de dicho campo igual. Por ejemplo podemos tener en una columna calculada: =concatenate(left('figura 17'[matricula],1), concatenate(left([aoVenta],4), left([nombreDueo],6))) Que es un identificador para la tabla ya que el nmero de filas con el valor distinto en esa columna calculada es el nmero total de filas de la tabla. =countrows(distinct('figura 17'[CalculatedColumn1])) 1.7.1.4 FUNCIN LEN Devuelve la longitud de una cadena.

Podemos sumar las longitudes de uno o ms campos y averiguar cunto ocupan. Con este dato podramos optimizar la memoria reservada para la tabla. =LEN([NOMBRE])+LEN([APELLIDOS]) 1.7.1.5 FUNCIN MID Devuelve una cadena de la de entrada a partir de una posicin y con una longitud determinada. =MID('figura 17'[nombreDueo],4,6) Devolver los caracteres desde el cuarto hasta el dcimo del cliente. 1.7.1.6 FUNCIN REPLACE Convierte un texto reemplazando parte de l por parte de otro texto. Deberemos determinar en qu posicin del texto comienza a reemplazarse un nmero determinado de caracteres del texto nuevo. En el ejemplo mostrado en el apartado anterior sustituimos los 3 ltimos caracteres por esa subcadena ms espacio ES (para significar que son matrculas de espaolas): =REPLACE('figura 17'[matricula],len('figura 17'[matricula])2,6,concatenate(RIGHT('figura 17'[matricula],3)," ES")) 1.7.1.7 FUNCIN REPT Devuelve una cadena que se obtiene repitiendo una de entrada un nmero de veces determinado.

Por ejemplo podemos hacer que si la longitud de un campo es considerada corta (menos de 12 caracteres), se repita dos veces y en otro caso quede igual. =if(len('figura 17'[nombreDueo])<12, rept('figura 17'[nombreDueo],2), 'figura 17'[nombreDueo]) 1.7.1.8 FUNCIN RIGHT Devuelve un nmero de caracteres especificados empezando por el final de una cadena. Al igual que LEFT podemos utilizar esta funcin para crear un identificador con dos o ms campos de la tabla. =concatenate(right('figura 17'[matricula],6), concatenate(right([aoVenta],2), right([nombre Dueo],1))) A diferencia del ejemplo visto para LEFT, esta funcin no obtiene un identificador de la tabla. 1.7.1.9 FUNCIN SEARCH

Devuelve la posicin donde se encuentra una cadena dentro de otra. Para asegurarnos de que devuelve un resultado correcto debemos utilizar la funcin IFERROR: =iferror(SEARCH(" ",[nombreDueo]), -1) Con este ejemplo obtendremos la posicin en que comienza el nombre del dueo del vehculo (o -1 en otro caso). Otro ejemplo de utilizacin sera utilizar la funcin MID para obtener el apellido del dueo del vehculo: =mid([nombreDueo], iferror(search(" ", [nombreDueo]),1)+1,len([nombreDueo])) 1.7.1.10 FUNCIN SUBSTITUTE Cambia en una cadena una parte de la misma por otra segn los parmetros de entrada. Un ejemplo de utilizacin sera cambiar el espacio en los nombres de dueos por otro signo, pongamos puntos suspensivos. =SUBSTITUTE([nombreDueo]," ","...") 1.7.1.11 FUNCIN TRIM Quita todos los espacios en un texto salvo el espacio que separa a las palabras. Puede ser muy til para eliminar espacios por ejemplo al principio de una cadena que se han introducido errneamente. =TRIM(" ESTO ES UN EJEMPLO") Devuelve ESTO ES UN EJEMPLO, sin el espacio al principio. 1.7.1.12 FUNCIN VALUE Una cadena que es un nmero la convierte en su valor numrico (con lo que se puede operar con ella). =VALUE("22")+1 Devuelve el nmero 23. Un ejemplo de aplicacin lo tendramos en una tabla donde se tiene un campo (comentarios Infopath) que contiene un texto que termina en la nota asignada en un trabajo al alumno. si suponemos que esta nota est formada por tres caracteres (la parte entera, el punto decimal y la parte decimal con un decimal), la siguiente funcin nos asegurara en la columnacalculada la nota final del alumno:

=iferror(value(mid([f4], iferror(search("=", [f4])+1, 1), 2)),0) Ver figura 1.18, de esta manera se asegura el profesor de que la nota puesta en el trabajo (de Infopath) coincide con la del comentario. 1.7.2 Funciones de informacin Examina el tipo de la informacin almacenada en una celda. 1.7.2.1 FUNCIN ISERROR Si la informacin que contiene la celda es errnea devuelve TRUE. Uno de los ejemplos ms tpicos es que se operen con nmeros y el contenido de la celda sea un texto. La lnea siguiente, en vez de filtrar antes el contenido para aumentar la nota de teora un 5%, utiliza ISERROR para realizar el clculo correcto: =IF(ISERROR([f10]*1.05),0,[f10]*1.05) Observar que el decimal es con punto (en vez de coma como en Excel). 1.7.2.2 FUNCIN ISBLANK Si la celda est en blanco devuelve TRUE. Puede ser muy til cuando queramos devolver un valor determinado si la celda se ha quedado en blanco (por ejemplo un valor por defecto). En el ejemplo visto para la nota del alumno en Infopath: =if(isblank([f4]), "No podemos saber nada del alumno en infopath", concatenate([f5],"")) 1.7.2.3 FUNCIN ISLOGICAL Si la celda contiene un valor lgico devuelve TRUE.

1.7.2.4 FUNCIN ISNONTEXT Si la celda no contiene un texto (en blanco no es un texto) devuelve TRUE. Sera equivalente a que el contenido fuera o blanco o lgico o nmero. 1.7.2.5 FUNCIN ISNUMBER Si la celda no contiene un nmero devuelve TRUE. 1.7.2.6 FUNCIN ISTEXT Si la celda no contiene un texto devuelve TRUE. 1.7.3 Funciones lgicas Examina el tipo de la informacin almacenada en una celda. 1.7.3.1 FUNCIN AND Admite dos argumentos y devuelve TRUE en el caso de que ambos sean TRUE. =if(and([PasDestinatario]="Alemania",[Cargo]>12)," Buen cliente alemn","No es alemn o no es buen cliente") De esta manera, podemos filtrar a los buenos clientes alemanes (hacen un pedido superior 12 ).

Para este ejemplo y siguientes ver Figura 1.19.xlsx. 1.7.3.2 FUNCIN OR Admite dos argumentos y devuelve TRUE en el caso de que uno de ellos sea TRUE. =if(or([PasDestinatario]="Alemania",[Cargo]>12),"Es alemn o es buen cliente","no es alemn y no es buen cliente") De esta manera, podemos filtrar a los alemanes o los que hacen un pedido superior 12 . 1.7.3.3 FUNCIN IF Admite tres argumentos y devuelve el segundo si el primero es TRUE y el tercero en otro caso. Como ejemplo tenemos los de los dos apartados anteriores. 1.7.3.4 FUNCIN IFERROR Admite dos argumentos y devuelve el primero si no se produce un error y el segundo en otro caso. Ya hemos visto algn ejemplo en apartados anteriores (ver apartado referente a la funcin VALUE). 1.7.3.5 FUNCIN FALSE Es siempre FALSE. Permite dar un valor falso en el caso que no sea cierto. =if([PasDestinatario]="alemania",true,false) De esta manera obtendremos FALSE si no se trata de un cliente alemn (observe que no se distingue entre maysculas y minsculas en la comparacin con la cadena). 1.7.3.6 FUNCIN TRUE Es siempre TRUE. Como ejemplo valdra el ltimo dado. 1.7.3.7 FUNCIN NOT

Es TRUE si el argumento es FALSE y FALSE en otro caso. En el apartado correspondiente a la funcin EXACT tenemos un ejemplo. 1.7.4 Algunas funciones matemticas Permiten manipular los datos numricos devolviendo las expresiones de funciones matemticas habituales. 1.7.4.1 FUNCIN FLOOR Redondea un valor decimal. =FLOOR([cargo],.5) Devuelve el cargo hecho en el pedido al cliente redondeando la parte decimal al ltimo de 0,5 ms prximo. 1.7.4.2 FUNCIN RAND Devuelve un nmero real aleatorio mayor o igual a 0 y menor que 1. =RAN() Puede ser muy til si en alguna tabla precisamos de un nmero aleatorio. Si se quiere que el nmero devuelto sea mayor o igual a c y menor que d bastar con que obtengamos: =RAND()*(d-c)+c 1.7.4.3 FUNCIN RANDBETWEEND =RANDBETWEEN(c,d) Si se quiere que el nmero devuelto est comprendido entre c y d, ambos inclusive. En este caso el valor devuelto es un nmero entero. 1.7.4.4 FUNCIN QUOTIENT =QUOTIENT(c,d) Parte entera de la divisin de c entre d. si el denominador es 0 habr que utilizar las funciones ISERROR o IFERROR. 1.7.4.5 FUNCIN ROUND

=ROUND(c,d) Redondea c al nmero de dgitos indicados en d. Si d es 0 se queda en el redondeo con la parte entera. 1.7.4.6 FUNCIN ROUNDDOWN Realiza el redondeo hacia abajo. 1.7.4.7 FUNCIN ROUNDUP Realiza el redondeo hacia arriba. Si el decimal d+1 es 5 los tres redondeos son equivalentes. 1.7.4.8 FUNCIN SING Determina el signo del argumento. Los valores devueltos son 1, si es positivo, 0 si es 0 y -1 si es negativo. 1.7.4.9 FUNCIN SUM Suma los valores de una columna. Un ejemplo lo tenemos si en Figura 1.19.xlsx hacemos en una columna calculada: =SUM([cargo]) 1.7.4.10 FUNCIN SUMX Permite realizar la misma operacin que con la operacin SUM pero especificando una expresin que se aplica a una tabla, de manera que pueden, por ejemplo, filtrarse filas antes de realizar el clculo. =SUMX(filter('pedidos',[PasDestinatario]="alemania"),[cargo]) En una columna calculada de Figura 1.19.xlsx hemos obtenido la suma de los cargos para los pedidos realizados slo por clientes alemanes. La funcin FILTER la veremos en funciones de filtro. Observemos que esto equivale a un informe de tabla dinmica donde ponemos el cliente en equitecas de fila, el cargo en valores y el pas del destinatario en el filtro (o como segmentacin) con la consicin de que sea Alemania.

1.7.5 Funciones de filtro Permiten manipular los datos utilizando diferentes contextos de manera que los clculos sean mucho ms dinmicos que utilizando frmulas de Excel. Aqu veremos algunas. 1.7.5.1 FUNCIN DISTINCT Puede aplicrsele a una tabla o una columna de una tabla. Permite obtener, por ejemplo, el nmero de filas de la tabla que contienen un valor distinto en una columna. El ejemplo lo hemos visto en el apartado correspondiente a la funcin LEFT. 1.7.5.2 FUNCIN ALL Cuando tenemos aplicado uno o ms filtros, cualquier funcin DAX obtiene la expresin que coloquemos en una columna calculada (o en una medida de un informe de tabla dinmico proveniente de los datos de la ventana de Power Pivot), respetando estos filtros. Con la funcin ALL se realiza el clculo sin tener en cuenta diferentes filtros. Por ejemplo ALL(tabla) permite devolver la tabla sin filtros con lo que podremos hacer clculos globales en una expresin anidada. En la figura 1.20 encontramos un ejemplo donde se ha introducido la medida ventas totales:

SUMX(FactSales, FactSales[SalesAmount])/SUMX(ALL(FactSales), FactSales[SalesAmount]) Este clculo puede encontrarse en la tabla dinmica de la hoja Hoja4 del libro Figura 1.20.xlsx. En dicha medida (que se arrastra a Valores de la tabla dinmica, se calcula el tanto por

ciento (se escoger el formato de celda % con dos decimales) de las ventas por ao y categora. 1.7.5.3 FUNCIN ALLNOBLANKROW Se utiliza para filtrar las filas en blanco de una tabla. As, si tabla1 tiene 10 filas y 1 en blanco la expresin: = allnoblankrow(tabla1) Devuelve 9. 1.7.5.4 FUNCIN CALCULATE Evala una expresin en un contexto que puede verse modificado por una serie de filtros: As la expresin: =SUM(FactSales[SalesAmount])/calculate(SUM(FactSales[SalesAmount] ), ALL(FactSales)) Es equivalente a la vista en el apartado de la funcin ALL. De esta manera todos los filtros que contengan CalendarYear o ProductCategory no afectan al resultado. 1.7.5.5 FUNCIN CALCULATETAB LE Evala una expresin de tabla en un contexto que puede verse modificado por una serie de filtros: As la expresin: =SUMX(CALCULATETABLE(FactSales, DimDate[CalendarYear]=2009), [SalesAmount]) De esta manera obtenemos el total de ventas en el ao 2009 (ver libro Figura 1.20.xlsx). 1.7.5.6 FUNCIN EARLIER

Cuando se escribe una expresin en una columna calculada de la ventana de Power Pivot, sta se va evaluando para cada fila (como si de un bucle se tratase). La ltima en calcular es la fila del final de la tabla. La funcin EARLIER evala el valor de la celda de la fila actual de una columna: As, la expresin:

= COUNTROWS(FILTER(DimPromotion, EARLIER(DimPromotion[DiscountPercent])<DimPromotion[DiscountPercent]))+ 1

Devuelve en una columna calculada aadida a la tabla DimPromotion, el nmero de filas de dicha tabla filtrada cada fila segn el valor de la fila actual en el que el campo DiscountPercent es superior al de la fila actual. 1.7.5.7 FUNCIN FILTER Obtiene un subconjunto de la tabla segn se establece en un filtro. En apartados anteriores pueden verse numerosos ejemplos de aplicacin. 1.7.5.8 FUNCIN RELATED Permite utilizar en una expresin un campo de otra tabla con la que est vinculada la actual. Un ejemplo ya lo hemos tenido en la Figura 1.8 donde utilizamos en la tabla asistencia la nota procedente de la tabla relacionada de trabajos. 1.7.5.9 FUNCIN RELATEDTABLE Igual que la anterior pero para una expresin de tabla. 1.7.5.10 FUNCIN VALUES Devuelve una tabla que contiene una columna donde los valores duplicados aparecen como nicos. As por ejemplo, la expresin: =COUNTROWS(VALUES(FactSales[ProductKey])) Devuelve el nmero de productos distintos en todas las ventas realizadas.