Power PivotEl complemento para Excel 2010: Power Pivot puede utilizarse para elaborar informes muy elaborados y eficientes de tablas dinámicas manejando millones de datos. También podremos vincular las tablas (de la ventana de Power Pivot), de manera que aprovecharemos estos vínculos para realizar informes con tablas dinámicas. Además, contiene un lenguaje de manipulación de expresiones DAX, con el que desarrollaremos números ejemplos. 1.1 SQL PARA POWER PIVOT Una herramienta incorporada a Excel 2007 fue Microsoft Query. Dicha herramienta permite hacer consultas sobre las tablas (vinculándolas) 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: Categorías, Clientes, DetallesDePedidos, Pedidos y Productos. Ver figura 1.1 para observar un detalle de la importación de las tablas (y las relaciones entre ellas) a partir En la de misma la tendremos 5 ventana pestañas (una de por cada Power tabla Pivot. importada). Para incorporarlas a dicha ventana lo único que hemos debido hacer es hacer clic sobre el botón Desde bases de datos de la página Principal de Power Pivot y seguir los pasos indicados. Podemos manipular las relaciones entre las tablas desde la pestaña Diseño con el botón 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 cláusula TOP 1 que permite quedarnos con los primeros registros en una consulta que cumplan una condición, no funciona en una consulta con Microsoft Query. embargo, observemos la figura 1.2 donde se ha ejecutado la Sin consulta: Desde una base de datos del arbolado urbano de Sevilla podremos ejecutar la consulta: familias de árboles con más de 60 ejemplares replantados entre 1 -1-1981 y el 2-2-2002. Dicha consulta es el resultado de la combinación entre las tablas Clientes y Pedidos con el vínculo IdCliente.FechaEntrega.IdCliente. Pedidos.IdEmpleado.CiudadDestinatario.RegiónDestinatario. Pedidos. detallando algunos de los aspectos más relevantes de esta técnica. Pedidos.Destinatario.Cargo. Pedidos.FechaPedido.N ombreCompañía.PaísDestinatario. Clientes. Pedidos. Clientes. Pedidos. Pedidos. Clientes.1 Ejemplo de consulta Ahora pretendemos mostrar cómo realizar informes con tablas dinámicas desde la ventana de PowerPivot. Pedidos. Clientes.IdCliente. Para ejecutar esta consulta bastará con que hagamos de nuevo la importación de la base de datos pero Neptuno y escoger la segunda opción en la ventana de diálogo (la de ejecutar consulta). .IdPedido.DirecciónDestinatario. Pedidos.SELECT TOP 1 Pedidos. Pedidos.CódPostal.País FROM Clientes INNER JOIN Pedidos ON Clientes. Clientes. 1.1.IdCliente=Pedidos. Pedidos.FormaEnvío.Dirección.Ciudad. Clientes. Pedidos.CódPostalDestinatario.FechaEnvío. Pedidos. mostrándose una serie de campos y quedándonos con el primer registro de la tabla derivada obtenida. Copiaremos la consulta anterior en la ventana y obtendremos una pestaña (cónsulta) en la ventana de Power Pivot con el resultado de la misma (un único registro).Región. Estos tipos de operaciones tienen suma relevancia si consideramos Excel como parte del sistema de información (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).3. . Otra opción es diseñar la consulta en Access (con el entorno QBE incorporado) y después importar los datos de la consulta desde la ventana de Power Pivot. Agrupamos en Etiquetas de fila por familia. Haremos clic en PivotTable de la ficha de la ficha Página principal. 2. Desde la ventana de Power Pivot nos vamos a Desde bases de datos y seguimos los pasos indicados. El resto de pasos son inmediatos: 1. Escogemos PivotTable. Como hemos visto en el apartado anterior. si elegimos la segunda opción podremos escribir una expresión en SQL y obtener la tabla derivada de la consulta en la ventana PowerPivot (esta técnica se repite con ciertas limitaciones si ejecutamos Microsoft Query).La consulta requiere la inclusión de las tablas árboles y replantes (con el campo común árbol que va a representar el vínculo).4. en ∑ valores la suma de número y en filtro la fecha (observar que las tablas están ya vinculadas por el campo común árbol). Obtendremos la figura 1. 3. Cuando vamos a importar datos de una base de datos en Power Pivot nos aparecerá previamente a la elección de las tablas la ventana de diálogo de la figura 1. 4-a). convertimos el rango en tabla y en el filtro del número total de replantes establecemos la condición de que sea mayor que 60 (Figura 1. de manera que no haya ninguna fuera del intervalo establecido.4. Por último hacemos una copia de la tabla dinámica en otro lugar de la hoja. Ahora procederemos a filtrar las fechas. . 5. 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. sobre todo.1. un entorno para importar y relacionar datos de muy diversas fuentes (ver figura 1. Por lo tanto. y que las tablas de Power Pivot sólo contienen los datos que se han importado. Para comprobar lo que acabamos de decir. .5). Power Pivot es.2 VINCULANDO TABLAS Es importante notar que Excel proporciona un espacio de trabajo. 1.Como no vamos a abrir el libro. convirtamos el rango en tabla y le añadamos una fila de totales. partiremos de un libro en blanco y hacemos clic en el botón PowerPivot de la ficha PowerPivot.9). bastará con que copiemos el contenido de Asistencia en una hoja Excel. En concreto escribiremos en cualquier celda de la columna calculada (la primera libre a la derecha en la ventana de PowerPivot) la expresión = related(Trabajos[F11]). Ver figura 1. resultando la Figura 1.8. podemos visualizar en la columna calculada de Asistencia el valor de una columna de la tabla relacionada. Como adelanto de lo que estudiaremos más adelante. Para ello utilizaremos la función RELATED de DAX. Seleccionamos la columna de los nombre ([F1]) en Asistencia y creamos la relación (uno a uno) con la tabla Tablón (ver figura 1. Para obtener la consulta. . 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. A continuación procederemos a calcular el promedio de la columna calculada (ver figura 1. Para ello haremos clic en crear relación del grupo Relaciones en la ficha Diseño. Importaremos con el botón otras fuentes las tablas contenidas en las hojas Asistencia y Trabajos (las tablas tienen que tener el mismo número de filas). Además podremos añadir a dicha columna el filtro que el contenido de la columna calculada sea superior o igual a 8.7). Cambiaremos la función resumen a promedio y le daremos el formato de %.44 %.Por lo tanto el % buscado es 8. lo cual indica que los alumnos con notas altas han cubierto prácticamente el total de asistencia a clase. Los campos serán F1 y F63 de Asistencia. En el total se obtendrá por defecto la suma. En el filtro incluiremos la columna calculada y filtraremos por los valores superiores o iguales a 8. Otra manera de obtener el mismo resultado es generar una tabla dinámica con el botón PivotTable del grupo Informes de la ficha Página principal. . . Esto se debe a que el complemento Power Pivot dispone de unos algoritmos que activan de forma automática dichas relaciones.Un detalle importante es que si vamos a realizar una tabla dinámica sin antes filtrar los datos desde la ventana de Power Pivot no será necesario vincular las tablas ya que se detecta de forma automática la relación (deberá estar activado el botón Detección desde Power Pivot). . 13 teníamos un gráfico y un informe de tabla dinámica. No será necesario vincularlas ya que al importarlas de la base de datos también se dispone del vínculo (el campo empleado).4 GRÁFICOS DINÁMICOS EN POWER PIVOT En ejemplos y ejercicios vistos anteriormente nos hemos planteado mostrar varios gráficos obtenidos a partir de tablas dinámicos. un empleado puede tener varios teléfonos. Otro caso interesante es un ejemplo en el que la relación sea del tipo 1:n (muy común en bases de datos. con el fin de comparar resultados. la relación estudiada en el ejemplo anterior es del tipo 1:1. Allí los incorporamos uno detrás de otro seleccionado los campos del informe para hacer el gráfico. entre dos tablas sólo puede establecerse una relación (cosa un tanto limitada ya que hay casos en que existen dos relaciones). Observará que al escoger dicha opción se le creará una hoja para la tabla y otra para la tabla asociada al gráfico (donde deberá añadir los campos correspondientes a las etiquetas de fila . Ahora podemos Vincular la tabla a la ventana PowerPivot y después escoger desplegando el botón Tabla dinámica del grupo Informe de la Cinta PowerPivot y escogiendo Gráfico y tabla (horizontal). Por otro lado. En concreto. Si volvemos al ejemplo de la pequeña organización visto en los ejercicios capítulos anteriores. en la Figura 4.3 MÁS CONSULTAS En la ventana de PowerPivot.1. P odemos plantearnos la consulta: ¿cuál es el sueldo del empleado con más teléfonos? Tendremos importadas las tablas para empleados y teléfonos. Esta es una cuestión que se ha resuelto en el complemento para Excel 2010 Power Pivot incorporando al botón de Tabla dinámico (o PivotTable desde la ventana PowerPivot). Esta relación es del tipo 1:n. Obteniendo un resultado similar al de la figura antes citada (ver Figura 1.10 (previamente ordenaremos de mayor a menor por el campo Recuento de TLFN).12). Las del tipo n:m se reducen a dos del tipo 1:n y 1:m). Después haremos el informe de tabla dinámica que se muestra en la figura 1. 1. otras opciones antes de generar la tabla dinámica. y Valor). Otro ejemplo más potente si cabe es el que tendríamos al retomar la figuras 4. .14 (a y b). 13. La sintaxis es similar a las de las fórmulas de Excel sólo que incluye muchas funciones nuevas. El proceso es similar al explicado en este apartado y el resultado lo tenemos en la Figura 1. El nombre de DAX es un acrónimo de Expresiones de Análisis de Datos. con las tablas dinámicas de Power Pivot esto lo haremos mediante el botón Agregar medida de la cinta Power Pivot.Con el complemento Power Pivot es posible añadir de golpe 4 gráficos correspondientes a sendas tablas dinámicas. 1.5 LENGUAJE DAX Es hora de que entremos de lleno en el lenguaje de manipulación de expresiones que viene con Power Pivot. como en informes de tablas dinámicas generadas a partir de Power Pivot. Mientras que en una tabla dinámica ordinaria añadir un campo calculado tiene una técnica determinada (presente desde las primeras versiones de Excel). 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). Otros detalles importantes son que las funciones DAX no trabajan con rangos sino con . 1. Como ejemplo sencillo se obtiene con una tabla donde tenemos el sueldo de trabajadores de una organización para diferentes provincias. ya que se aplican a columnas o tablas.Para conseguir esto muchas veces nos veremos obligados a utilizar funciones como IFERROR. Una medida se usa en la zona Valores de la tabla dinámica. El nombre debe ser único en un mismo libro y no debemos utilizar el nombre de alguna columna calculada. por lo que las búsquedas son bastante rápidas y manejan cómodamente 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). Para manejar estas medidas desde una tabla dinámica procederemos a crearla a partir del botón PivotTable de la ventana de Power Pivot. Esto permite que los cálculos pueden referirse a intervalos de fechas significativos. Después de agregar una tabla dinámica abriremos el cuadro de diálogo Configuración de medida.6 FÓRMULAS EN TABLAS DINÁMICAS CON POWER PIVOT Una medida es una fórmula creada específicamente para una tabla dinámica procedente de datos de la ventana Power Pivot (o para una columna calculada en una tabla de la ventana Power Pivot). Las medidas están basadas en funciones de agregación simples (media y suma. Tembién podemos crear una columna calculada desde la ventana de Power Pivot. * El correcto funcionamiento de una función DAX exige que no pueden devolver ningún valor erróneo para todo el dominio. pudiéndose comparar los mismos para periodos diferentes de tiempo. y deseamos plantearnos el sueldo medio pero .tablas y columnas calculadas. que establecen el valor que debe devolver la función si hay algún error. Las agregaciones estándar se crean igual que desde Excel: arrastrando campos hasta la zona de Valores y eligiendo con el botón derecho del ratón el método de agregación. entre otras) o en funciones del lenguaje DAX. * Algunas funciones proporcionan lo que se llama inteligencia de tiempo. Las fórmulas 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 razón en DAX son muy comunes las expresiones anidadas). La medida que creemos se puede utilizar en más de una tabla o gráfico dinámicos. y que los datos se manejan por un motor de memoria altamente optimizado. aumentado en un 5% (suponemos que hemos hecho clic sobre el botón Vincular tabla de la cinta de PowerPivot con la tabla de la hoja Original).7. Se utiliza para unir cadenas.Salario: . 1.14. Una vez creada la tabla dinámica nos colocamos dentro de la misma y procedemos a hacer clic en Nueva medida dentro del grupo Medidas de la ficha PowerPivot.1 FUNCIÓN CONCATENATE Admite dos argumentos.1 Funciones de texto Permiten manipular cadenas de texto obteniendo diferentes resultados que pueden facilitar muchas de nuestras consultas.7. concatenate(".7 FUNCIONES DAX 1. Ahora procedemos a aumentar en un 5% el sueldo. =concatenate("Nombre: ". Como CONCATENATE sólo admite dos argumentos ha habido que hacer una combinación en el segundo argumento (que además nos sirve como ejemplo de expresión anidada). Los argumentos pueden ser textos o números..concatenate([Nombre]. resultado la Figura 1. 1. En el ejemplo (Figura 1.15) que se muestra la combinación de los campos de la tabla2.. .1. .2 FUNCIÓN EXACT Admite dos argumentos.Fecha de contratación: ".7. De esta manera podremos hacer un informe de tabla dinámica con el número de domicilios de cada empleado y visualizar en la misma el resto de información de dicho empleado (ver Figura 1.". 1.concatenate([salario]..""))))))). Comprueba si dos columnas contienen los mismos valores (para la comparación convierte los argumentos en textos).15-a).concatenate(" €".concatenate([Fecha de contra]. .1. concatenate(". 7. Por ejemplo podemos tener en una columna calculada: =concatenate(left('figura 17'[matricula].3 FUNCIÓN LEFT Devuelve un número de caracteres especificados empezando por el principio de una cadena."Fech as incorrectas") 1.1.6))) Que es un identificador para la tabla ya que el número de filas con el valor distinto en esa columna calculada es el número total de filas 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. =countrows(distinct('figura 17'[CalculatedColumn1])) 1.En una columna calculada donde FechaPedido debe ser diferente de FechaEntrega habrá que incluir la fórmula: =if(not(exact(Pedidos[FechaPedido].7. Se suele utilizar para crear un identificador con dos o más campos de la tabla. left([nombreDueño].4 FUNCIÓN LEN Devuelve la longitud de una cadena."FALSO". .1). concatenate(left([añoVenta].4).1.Pedidos[FechaEntrega])). =MID('figura 17'[nombreDueño].7.4.7 FUNCIÓN REPT Devuelve una cadena que se obtiene repitiendo una de entrada un número de veces determinado.1.6) Devolverá los caracteres desde el cuarto hasta el décimo del cliente.1." ES")) 1.Podemos sumar las longitudes de uno o más campos y averiguar cuánto ocupan.6 FUNCIÓN REPLACE Convierte un texto reemplazando parte de él por parte de otro texto.concatenate(RIGHT('figura 17'[matricula].7. Deberemos determinar en qué posición del texto comienza a reemplazarse un número determinado de caracteres del texto nuevo.len('figura 17'[matricula])2.3). 1.5 FUNCIÓN MID Devuelve una cadena de la de entrada a partir de una posición y con una longitud determinada. .7. En el ejemplo mostrado en el apartado anterior sustituimos los 3 últimos caracteres por esa subcadena más espacio ES (para significar que son matrículas de españolas): =REPLACE('figura 17'[matricula].6. Con este dato podríamos optimizar la memoria reservada para la tabla.1. =LEN([NOMBRE])+LEN([APELLIDOS]) 1. =if(len('figura 17'[nombreDueño])<12.6).1.2).7. concatenate(right([añoVenta].8 FUNCIÓN RIGHT Devuelve un número de caracteres especificados empezando por el final de una cadena.9 FUNCIÓN SEARCH .2). Al igual que LEFT podemos utilizar esta función para crear un identificador con dos o más campos de la tabla.Por ejemplo podemos hacer que si la longitud de un campo es considerada corta (menos de 12 caracteres). esta función no obtiene un identificador de la tabla.1))) A diferencia del ejemplo visto para LEFT.1. 'figura 17'[nombreDueño]) 1. rept('figura 17'[nombreDueño]. right([nombre Dueño]. se repita dos veces y en otro caso quede igual. =concatenate(right('figura 17'[matricula].7. 1. sin el espacio al principio.1.1)+1. =SUBSTITUTE([nombreDueño]. Un ejemplo de utilización sería cambiar el espacio en los nombres de dueños por otro signo. iferror(search(" ". la siguiente función nos aseguraría en la columnacalculada la nota final del alumno: . -1) Con este ejemplo obtendremos la posición en que comienza el nombre del dueño del vehículo (o -1 en otro caso).Devuelve la posición donde se encuentra una cadena dentro de otra. 1.. Puede ser muy útil para eliminar espacios por ejemplo al principio de una cadena que se han introducido erróneamente.1. =TRIM(" ESTO ES UN EJEMPLO") Devuelve ESTO ES UN EJEMPLO.[nombreDueño]). [nombreDueño]).".1.7.10 FUNCIÓN SUBSTITUTE Cambia en una cadena una parte de la misma por otra según los parámetros de entrada.. pongamos puntos suspensivos." ".12 FUNCIÓN VALUE Una cadena que es un número la convierte en su valor numérico (con lo que se puede operar con ella).len([nombreDueño])) 1.11 FUNCIÓN TRIM Quita todos los espacios en un texto salvo el espacio que separa a las palabras. el punto decimal y la parte decimal con un decimal).") 1. Un ejemplo de aplicación lo tendríamos 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.7.7. =VALUE("22")+1 Devuelve el número 23. Para asegurarnos de que devuelve un resultado correcto debemos utilizar la función IFERROR: =iferror(SEARCH(" ". si suponemos que esta nota está formada por tres caracteres (la parte entera. Otro ejemplo de utilización sería utilizar la función MID para obtener el apellido del dueño del vehículo: =mid([nombreDueño]. . de esta manera se asegura el profesor de que la nota puesta en el trabajo (de Infopath) coincide con la del comentario.0) Ver figura 1. iferror(search("=".2.2 Funciones de información Examina el tipo de la información almacenada en una celda."")) 1. En el ejemplo visto para la nota del alumno en Infopath: =if(isblank([f4]).3 FUNCIÓN ISLOGICAL Si la celda contiene un valor lógico devuelve TRUE.7. 1.2. concatenate([f5].7.05) Observar que el decimal es con punto (en vez de coma como en Excel). 2)).7.2 FUNCIÓN ISBLANK Si la celda está en blanco devuelve TRUE. La línea siguiente.2. 1. 1). 1. Uno de los ejemplos más típicos es que se operen con números y el contenido de la celda sea un texto. [f4])+1. en vez de filtrar antes el contenido para aumentar la nota de teoría un 5%.05).[f10]*1.1 FUNCIÓN ISERROR Si la información que contiene la celda es errónea devuelve TRUE.7.18.0.=iferror(value(mid([f4]. utiliza ISERROR para realizar el cálculo correcto: =IF(ISERROR([f10]*1. Puede ser muy útil cuando queramos devolver un valor determinado si la celda se ha quedado en blanco (por ejemplo un valor por defecto). "No podemos saber nada del alumno en infopath". 3 Funciones lógicas Examina el tipo de la información almacenada en una celda."No es alemán o no es buen cliente") De esta manera. 1.6 FUNCIÓN ISTEXT Si la celda no contiene un texto devuelve TRUE.5 FUNCIÓN ISNUMBER Si la celda no contiene un número devuelve TRUE.1. podemos filtrar a los buenos clientes alemanes (hacen un pedido superior 12 €). 1. =if(and([PaísDestinatario]="Alemania".7.4 FUNCIÓN ISNONTEXT Si la celda no contiene un texto (en blanco no es un texto) devuelve TRUE. 1.7. .2.[Cargo]>12).2. Sería equivalente a que el contenido fuera o blanco o lógico o número.2.3. 1.7.7.7." Buen cliente alemán".1 FUNCIÓN AND Admite dos argumentos y devuelve TRUE en el caso de que ambos sean TRUE. 7.xlsx. 1.3. 1. Ya hemos visto algún ejemplo en apartados anteriores (ver apartado referente a la función VALUE). =if(or([PaísDestinatario]="Alemania"."Es alemán o es buen cliente". 1.3.7 FUNCIÓN NOT .[Cargo]>12).3.5 FUNCIÓN FALSE Es siempre FALSE. Como ejemplo valdría el último dado.7.4 FUNCIÓN IFERROR Admite dos argumentos y devuelve el primero si no se produce un error y el segundo en otro caso.true.7.false) De esta manera obtendremos FALSE si no se trata de un cliente alemán (observe que no se distingue entre mayúsculas y minúsculas en la comparación con la cadena).3.3.19.3 FUNCIÓN 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. podemos filtrar a los alemanes o los que hacen un pedido superior 12 €.2 FUNCIÓN OR Admite dos argumentos y devuelve TRUE en el caso de que uno de ellos sea TRUE.7.7. Permite dar un valor falso en el caso que no sea cierto. =if([PaísDestinatario]="alemania". 1.6 FUNCIÓN TRUE Es siempre TRUE. 1.7."no es alemán y no es buen cliente") De esta manera.Para este ejemplo y siguientes ver Figura 1.3. 1. 4 Algunas funciones matemáticas Permiten manipular los datos numéricos devolviendo las expresiones de funciones matemáticas habituales. Si se quiere que el número devuelto sea mayor o igual a c y menor que d bastará con que obtengamos: =RAND()*(d-c)+c 1. =FLOOR([cargo].4.4. 1.d) Si se quiere que el número devuelto esté comprendido entre c y d.1 FUNCIÓN FLOOR Redondea un valor decimal.4 FUNCIÓN QUOTIENT =QUOTIENT(c. 1. =RAN() Puede ser muy útil si en alguna tabla precisamos de un número aleatorio.5) Devuelve el cargo hecho en el pedido al cliente redondeando la parte decimal al último de 0. 1. En el apartado correspondiente a la función EXACT tenemos un ejemplo.2 FUNCIÓN RAND Devuelve un número real aleatorio mayor o igual a 0 y menor que 1.4.5 FUNCIÓN ROUND .7. ambos inclusive.d) Parte entera de la división de c entre d.4.4. si el denominador es 0 habrá que utilizar las funciones ISERROR o IFERROR.7..7.7.5 más próximo.3 FUNCIÓN RANDBETWEEND =RANDBETWEEN(c.7. 1. En este caso el valor devuelto es un número entero. 1.Es TRUE si el argumento es FALSE y FALSE en otro caso.7. 7.4.4.19. Si d es 0 se queda en el redondeo con la parte entera.7.4. si es positivo.4. La función FILTER la veremos en funciones de filtro. 1. Si el decimal d+1 es 5 los tres redondeos son equivalentes.d) Redondea c al número de dígitos indicados en d. .10 FUNCIÓN SUMX Permite realizar la misma operación que con la operación SUM pero especificando una expresión que se aplica a una tabla. Los valores devueltos son 1.xlsx hemos obtenido la suma de los cargos para los pedidos realizados sólo por clientes alemanes.7. =SUMX(filter('pedidos'.xlsx hacemos en una columna calculada: =SUM([cargo]) 1. 1. de manera que pueden.[PaísDestinatario]="alemania").9 FUNCIÓN SUM Suma los valores de una columna.=ROUND(c.[cargo]) En una columna calculada de Figura 1.19.7 FUNCIÓN ROUNDUP Realiza el redondeo hacia arriba. Observemos que esto equivale a un informe de tabla dinámica donde ponemos el cliente en equitecas de fila. Un ejemplo lo tenemos si en Figura 1. 1.8 FUNCIÓN SING Determina el signo del argumento. por ejemplo.6 FUNCIÓN ROUNDDOWN Realiza el redondeo hacia abajo. filtrarse filas antes de realizar el cálculo. 0 si es 0 y -1 si es negativo. el cargo en valores y el país del destinatario en el filtro (o como segmentación) con la consición de que sea Alemania.4.7. 1.7. 1 FUNCIÓN DISTINCT Puede aplicársele a una tabla o una columna de una tabla.7.5. En la figura 1.20 encontramos un ejemplo donde se ha introducido la medida ventas totales: SUMX(FactSales.2 FUNCIÓN ALL Cuando tenemos aplicado uno o más filtros. el número de filas de la tabla que contienen un valor distinto en una columna.7. por ejemplo. cualquier función DAX obtiene la expresión que coloquemos en una columna calculada (o en una medida de un informe de tabla dinámico proveniente de los datos de la ventana de Power Pivot). Permite obtener. Aquí veremos algunas. FactSales[SalesAmount]) Este cálculo puede encontrarse en la tabla dinámica de la hoja Hoja4 del libro Figura 1. Con la función ALL se realiza el cálculo sin tener en cuenta diferentes filtros. En dicha medida (que se arrastra a Valores de la tabla dinámica.5 Funciones de filtro Permiten manipular los datos utilizando diferentes contextos de manera que los cálculos sean mucho más dinámicos que utilizando fórmulas de Excel.20.5.7.1. respetando estos filtros. Por ejemplo ALL(tabla) permite devolver la tabla sin filtros con lo que podremos hacer cálculos globales en una expresión anidada. FactSales[SalesAmount])/SUMX(ALL(FactSales). se calcula el tanto por . 1. El ejemplo lo hemos visto en el apartado correspondiente a la función LEFT.xlsx. 1. 5.5.7. 1.7.5.ciento (se escogerá el formato de celda % con dos decimales) de las ventas por año y categoría. La función EARLIER evalúa el valor de la celda de la fila actual de una columna: Así.3 FUNCIÓN ALLNOBLANKROW Se utiliza para filtrar las filas en blanco de una tabla.5. 1. 1.20.7. [SalesAmount]) De esta manera obtenemos el total de ventas en el año 2009 (ver libro Figura 1. ésta se va evaluando para cada fila (como si de un bucle se tratase). De esta manera todos los filtros que contengan CalendarYear o ProductCategory no afectan al resultado.7. La última en calcular es la fila del final de la tabla. si tabla1 tiene 10 filas y 1 en blanco la expresión: = allnoblankrow(tabla1) Devuelve 9. ALL(FactSales)) Es equivalente a la vista en el apartado de la función ALL.4 FUNCIÓN CALCULATE Evalúa una expresión en un contexto que puede verse modificado por una serie de filtros: Así la expresión: =SUM(FactSales[SalesAmount])/calculate(SUM(FactSales[SalesAmount] ).6 FUNCIÓN EARLIER Cuando se escribe una expresión en una columna calculada de la ventana de Power Pivot.5 FUNCIÓN CALCULATETAB LE Evalúa una expresión de tabla en un contexto que puede verse modificado por una serie de filtros: Así la expresión: =SUMX(CALCULATETABLE(FactSales. DimDate[CalendarYear]=2009). la expresión: .xlsx). Así. 1. Un ejemplo ya lo hemos tenido en la Figura 1.7. 1.9 FUNCIÓN RELATEDTABLE Igual que la anterior pero para una expresión de tabla. Así por ejemplo. . En apartados anteriores pueden verse numerosos ejemplos de aplicación.5. EARLIER(DimPromotion[DiscountPercent])<DimPromotion[DiscountPercent]))+ 1 Devuelve en una columna calculada añadida a la tabla DimPromotion. el número de filas de dicha tabla filtrada cada fila según el valor de la fila actual en el que el campo DiscountPercent es superior al de la fila actual.10 FUNCIÓN VALUES Devuelve una tabla que contiene una columna donde los valores duplicados aparecen como únicos.7. la expresión: =COUNTROWS(VALUES(FactSales[ProductKey])) Devuelve el número de productos distintos en todas las ventas realizadas.7. 1.7 FUNCIÓN FILTER Obtiene un subconjunto de la tabla según se establece en un filtro.5.5.= COUNTROWS(FILTER(DimPromotion.7.8 donde utilizamos en la tabla asistencia la nota procedente de la tabla relacionada de trabajos.5. 1. 1.8 FUNCIÓN RELATED Permite utilizar en una expresión un campo de otra tabla con la que está vinculada la actual.