Está en la página 1de 61

FUNCIONES DAX

FUNCION RANKX

Creamos una tabla que incluye las columnas Productos, Total Units y Total Ventas Inc IGV

Crear una medida llamada “Rank Total Units”

Arrastrar la nueva medida creada a la Tabla

Ing. Moisés Galarreta R.


Modificamos la medida “Rank Total Units” agregando la función ALL

Ahora podemos visualizar como se generó el ranking de manera correcta:

Del mismo modo creamos la medida “Rank Total Ventas”, y la agregamos a la tabla

Ing. Moisés Galarreta R.


Ahora revisaremos la capacidad de búsqueda que tiene la función RANKX, crearemos la
medida “Rank Cantidad Busqueda”, donde indicaremos un valor de búsqueda. Una vez creada
la medida, agregarla a la tabla.

Ing. Moisés Galarreta R.


Por default los rankings se generan tomando en cuenta del valor mayor hacía el menor, de
forma descendente, pero si deseamos que el ranking se realice de forma ascendente, se tiene
que indicar al momento de utilizar la función RANKX, cómo se puede ver a continuación, al
crear la medida “Rank Total Units ASC” y agregar el parámetro “ASC”. Una vez creada la
medida, agregarla a la tabla.

Podemos observar en la parte final del ranking de la columna “Rank Total Units ASC” que de la
posición 382 se pasa al 1, esto debido a que encuentra 381 registros con el mismo valor y a
todos les coloca valor 1 y luego salta al valor 382.

Ing. Moisés Galarreta R.


Para cambiar esto, debemos agregar en la función RANKX el parámetro Ties, cuyo valor debe
ser Dense y así el valor en el ranking a continuación de 1 sería 2.

Ing. Moisés Galarreta R.


Ing. Moisés Galarreta R.
WHAT-IF PARAMETER

Cuando requerimos realizar cálculos basados en hipótesis podemos utilizar Parámetros.

Por ejemplo si requerimos calcular el porcentaje de descuento sobre los precios de nuestros
productos

Tenemos creada una Tabla con el listado de Productos y la medida Costo Total, queremos
proyectar cual sería el nuevo precio de compra con un descuento proyectado.

Ir a la opción de Modelado y luego dar clic en Parámetro Nuevo (What-If)

En la pantalla de Parámetro de hipótesis indicar los siguientes datos:

Nombre: Descuento Precio

Tipo de Datos: Número Decimal

Mínimo: 0

Máximo: 1

Incremento: 0.1

Valor predeterminado: 0

Y Marcar la opción “Agregar segmentación en esta página”

Esto crea una tabla con el nombre “Descuento Precio” que tiene una columna con el mismo
nombre “Descuento Precio” que se ha generado en base a los parámetros que hemos indicado
y también contiene una medida llamada “Valor Descuento Precio”

En automático también se ha generado un Segmentador de Datos o Filtro como se puede


visualizar en la pantalla.

Ing. Moisés Galarreta R.


En la sección de Datos podemos visualizar los valores de la tabla Descuento Precio generados

En la tabla Descuento Precio observamos que se ha creado en automático la medida Valor


Descuento Precio de la siguiente manera:

Esta medida lo que hará es tomar el valor que se encuentre seleccionado en el filtro.

Por ejemplo si agregamos una tarjeta y a la misma le asignamos la medida creada, en la tarjeta
se mostrará el valor que se encuentre seleccionado en el filtro.

Ing. Moisés Galarreta R.


Si deseamos que en el filtro el descuento se visualice como porcentaje, nos ubicamos en el
campo Descuento Precio y luego seleccionamos la opción % desde la pestaña Herramientas de
Columnas y ahora podremos ver el valor del descuento en porcentaje.

Ahora aplicaremos el descuento al precio de compra original, para eso crearemos una nueva
medida en la tabla de Productos llamada “Precio Compra Descuento” cuya fórmula es:

El valor de la medida Precio Compra Descuento corresponde a la resta entre el Costo Total
menos el Costo Total por el Valor Descuento Precio, esta última corresponde a la medida
generada en automático al crear el parámetro.

Luego llevamos la medida Precio Compra Descuento como una nueva columna a la tabla y
ahora se puede visualizar el Costo Total con el porcentaje descuento indicado en el valor del
filtro que estamos aplicando, si modificamos dicho porcentaje de descuento también se
modificará el valor de la columna Precio Compra Descuento.

Ing. Moisés Galarreta R.


Ing. Moisés Galarreta R.
FUNCION TOP N

Permite devolver un número limitado de filas.

