Power Bi
1. Explicar la normalización de las tablas
. Tablas de hechos ( Ventas) son las tablas principales o centrales en la estrella.
. Tablas de dimensiones (Maestras) son las tablas auxiliares como Clientes, Productos.
2. Importamos el archivo datos con sus diferentes hojas.
3. Creamos las relaciones (Modelo de datos)
4. Ya podemos crear los informes que necesitamos:
. Ventas por Ciudad
. Ventas por distribuidor
. Venta por precio, marca
5. Creemos un ejemplo de informe:
. Arrastramos una tabla
. Arrastramos Clientes.nombre_cliente
. Arrastramos Principal.cantidad_vendida
. Arrastramos Principal.cantidad_devoluciones
Utilizamos DAX para crear campos que muchas veces no vienen con los datos originales.
1. Crear columnas en la tabla de Fechas.
a. Vamos a “Vista de Tabla”
b. Para mostrar las herramientas de la columna damos clic sobre el titulo de la columna.
c. Cambiamos el forma de la columa de fecha a formato (dd/mm/yyyy)
2. Creamos una columna nueva con el año de la fecha.
a. Herramienta de columna -> Nueva Columna
b. En la barra de formulas escribimos:
Año = YEAR(Fechas[Fechakey]
3. Creamos una columna para el trimestre
Trimestre = QUARTER(Fechas[Fechakey])
4. Creamos una columna para el trimestre
Mes = MONTH(Fechas[Fechakey])
5. Creamos una columna para el dia
Dia = DAY(Fechas[Fechakey])
6. Creamos una columna para el numero del dia de la semana que lo identifica.
Numero de Dia = WEEKDAY(Fechas[Fechakey],2)
7. Creamos columna con el Numero de Semana
Numero de Semana = WEEKNUM(Fechas[Fechakey],2) 2 – Comienza Lunes 1–
Comienza Domingo
En PBI existen dos elementos:
. Columnas Calculadas
. Medidas ( No existe una columna adicional )
1. Crear una nueva medida.
a. Sobre la tabla Ventas damos clic derecho y elegimos “Nueva Medida”
b. Escribimos la siguiente función:
Total Unidades Vendidas = SUM(Ventas[Cantidad_vendida])
NOTA: No aparece como una nueva columna ya que es una medida y no una
columna. La podemos visualizar a la Izq en la pestaña de DATOS con el icono
de una calculadora.
c. Para probar podemos arrastrar una etiqueta y arrastrar la nueva medida.
d. Para colocar formato al valor mostrado:
. Seleccionamos la etiqueta
. Vamos a formato -> Valor del globo -> Mostrar unidades -> Ninguno
. Vamos a la vista de “Tabla”
. Seleccionamos la medida creada
. Colocamos el formato deseado
2. Creamos una medida igual para las devoluciones.
Total Unidades Vendidas = SUM(Ventas[Cantidad_vendida])
3. Creamos una medida con la diferencia entre las dos anteriores.
Total Unidades Vendidas Netas = [Total Unidades Vendidas]-[Total de Devoluciones]
NOTA: Colocamos lo calculado anteriormente en una tabla
Distribuidor.nombre_distribuidor
Total de unidades vendidas
Total de unidades devueltas
Total de unidades vendidas netas
4. Organizar las medidas creadas en un solo sitio.
. En el menú principal elegimos “Inicio”
. Introducir Datos
. Colocamos como Nombre: Medidas
. Para mover las medidas a la nueva carpeta.
. Vamos la pestaña de Relaciones
. Sobre el titulo de “Ventas” damos clic derecho y elegimos “Seleccionar medidas”
. Desde el panel de datos arrastramos las medidas a la carpeta “Medidas”
NOTA: Como las Medidas ya no están en el sitio original desde donde se las utilizo para
las formulas debemos corregir la formula.
Total Unidades Vendidas Netas = [Total Unidades Vendidas] - [Total de Devoluciones]
5. Colocar el nombre del dia de la semana.
Nombre del dia = FORMAT(Fechas[Fechakey],"dddd")
6. Colocar el nombre del mes
Nombre del Mes = FORMAT(Fechas[Fechakey],"mmmm")
Condicionales en DAX
. Función IF()
1. Adicionar una columna donde se coloque “Producto Premium” si la categoría es
“Herramienta”
. Creamos una nueva columna llamada Categoria
Herramientas = IF(Productos[Categoría]="Herramienta","Producto Premium","")
Herramientas = IF(Productos[Categoría]="Herramienta","Producto
Premium",BLANK())
2. Si es “Herramienta” -> Producto Premium
Si es “Cadena” -> Producto General
3. Operadores Y y O
OR o ||
PP2 = IF (OR (Productos [Categoría]="Herramienta",Productos[Marca]="Truper"),"Productos
Standard",BLANK())
PP3 = IF( Productos[Categoría]="Cadenas" || Productos[Marca] = "Truper", "Productos
Standard",BLANK())
PP4 = IF( Productos[Categoría] IN {"Herramientas","Cadenas","Discos"}, "Producto
Premium",BLANK())
AND o &&
. Herramientas que cuesten mas de 300
PP3 = IF( Productos[Categoría]="Cadenas" || Productos[Marca] = "Truper", "Productos
Standard",BLANK())
Conteo de Valores
Funciones CONTAR y CONTARA
Contar la cantidad de productos.
. Creamos una nueva medida.
NOTA: La función COUNT Unicamente considera valores numéricos.
Cantidad de Productos = COUNT(Productos[Códigokey])
La colocamos en una etiqueta.
. Contar por la columna Marca
Cantidad de Marcas = COUNT A(Productos[Marca])
. Contar cuantas fila tiene la tabla sin importar si hay elementos en blanco.
Cantidad de Articulos = COUNTROWS(Productos)
. Contar PP5 para contar que productos No Perfectos
Productos NO Perfectos = COUNTBLANK(Productos[Tipo de Producto])
. Cuantas marcas distintas hay dentro de los productos. (Valores Únicos dentro de una columna)
Marcas Unicas = DISTINCTCOUNT(Productos[Marca])
Funciones de Texto en DAX
. Como Unir textos
. Signo &
Unir la columna Descripcion y la columna marca
. Creamos una nueva columna
. Creamos una nueva medida
. Nombre y Marca = Productos[Descripción] & " " & Productos[Marca] Explicar porque las “ “
. Función Concatenar ( Únicamente dos cadenas )
. Unir la columna Costo con Tipo de Producto unicamente aquellos que sean “Perfecto”
Costo con productos Perfecto = IF(Productos[Tipo de Producto]="Perfecto",CONCATENATE(Productos[Costo]," "&Productos[Tipo de
Producto]),"")
. Extraer Texto
. Funcion Left
. Todos los productos que inicien con 4220 le vamos a colocar en Tipo de Producto “Exclusivo”
. Izquierda = LEFT(Productos[Códigokey],4)
. Izquierda = if( LEFT(Productos[Códigokey],4) == "4220","Exclusivo","")
. Función Right
Obtener los últimos 3 caracteres de la columna de Tipo de Producto.
Derecha = RIGHT(Productos[Tipo de Producto],3)
. Función MID ( Extrae parte de un texto con una posición inicial hasta una posición final )
Extraer = MID(Productos[Categoría],3,3)
NOTA: Funciones de Fecha que me olvide
Nombre de mes = FORMAT(CALENDARIO[Fechakey],”MMMM”)
Dia Semana = FORMAT(Fechas[Fechakey],"DDDD")
. Convertir a Mayusculas
Mayusculas = UPPER(Fechas[Nombre Mes])
. Convertir a Minusculas
Minusculas = LOWER(Fechas[Mayusculas])
Función CALCULATE en DAX ( Nos permite principalmente filtrar datos )
. Cuantos productos tenemos de la marca “Truper”
. Creamos una nueva medida
Cantidad de Producto Truper = CALCULATE(COUNTROWS(Productos),Productos[Marca]="Truper")
. Cuantos productos tenemos de varias marcas por ejemplo la marca “Truper” y “Stanley”
NOTA: Crear una medida para truper otra para Stanley y una tercera que haga la suma de
las dos anteriores.
. Creamos una nueva medida
Productos Truper y Stanley = CALCULATE(COUNTROWS(Productos),Productos[Marca]="Truper" || Productos[Marca] =
"Stanley")
. Cuantos productos de marca “Truper” y que sean “Tipo de producto” “Perfecto” (FILTROS EN COLUMNAS
DIFERENTES)
NOTA: Probar con || para verificar que no funciona.
Productos Tuper que son perfecto = CALCULATE(COUNTROWS(Productos) , Productos[Marca]="Truper", Productos[Tipo
de Producto]="Perfecto")
Función RELATED ( Nos permite extrae CAMPOS )
Traer de otras tablas columnas (Gracias a las relaciones)
Solo se puede utilizar en columnas calculadas y en Medidas.
. Traer la columna [Link] a la tabla de Ventas.
Creamos una columna calculada en Ventas Netas
Calculamos la cantidad neta de artículos vendidos
Cantidad Neta = Ventas[Cantidad_vendida] - Ventas[Cantidad Devoluciones]
Traemos la columna Costo
Costo Unitario = RELATED(Productos[Costo])
Calculamos el valor Neto vendido
Ventas Netas = Ventas[Cantidad Neta] * Ventas[Costo Unitario]
. Traer a la tabla de ventas las columnas Pais y Forma de pago de la tabla Clientes.
Creamos una nueva columna llamada “Pais”
Pais = RELATED(Clientes[Pais])
Creamos una nueva columna llamada “Forma de Pago”
Forma de Pago = RELATED(Clientes[Forma de Pago])
Creamos una nueva columna para unir las dos anteriores, le llamaremos “Pais Pago”
Pais - Pago = Ventas[Pais] & ", "&Ventas[Forma de Pago]
NOTA: Creamos un grafico de barras para mostrar las formas de pago.
Eje X: Forma de Pago / Pais - Pago
Eje Y: Cantidad Neta