Post on 25-Nov-2015
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 de la ventana de Power Pivot.
En la misma tendremos 5 pestaas (una por cada tabla 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.
Sin
embargo, observemos la figura 1.2 donde se ha ejecutado la 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])
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])