Empezaremos creando una nueva tabla con el Top 5 de Ventas

Para hacerlo ir al menú Modelado luego clic en Nueva Tabla y a continuación creamos la nueva
utilizando la función TOPN con la siguiente fórmula:

Si vamos a la sección de datos y abrimos la nueva tabla creada, podemos ver que muestra las
filas con los 5 mayores valores de ventas

A continuación podemos utilizar esta cálculo para mostrar las 5 mayores ventas por
fabricantes, para eso crearemos una nueva medida utilizando la función SUMX.

Esta función toma como parámetros la tabla generada con la función TOPN y tiene como
segundo parámetro mostrar el valor en función del valor de monto de ventas.

Ing. Moisés Galarreta R.


Ahora arrastramos esta nueva medida hacía la tabla que tenemos de Fabricantes y podremos
ver los montos de las 5 mayores ventas que tiene cada Fabricante.

Se puede observar en el resultado obtenido que el valor Total igual a 372597,07 no


corresponde en realidad a la sumatoria de toda la columna Top 5 Ventas x Fabricante.

Para solucionar este inconveniente, tenemos que modificar la medida Top 5 Ventas x
Fabricante, agregándole a la función una tabla sobre la cual debe iterar, esta tabla debe
contener el Fabricante, la vamos a crear con SUMX.

Top5 Ventas x Fabricante =


SUMX(VALUES(Manufacturers[Manufacturer]),
CALCULATE(
SUMX(TOPN(5,Sales,Sales[Revenue],DESC),Sales[Revenue])
)
)

Ahora si podemos ver el Total de la columna con el resultado correcto:

Ing. Moisés Galarreta R.


Ing. Moisés Galarreta R.
TOP N DINAMICO

Tenemos una tabla que muestra el listado de Productos con sus valores de Ventas Inc. IGV y
como filtros se tienen los años.

Queremos determinar dinámicamente la cantidad de productos que mostraremos que tienen


las mayores ventas.

Crearemos un nuevo parámetro al que denominaremos Valor Top N

Vemos que se genera el Slicer o Filtro donde podemos modificar el valor, pero aun no produce
ningún efecto sobre nuestra tabla de Productos y Montos de Ventas.

Ing. Moisés Galarreta R.


Ahora crearemos una medida nueva a la cual llamaremos RANKX y utilizaremos la función
RANKX para crearla

Ahora llevamos la medida RANKX a la tabla creada:

Ahora creamos una nueva medida llamada “TOP N Seleccionado”

Llevamos la nueva medida a la tabla existente y se observa en la columna TOP N Seleccionado


que tendrá el valor de 1 para todas las filas cuyo valor de RANKX sea menor o igual que el valor
indicado en el Slicer, caso contrario el valor de TOP N Seleccionado será 0. Si cambia el valor
del Slicer, también cambiará dinámicamente los valores en la columna TOP N Seleccionado.

Ing. Moisés Galarreta R.


Luego, seleccionamos la tabla y vamos a la sección de Filtros, y aplicaremos un filtro para el
campo TOP N Seleccionado indicando que muestre sólo lo que es igual a 1, y ahora se puede
visualizar que sólo se muestra en la tabla los registros que tienen valor 1 en la columna TOP N
Seleccionado.

A continuación, procedemos a quitar del listado de las columnas, las columnas RANKX y TOP N
Seleccionado:

Ing. Moisés Galarreta R.


Quedaran en la tabla las columnas Product y Total Ventas Inc IGV, que mostrarán la cantidad
de registros indicados en el slicer Valor Top N.

Ing. Moisés Galarreta R.


FUNCIÓN SELECTEDVALUE

Crear un filtro de Categorías mostrado en forma horizontal y una tabla que incluya las
siguientes columnas: Segments, Total Units, Total Sales, Total IGV y Total Ventas Inc. Igv

Ahora crearemos una nueva medida llamada Valor Seleccionado, donde utilizaremos la
función SELECTEDVALUE, cuyo primer parámetro indica que devolverá el Segmento que se
encuentre seleccionado, adicionalmente se le agrega como segundo parámetro el valor
“Seleccionar un Segmento” que será devuelto cuando no se tenga ningún valor seleccionado:

Para probar como se muestra el valor seleccionado agregaremos una tarjeta a la que le
asignaremos la medida Valor Seleccionado.

Si no tenemos ningún segmento seleccionado la tarjeta mostrará como valor: “Seleccionar


Segmento”

Al seleccionar un Segmento desde la tabla, el nombre de éste es mostrado en la tarjeta como


se muestra a continuación:

Ing. Moisés Galarreta R.


