Power BI
FUNCIONES DAX
Data Analysis Expressions
(Continuación)
#AprendiendoPowerBI Ing. Segundo Morales Rubio
Reglas antes de iniciar
• Micrófonos apagados.
• Video apagado.
• Levantar la mano al querer hacer una pregunta.
• Dejar sus preguntas en los comentarios.
• Mantener el respeto y orden.
Agenda
1. Función ALL
2. Función FILTER
3. Función SUMX
4. Funciones de Inteligencia de tiempo 1 y 2
Función ALL
ALL( <table> ; <column1>; <column2>, …)
1. Ventas totales de la tabla FactSales:
ALL Totales = CALCULATE([Ventas Totales]; ALL(FactSales))
2. %Total de las Ventas:
% ALL Totales = DIVIDE([Ventas Totales];[ALL Totales];0)
3. Devoluciones totales de la tabla FactSales:
ALL Devoluciones = CALCULATE([Cantidad Devoluciones];ALL(FactSales))
4. %Total de las Devoluciones:
% ALL Devoluciones = DIVIDE([Cantidad Devoluciones];[ALL Devoluciones];0)
Función FILTER
Devuelve una tabla compuesta por aquellas filas de la tabla original que han superado el filtro.
FILTER(<table>,<filter>)
1. Cantidad de Subcategorías con ventas mayores a 1,800,000:
SubCat > 1800000 =
CALCULATE(COUNTROWS(DimProductSubcategory);
FILTER(DimProductSubcategory;[Ventas Totales]>1800000))
Función SUMX
• Devuelve la suma de una expresión evaluada para cada fila de una tabla.
• Acepta una tabla como argumento de entrada.
SUMX(<table>, <expression>)
Caso práctico:
Nos piden obtener el ingreso total por categoría y el % de ganancia por cada una de ellas.
Solución 1:
1. Agregaremos una columna en FactSales, donde traeremos el PrecioUnitario:
PrecioUnitario = RELATED(DimProduct[UnitPrice])
2. Vamos a multiplicar precio por cantidad para saber el total del ingreso:
Ingreso = FactSales[PrecioUnitario] * FactSales[CantTot]
Solución 2:
1. Usamos SUMX para calcular los ingresos y RELATED para llamar el precio de los producto:
Ingreso Total 2 = SUMX(FactSales; RELATED(DimProduct[UnitPrice])*FactSales[CantTot])
2. Usamos SUMX para calcular las ganancias totales:
Gan.Totales = SUMX(ALL(FactSales);RELATED(DimProduct[UnitPrice])*FactSales[CantTot])
3. Por ultimo usamos DIVIDE para calcular el %Ganancia:
%Ganancia = DIVIDE([Ingreso Total 2];[Gan.Totales];0)
Funciones de Inteligencia de tiempo
Acumular por un período de tiempo
DATESYTD(<dates> [,<year_end_date>])
Devuelve una tabla que contiene una columna con las fechas del año hasta la fecha, en el contexto actual.
DATESQTD(<dates>)
Devuelve una tabla que contiene una columna con las fechas del trimestre hasta la fecha, en el contexto actual.
DATESMTD(<dates>)
Devuelve una tabla que contiene una columna con las fechas del mes hasta la fecha, en el contexto actual.
TOTALYTD(<expression>,<dates>[,<filter>][,<year_end_date>])
Evalúa el valor anual hasta la fecha de la expresión en el contexto actual.
TOTALQTD(<expression>,<dates>[,<filter>])
Evalúa el valor de expresión de las fechas del trimestre hasta la fecha del contexto actual.
TOTALMTD(<expression>,<dates>[,<filter>])
Evalúa el valor de la expresión del mes hasta la fecha en el contexto actual.
Caso Práctico
Nos piden traer los ingresos acumulados a cierto periodo del año. Y elaborar un gráfico
donde se pueda hacer comparaciones respecto a los distintos años.
Solución:
1. Agregamos las siguiente medida:
Opción 1:
Acum. Ingresos = CALCULATE([Ingreso Total 2];DATESYTD(DimCalendar[DateKey]))
Opción 2:
Acum.Ingresos 2 = TOTALYTD([Ingreso Total 2];DimCalendar[DateKey])
2. Ejemplificamos con un acumulado mensual:
Acum.Ingresos.Mes = TOTALMTD([Ingreso Total 2];DimCalendar[DateKey])
Resultado:
Funciones de Inteligencia de tiempo 2
Comparación entre años
SAMEPERIODLASTYEAR(<dates>)
Devuelve una tabla que contiene una columna de fechas desplazadas un año atrás en el tiempo desde las fechas de la
columna dates especificada, en el contexto actual.
Caso Práctico
Nos solicitan poder traer los ingresos actuales y compararlos contra los ingresos del año
anterior y poder evaluar como fue la evolución.
Solución:
1. Agregamos la medida para comparar:
Ingreso Total Ant. = CALCULATE([Ingreso Total 2]; SAMEPERIODLASTYEAR(DimCalendar[DateKey]))