-
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])