A continuación vamos a mostrar de forma dinámica una imagen que cambiará de acuerdo a la
Categoría seleccionada, para esto primero crearemos la medida Imagen Categoria

Esta medida se crea declarando la variable Categoria cuyo valor es igual al valor seleccionado
devuelto por la Categoría seleccionada en el filtro de Categorías.

Luego se devolverá a través de la función SWITCH un valor específico de acuerdo al valor de la


Categoria seleccionada, si la Categoría es igual a Mix devolverá un valor, si la Categoria es igual
a Rural, se devuelve otro valor y así sucesivamente

Esta es la fórmula completa con el total de valores devueltos por la función SWITCH

Imagen Categoria_ =
var Categoria = SELECTEDVALUE(Products[Category],0)
return

Ing. Moisés Galarreta R.


SWITCH(Categoria,"Mix","https://previews.123rf.com/images/kup1984/kup19841706/kup1984170600008/79500
395-conjunto-de-art%C3%ADculos-de-equipamiento-deportivo-dise%C3%B1o-de-elementos-para-gimnasio-y-
sala-de-fitness-.jpg"
,"Rural","https://c8.alamy.com/compes/rd302e/mujer-joven-comprar-algunos-articulos-deportivos-de-
pie-con-el-vendedor-en-el-mostrador-de-la-tienda-rd302e.jpg"
,"Urban","https://genteyold.com/wp-content/uploads/2017/12/hunkermoller.jpg"
,"Youth","https://previews.123rf.com/images/jackf/jackf1706/jackf170606221/81060570-hembra-
joven-solo-cliente-a-cabo-un-casco-deportivo-en-una-tienda-de-art%C3%ADculos-deportivos.jpg"
," http://solida.tech/wp-content/uploads/2021/01/Curso-de-Microsoft-Power-BI-1536x584.png")

Agregaremos un nuevo tipo de Gráfico denominado Image by Cloudscope, el mismo que será
seleccionado desde el Store de Microsoft.

A continuación seleccionaremos la medida Imagen Categoria y la arrastraremos al campo


Image url del tipo de Grafico Image by CloudScope.

Ing. Moisés Galarreta R.


Luego en la sección Formato buscar la opción Image Options y en la característica Image Fit
seleccionar “Contain” para que la imagen se adapte siempre al tamaño del gráfico.

Ahora sí se podrá visualizar la imagen que está relacionada a la categoría que se seleccione:

Ing. Moisés Galarreta R.


Finalmente vamos a mostrar el valor del Total IGV o TotalVentas Inc Igv de acuerdo al filtro de
selección que indiquemos.

Ir a la opción Especificar Datos que abrirá la opción para crear una tabla.

Colocaremos como nombre de la Tabla y nombre de la columna Tipo Total Ventas.

Agregaremos como valores de la tabla:

Inc. IGV y Sin IGV

Luego presionar la opción Cargar, que creará la tabla Tipo Total Ventas.

Ing. Moisés Galarreta R.


A continuación crearemos un filtro de tipo horizontal y que estará basado en el campo Tipo
Total Ventas de la tabla del mismo nombre recién creada.

Por último crearemos una nueva medida llamada Tipo Ventas Seleccionado cuya fórmula inicia
con la creación de la variable Tipo_Ventas, que será el valor seleccionado desde el filtro que
contiene el campo Tipo Total Ventas que muestra como valores Inc IGV y sin IGV, con éste
valor seleccionado a continuación se utiliza la función SWITCH que de acuerdo al valor de la
variable Tipo_Ventas, devolverá la medida Total Ventas Inc. Igv, Total Sales, o Seleccione un
Filtro, sino se selecciono ninguno de los dos.

Agregamos una Tarjeta donde mostraremos el valor de la medida Tipo Ventas Seleccionado.

Se mostrará el valor de acuerdo a la opción seleccionada:

Ing. Moisés Galarreta R.


Ing. Moisés Galarreta R.
DRILLTHROUGH (PAGINA DE DETALLE) EN POWER BI

Vamos a utilizar una página de detalle, para eso crearemos dos páginas, la primera será la
página: Categorias. Esta página contiene un filtro de Años mostrado en forma horizontal, una
tarjeta que muestra la medida Total Sales, y un gráfico de barras agrupadas que muestra Total
Sales por Categoria.

Luego construiremos la página Detalles Categoria, esta página contiene los siguientes gráficos:

 Una tarjeta para mostrar la Categoría que contiene la medida Mostrar Categoria. La
medida Mostrar Categoría contiene la siguiente fórmula:

Mostrar Categoria = SELECTEDVALUE(Products[Category],"Todas las Categorias")

 Tres tarjetas adicionales que mostrarán los valores de Total Sales, LY Sales (ventas del
año anterior) y Sales Var,
 Un gráfico del tipo Image by Cloudscope que contiene la medida Imagen Categoria. La
medida Imagen Categoria ya existe.
 Un gráfico del tipo Treemap, que contiene Total Sales por Segment,
 Un gráfico del tipo tabla con las siguientes columnas: Product, Total Units, Total Sales, LY
Sales y Sales Var %
 Un gráfico de columnas agrupadas que muestra Total Sales y LY Sales por Month Name

Ing. Moisés Galarreta R.


El campo en común entre ambas páginas y que va a permitir filtrar la información que se
mostrará en la página detalle es Categoria.

En la página Detalles Categoria seleccionamos la página y arrastramos el campo Category


desde la tabla Products hacía el campo en blanco denominado ”Agregar los campos de
obtención de detalles” en la parte inferior de la sección Obtener detalles. Al hacer esto, se
observa que en la parte superior izquierda se crea un icono de flecha que nos permite
retroceder hacia la página anterior para hacerlo debemos presionar Ctrl y clic en el icono de
flecha.

Al regresar a la página Categorias, al posicionarnos en una de las Categorías del gráfico de


barras, nos indica que hagamos clic con el botón derecho para que se muestren detalles.

Ing. Moisés Galarreta R.


Al hacer clic derecho sobre la barra de la categoría muestra cuadro de opciones, si
seleccionamos Obtener detalles, nos lleva hacía la página Detalles Categoría, le damos clic

A continuación se muestra la página Detalles Categoria con la información de la Categoría


seleccionada

Ing. Moisés Galarreta R.


En esta página también podemos ver ahora que trae dentro de la sección Obtener detalles, el
año por el que se ha filtrado en la página Categorías:

Ahora en página Categorias insertaremos un botón que nos permitirá ir a la página de detalle
en lugar de tener que dar clic derecho al seleccionar una categoría.

Insertamos un botón en blanco, para eso ir a la opción Insertar, luego clic en Botones y
seleccionar la última opción: En Blanco

Ing. Moisés Galarreta R.


Colocaremos el botón en la parte inferior de la página y en la sección de Visualizaciones
habilitaremos la opción Texto del Botón y en Texto del Botón agregaremos el texto: Ver
Detalle

Deshabilitamos la opción Esquema y habilitamos y seleccionamos un color de fondo.

Ing. Moisés Galarreta R.


Cambiamos el color de fuente del texto a blanco.

Ahora vamos a la sección Acciones, la habilitamos y en Tipo seleccionamos Obtener detalles


(DrillThrough)

Ing. Moisés Galarreta R.


En Destino seleccionamos la página Detalles Categoria

Ahora haremos que el botón incluya de forma dinámica el nombre de la categoría


seleccionada, para esto crearemos una medida llamada Categoria Seleccionada, con la
siguiente fórmula:

Categoria Seleccionada =
var Categoria_ = SELECTEDVALUE(Products[Category])
return
IF(ISBLANK(Categoria_),"Seleccione una Categoria","Ver detalle de la Categoria " &
Categoria_)

Iremos a Texto del Botón, borramos Ver detalle y damos clic en el botón de función Fx. Se abre
una ventana donde podemos dar formato por Valor de Campo y en la opción Según el campo
buscamos el nombre de la medida Categoria Seleccionada y luego Aceptar.

Ing. Moisés Galarreta R.


Ahora al seleccionar una Categoria, nos indica el botón el nombre de la Categoría
seleccionada.

Ing. Moisés Galarreta R.


FORMATO CONDICIONAL

Agregaremos un Formato Condicional a la tabla que se muestra en la página Detalles


Categoria, para esto seleccionamos la Tabla y buscamos el campo Sales Var% (será el campo
utilizado para el formato condicional) le damos clic a la derecha del campo y seleccionamos la
opción Formato Condicional y luego Iconos.

Abre una ventana para configurar las opciones de formato condicional, verificamos que sea el
campo seleccionado, y luego seleccionamos el Estilo y configuramos las reglas como se indica
en la pantalla:

Ahora podemos visualizar la tabla con el formato condicional configurado:

Ing. Moisés Galarreta R.


BOOKMARKS (Marcadores)

Nos permiten guardar los estados en los que se encuentran los objetos visuales en nuestros
reportes.

Crear la página BOOKMARKS que contiene

En el menú Ver, habilitamos la opción Marcadores

Se habilita la sección de Marcadores y allí sin seleccionar nada agregamos un nuevo Marcador
con el nombre Home.

Ing. Moisés Galarreta R.


Posteriormente seleccionamos un año, en el ejemplo se seleccionó 2013, que nuestra en la
página toda la información referida a ese año y agregamos un nuevo Marcador llamado Año
2013

Ahora podemos navegar entre ambos marcadores y podemos ver que si seleccionamos el
marcador Home la página no tiene filtros, mientras que si seleccionamos Año 2013, aparece
marcado el filtro del año 2013, cambiando todos los valores de la página de acuerdo al
marcador seleccionado.

Quitamos ambos Marcadores, con clic derecho sobre el marcador y seleccionamos Eliminar, lo
hacemos para ambos.

Ing. Moisés Galarreta R.


A continuación veremos como se puede guardar el estado visual a través de marcadores.

Procedemos a duplicar ambas tablas con Copiar (Ctrl + C) y Pegar (Ctrl + V)

El duplicado de la primera tabla lo convertimos en un gráfico de barras y lo sobreponemos


sobre la gráfica de tabla original y el duplicado de la segunda tabla lo convertimos en gráfico
circular y también lo sobreponemos sobre el gráfico de tabla original.

Seleccionamos el tipo de Tema: Valor Predeterminado, para que nos se vean los dos objetos
superpuestos, quedándonos de la siguiente manera:

Para poder acceder los objetos de manera más fácil habilitamos el panel de Selección que se
encuentra en el menú Ver y ahora nos muestra una sección de Selección

Ing. Moisés Galarreta R.


Ubicamos en la sección Selección cuales son los gráficos de barras y pye y les cambiamos el
nombre colocándoles Barras y Pye respectivamente, para saber cual corresponde a cada uno
damos clic en la opción Ocultar a la derecha del nombre, también identificamos las dos Tablas
originales.

Llevamos las Tablas hacía la parte superior, y a continuación quitamos el filtro del año 2013 y
procedemos a ocultar los gráficos Pye y de Barras:

Ing. Moisés Galarreta R.


Con esta configuración Agregamos un nuevo Marcador llamado Tipo Tabla:

Ahora hacemos lo inverso, es decir habilitamos los gráficos tipos Pye y Barras y ocultamos los
gráficos de Tablas y agregamos un Marcador llamado Tipo Gráfico:

Ya podemos navegar entre ambos tipos de Marcadores.

Ahora asignaremos los Marcadores como acciones de las imágenes o botones creados, para
esto, seleccionamos la imagen de Tabla, vamos a la sección formato de Imagen, habilitamos
Acción, en Tipo seleccionamos Marcador y en Marcador seleccionamos Tipo Tabla.

Ing. Moisés Galarreta R.


Procedemos de forma similar para la imagen de Gráfico pero en este caso seleccionaremos el
Marcador de Tipo Gráfico.

Por último, si aplicamos el filtro de Año al seleccionar alguna de las dos imágenes, vemos que
este filtro se pierde al cambiar de imagen. Este es un comportamiento normal en los
Marcadores, para que no suceda hay que deshabilitarlo, para eso debemos ir a cada Marcador,
dar clic en los tres puntos y deshabilitar la opción Datos. Se tiene que hacer para ambos
Marcadores y ya con esto los filtros se podrán mantener.

Ing. Moisés Galarreta R.


MEDIDAS AVANZADAS USANDO MATRICES

Vamos a mostrar en una matriz las ventas por Categorías, que mostrará tres columnas: ventas
de lunes a viernes, ventas de fin de semana y ventas totales.

Crearemos manualmente una tabla que contendrá los campos que servirán como columnas
para el gráfico de tipo Matriz.

Para crear manualmente la tabla vamos al menú Inicio, opción Especificar datos y aparece una
pantalla para Crear Tabla, colocamos en el nombre de la columna “Columna Matriz” e
ingresamos como valores de la columna: Ventas, Fin de Semana y Lunes-Viernes. Luego
colocamos como nombre de tabla: Columnas Matrix y presionamos el botón Cargar

Ahora podemos ver que se ha creado una tabla con los datos que hemos ingresado:

Procedemos a crear un nuevo reporte donde incluiremos un filtro de años en forma horizontal
y un gráfico de tipo Matrix al que vamos a agregar en las filas las categorías de producto.

Ing. Moisés Galarreta R.


Luego procedemos a agregar en la sección columnas del tipo de grafico Matrix el campo
“Columna Matriz” que acabamos de crear en la tabla Columnas Matrix

Vemos que muestra un mensaje de error ya que no tenemos ningún tipo de valor asignado
para mostrar, agregamos la medida “Total Sales” a la sección Valores, y ahora si muestra los
valores de Ventas, pero también podemos apreciar que para cada columna se repiten los
valores ya que aun no se ha creado una condición que las diferencie:

Para diferenciar las ventas en cada columna vamos a crear una nueva medida llamada Ventas
Matriz

Ing. Moisés Galarreta R.


Ventas Matriz =
var ColumnaSeleccionada = SELECTEDVALUE('Columnas Matrix'[Columna Matriz])
return
ColumnaSeleccionada

Y colocamos la nueva medida “Ventas Matriz” en la sección Valores, reemplazando a


“Total Sales”, vemos que los valores de las columnas toman el valor de sus cabeceras
de columnas, debido a que corresponden a la columna seleccionada para cada una de las
columnas.

Ahora crearemos dos nuevas medidas. La primera será la medida Ventas Lunes-Viernes
Ventas Lunes-Viernes = CALCULATE([Total Sales], FILTER('Date',
WEEKDAY('Date'[Date],2) in {1,2,3,4,5}))

Y luego la medida Ventas FinSemana


Ventas FinSemana = CALCULATE([Total Sales], FILTER('Date', WEEKDAY('Date'[Date],2) in
{6,7}))

Ahora volvemos a nuestra medida Ventas Matriz y vamos a modificarla


Ventas Matriz =
var ColumnaSeleccionada = SELECTEDVALUE('Columnas Matrix'[Columna Matriz])
return
SWITCH(ColumnaSeleccionada, "Fin de Semana", [Ventas FinSemana]
, "Lunes-Viernes",[Ventas Lunes-Viernes]
, "Ventas",[Total Sales])

En el gráfico se pueden ver ahora los valores indicados para: Lunes a Viernes, y
Fines de Semana.

Ing. Moisés Galarreta R.


Creamos una nueva tabla llamada Filtros Matrix, colocar Cargar

Se crea la tabla Filtros Matrix con una sola columna llamada Filtros

Ing. Moisés Galarreta R.


Agregamos un nuevo grafico de filtro horizontal donde traeremos la columna Filtros que
acabamos de crear:

Procedemos a crear dos nuevas medidas que permitirán ejecutar las acciones de estos dos
filtros:

% Ventas FinSemana = DIVIDE([Ventas FinSemana],[Total Sales],0)

% Ventas Lunes-Viernes = DIVIDE([Ventas Lunes-Viernes],[Total Sales],0)

Ahora modificaremos nuevamente nuestra medida Ventas Matriz quedando de la siguiente


manera:

Ventas Matriz =
var ColumnaSeleccionada = SELECTEDVALUE('Columnas Matrix'[Columna Matriz])
var FiltroSeleccionado =SELECTEDVALUE('Filtros Matrix'[Filtros])
return
SWITCH(FiltroSeleccionado, "Ventas ($)", SWITCH(ColumnaSeleccionada, "Fin de Semana",
[Ventas FinSemana]

Ing. Moisés Galarreta R.


, "Lunes-Viernes",[Ventas Lunes-Viernes]
, "Ventas",[Total Sales])
, "Ventas (%)",SWITCH(ColumnaSeleccionada, "Fin de Semana",
[% Ventas FinSemana]
, "Lunes-Viernes", [% Ventas Lunes-Viernes]
, "Ventas",[Total Sales])
)

Ahora el gráfico de la Matriz debería mostrar los valores en porcentajes o en montos de ventas
de acuerdo a lo seleccionado. Al seleccionar Ventas (%) vemos que muestra los porcentajes
pero en valor decimal:

Para que se muestre correctamente como % volvemos a modificar nuestra medida Ventas
Matriz y vamos a darle un formato de porcentaje, quedando de esta manera:

Ventas Matriz =
var ColumnaSeleccionada = SELECTEDVALUE('Columnas Matrix'[Columna Matriz])
var FiltroSeleccionado =SELECTEDVALUE('Filtros Matrix'[Filtros])
return
SWITCH(FiltroSeleccionado, "Ventas ($)", SWITCH(ColumnaSeleccionada, "Fin de Semana",
[Ventas FinSemana], "Lunes-Viernes",[Ventas Lunes-Viernes]
, "Ventas",[Total Sales])
, "Ventas (%)",SWITCH(ColumnaSeleccionada, "Fin de Semana",
FORMAT([% Ventas FinSemana],"percent"), "Lunes-Viernes", Format([% Ventas Lunes-
Viernes],"percent"), "Ventas",[Total Sales])
)

Ahora si se mostrarán los porcentajes correctamente:

Ing. Moisés Galarreta R.


Ing. Moisés Galarreta R.
DIFERENCIAS ENTRE ALL Y ALLSELECTED AL UTILIZARLOS CON FILTROS

Las funciones ALL y ALLSELECTED tienen comportamientos distintos al mostrar valores luego de
aplicar filtros en la página donde se vienen utilizando, vamos a ver esas diferencias.

Queremos visualizar el total que representa en porcentaje las ventas por cada Categoría sobre
el total de las ventas y ver como se ven afectados sus valores en base a los filtros que se puedan
ir aplicando.

Creamos una nueva página y agregamos como filtros las categorías y los años y además creamos
una tabla donde mostraremos el total de ventas (medida “Total Sales”) por categoría.

Ahora crearemos una medida que nos muestre el total global de las ventas, que nos permitirá
luego calcular el porcentaje que representan las ventas de cada categoría.

Para crear esta nueva medida utilizaremos la función CALCULATE combinada con la función ALL

La medida se llamará Ventas ALL

Ventas ALL = CALCULATE([Total Sales],ALL(Sales))

Agregamos la nueva medida a nuestra tabla:

Y ahora procedemos a crear una nueva medida que nos muestre el porcentaje que representa
las ventas de cada categoría:

Ing. Moisés Galarreta R.


% Ventas x Region ALL = DIVIDE([Total Sales],[Ventas ALL],0)

Agregamos la nueva medida a la tabla:

Al aplicar un filtro vemos que se mantienen los valores de la medida Ventas ALL no se ve
afectado, ya que la función ALL no se ve afectada por filtros externos:

Ahora calcularemos el total de las ventas utilizando la función ALLSELECTED creando la medida
Ventas ALLSELECTED

Ventas ALLSELECTED = CALCULATE([Total Sales],ALLSELECTED(Sales))

Agregamos la nueva medida en nuestra tabla y observamos como el valor de la medida se ve


influenciada por los filtros externos aplicados:

Ing. Moisés Galarreta R.


Para finalizar creamos ahora una nueva medida que nos muestre el porcentaje que representa
la venta de cada categoría ahora usando ALLSELECTED:

% Ventas x Region ALLSELECTED = DIVIDE([Total Sales],[Ventas ALLSELECTED],0)

Agregamos la medida a nuestra tabla:

Ing. Moisés Galarreta R.


Calculando un Acumulado Anual y Acumulado Dinámico

Procederemos a implementar el monto de ventas acumulado anual y acumulado dinámico.

Es una nueva página llamada Acumulado agregaremos dos filtros en formato de listas, uno que
muestre los años (Year) y el otro que muestre las categorías de productos (Category). También
agregaremos una tabla que contenga los campos MonthName de la tabla Date y la medida
Total Sales.

Procederemos a crear la medida Acumulado Anual:

Acumulado Anual =
CALCULATE(
[Total Sales],
FILTER(
ALLSELECTED('Date'),
'Date'[MonthNo]<=MAX('Date'[MonthNo])
)
)

Agregamos la medida creada como una columna a la tabla, y ahora podemos observar el
acumulado anual por meses.

Ing. Moisés Galarreta R.


Ahora vamos a generar un acumulado dinámico de acuerdo al mes que seleccionemos como
valor máximo que queremos mostrar.

Para poder hacer esto es necesario crear una tabla de meses que no esté integrada a nuestro
Modelo de Datos.

Crearemos de forma manual la tabla Meses, desde Inicio ir a la opción Especificar Datos,

Se abre una ventana para Crear Tabla, como nombres de columna indicaremos MesId y Mes.
Los valores para columna MesId, serán los números del 1 al 12, y los valores para la columna
Mes serán los nombres de los 12 meses. El nombre de la tabla será Meses. Procedemos a
cargar la tabla.

Agregamos un nuevo filtro en base a la columna Mes de la tabla Meses que acabamos de
crear. Se puede observar que se creará el filtro con los nombres de meses pero ordenados
alfabéticamente, para tener el orden correcto, tenemos que indicar que la columna Mes se
ordenará por la columna MesId.

Ing. Moisés Galarreta R.


Ahora se mostrarán los meses ordenados de forma correcta.

El mes que se seleccione en el filtro “Mes” debe indicar el máximo mes para el cuál se va a
mostrar un valor acumulado. Y sino se tiene nada seleccionado entonces que muestre el
Acumulado para todos los meses del año.

Procederemos a crear una medida llamada Acumulado Dinamico, que inicialmente será
exactamente igual a la medida Acumulado Anual.

Acumulado Dinamico =
CALCULATE(
[Total Sales],
FILTER(
ALLSELECTED('Date'),
'Date'[MonthNo]<=MAX('Date'[MonthNo])
)
)

Agregamos la medida a la tabla y vemos que los valores de ambas columnas Acumulado Anual
y Acumulado Dinamico son iguales.

Ing. Moisés Galarreta R.


Crearemos una variable llamada “acumulado” que guardará el resultado del Calculate y que
será lo que retornaremos como valor de la medida Acumulado Dinamico, al guardar los
cambios el resultado de la medida Acumulado Dinamico seguirá siendo el mismo.

A continuación crearemos una nueva variable llamada “mes” donde guardaremos el valor
máximo de la columna MonthNo y colocaremos el nombre de la variable mes donde antes
teníamos la expresión MAX(‘Date[MonthNo]). Al actualizar se observa que el valor de la
medida Acumulado Dinamico se mantiene igual.

Ahora crearemos una variable llamada MesSeleccionado, que tome el valor seleccionado del
filtro de meses, para esto utilizaremos la función SELECTEDVALUE, que debe devolvernos la
columna MesId.

Ing. Moisés Galarreta R.


A continuación al momento de retornar el valor de la variable “acumulado”, vamos a agregar
una condición que indique que devuelva “acumulado” si el valor de la variable “mes” es menor
o igual al valor de la variable “MesSeleccionado”

Al actualizar vemos que no devuelve ningún valor para la medida “Acumulado Dinamico”, esto
debido a que no tenemos ningún mes seleccionado y no hemos indicado una opción en caso
de que no se seleccione ningún mes.

Ing. Moisés Galarreta R.


Al seleccionar un mes se puede observar que muestra valores en la columna Acumulado
Dinamico, hasta el mes seleccionado.

Vamos a modificar la medida Acumulado Dinamico para que muestre el acumulado para todos
los meses cuando no se selecciona un mes en particular.

Para esto crearemos una nueva variable llamada maxMesSeleccionado, que traerá el valor
máximo de la columna MesId, y al momento de retornar el valor para la medida, agregaremos
una condición que verifique si el máximo mes seleccionado es igual a 12, en ese caso devolverá
el valor de la variable “acumulado” y si no lo es primero validará que la variable “mes” sea
menor o igual que la variable “MesSeleccionado”, para recién devolver el valor de
“acumulado”

Actualizamos y ahora ya se mostrarán valores en la columna Acumulado Dinamico para el total


de los meses cuando no se seleccione ningún valor en el filtro de Meses.

Ing. Moisés Galarreta R.


Ing. Moisés Galarreta R.
ROW LEVEL SECURITY

Power BI permite crear roles que contengan filtros específicos para que determinados usuarios
sólo puedan visualizar la información que se encuentre definida por cada rol.

Primero se crean los roles y luego se asignan los usuarios que van a tener los permisos
especificados por cada rol.

La creación de los roles se realiza en Power BI Desktop, mientras que para agregar los usuarios
a cada rol se tiene que hacer desde el servicio web de Power BI.

Tenemos una página inicial con información de ventas y con un filtro por países.

Vamos a crear un rol llamado “Ventas USA”, para esto vamos desde el menú Modelado a la
opción Administrar Roles.

Agregamos el nombre del rol, en este caso será Ventas USA, ahora nos muestra el total de las
tablas existentes y al seleccionar una tabla en particular, en este caso Sales, aparece un menú
con la opción de Agregar Filtros y podemos seleccionar la columna por la cual queremos
agregar el filtro, en nuestro caso será por la columna “Country Name”

Ing. Moisés Galarreta R.


Esto nos genera una expresión DAX, donde tenemos que cambiar el valor por el nombre del
país especifico por el cual queremos crear el rol y seleccionamos la opción Guardar.

Para verificar la funcionalidad del rol, vamos a la pestaña Modelado y a la opción Ver como y
seleccionamos el nombre del rol creado:

Ing. Moisés Galarreta R.


Con esta opción, ahora sólo se muestra las ventas de USA, no teniendo la opción de ver las
ventas de otros países:

Para poder dar los roles a otros usuarios tenemos que publicar el reporte:

Ing. Moisés Galarreta R.


Para dar los accesos a los roles, desde el servicio web de Power BI, vamos al Dataset y luego a
la opción Security:

Nos aparece la pantalla Row-Level Security y acá ya podemos agregar uno ó más usuarios por
rol seleccionado:

Ing. Moisés Galarreta R.


Ing. Moisés Galarreta R.

También podría gustarte