1 Introducción a DAX, problema vs soluciónAna María Bisbé York Consultora BI #sqlsatMadrid #sqlsat459 @ambynet
2 3 Sponsor Sessions at 11:30 Don’t miss them, they might be getting distributing some awesome prizes! HP SolidQ Pyramid Analytics Also Raffle prizes at the end of the event provided by HP, SolidQ, Pyramid Analytics, Altran & Microsoft
3 Our Main Sponsors:
4 Introducción a DAX, problema vs soluciónAgenda Modelos tabulares DAX vs Excel DAX vs T-SQL DAX vs MDX Solucionando problemas Columnas calculadas vs medidas Contextos Patrones BI de tiempos
5 Modelos tabulares… dax
6 DAX … algo nuevo Modelo tabular Orígenes de datos Tablas ColumnasNo olvidar Power Query Tablas Columnas Relaciones Jerarquías Otras funcionalidades
7 Modelos tabulares DEMO
8 Demo Modelo tabular
9 Lenguaje de expresiones DAXEncontramos DAX en PowerPivot para Excel y Sharepoint BISM – Modelo tabular PowerBI
10 Lenguaje de expresiones DAXDAX – Data Analysis Expressions DAX - colección de funciones, operadores, referencias y valores constantes que se pueden utilizar en una fórmula o expresión, para calcular y devolver uno o más valores. Las expresiones DAX brindan capacidades de cálculo, de integración de datos y más.
11 Comparación DAX vs Excel, SQL y MDXResumen comparativo DAX, lenguaje funcional, todo en DAX es una expresión, como Excel DAX usa modelo tabular relacional, como T-SQL DAX usa concepto de contexto actual, como MDX
12 Dax vs Excel
13 DAX vs MS Office Excel Creado a partir del lenguaje de fórmulas ExcelPowerPivot es una herramienta para usuarios expertos de Excel Muchas funciones existen igual en Excel Ambos son lenguajes funcionales, todo en Excel y DAX es una expresión Reduce la curva de aprendizaje En poco tiempo se crean las primeras columnas calculadas y medidas
14 DAX vs MS Office Excel DAX es diferente a Excel,Celdas vs tablas y columnas No se puede copiar y pegar una fórmula de uno en otro Hay un conjunto de funcionalidades que no existen en Excel BI de tiempos
15 DAX vs MS Office Excel DAX es diferente a Excel,Diferencia de sintaxis en Excel, no existente en DAX =SUMA([Importe]) vs Uso de iteradores en DAX, no existen en Excel =SUMX(Ventas, Ventas[Cantidad]*Ventas[Precio]) Excel exige la columna para poder crear agregado
16 DAX vs Excel
17 Dax vs T-SQL
18 DAX vs SQL Consultas al modelo como si de una base de datos relacional se tratara EVALUATE vs SELECT FROM Selección de columnas WHERE ORDER BY GROUP BY, con y sin agregados
19 Consultar DAX - Recursohttps://daxstudio.codeplex.com/
20 DAX vs SQL
21 DAX vs SQL
22 DAX vs TSQL DEMO
23 DAX vs SQL
24 Recurso – DAXFormatter.com
25 DAX vs SQL Trabajo con relaciones entre tablas: igual y a la vez diferente En DAX, no hay que expresar la condición del JOIN Sólo LEFT JOIN Subconsultas SQL = funciones anidadas DAX
26 DAX vs SQL - JOIN
27 DAX vs SQL – JOIN más agregado
28 DAX vs SQL – Subconsultas
29 DAX vs MDX
30 DAX vs MDX Saber MDX no ayuda demasiado para aprender DAX Dos tipos de modelos, dos sabores, funcionalidades compartidas,… o no Ambos son lenguajes de programación En MDX, repositorio para código, para crear miembros y conjuntos y además, existe SCOPE En DAX, nada de esto; pero a su favor Creación de columnas calculadas Ambos son lenguajes de consulta En MDX, para consultar: SELECT En DAX, para consultar: EVALUATE
31 DAX vs MDX Otras razones para cambiar de forma de pensarDiferente trabajo con jerarquías MDX se apoya en las jerarquías, digamos… (PrevMember(CurrentMember)) DAX filtra tablas, no usa las jerarquías más que para visualizar Función de agregación MDX utiliza la función de agregación definida en el modelo multidimensional DAX necesita que se especifique en la expresión, no existe definición de función de agregado en el modelo tabular
32 Columnas calculadas vs medidas en DAX
33 Columnas calculadas vs medidas… algo nuevoDos tipos de cálculos: Columnas calculadas Se evalúa cada fila Consume más recursos, calcula para cada fila de la tabla Cálculo inmediato, en columnas, dentro del modelo Tabular Medidas Nuevo campo en la tabla PowerPivot – se evalúa en el momento que se agrega a la tabla/gráfico Consume menos recursos, sólo se calcula para las celdas que se utilizan en tablas y gráficos dinámicos Cálculo dinámico, en medidas o cálculos, al vuelo para cada celda de la tabla dinámica
34 Columnas calculadas DEMO
35 DEMO Columnas calculadas con DAXYa teníamos de las jerarquías: -- Sentido relación M:1 En Productos =RELATED(Categorias[EnglishProductCategoryName]) =RELATED(Subcategorias[EnglishProductSubcategoryName]) En Clientes =RELATED(Geografia[EnglishCountryRegionName]) Ventas Margen:=Ventas[Venta]-Ventas[Coste] VentasNegativas=IF(Ventas[SalesTerritoryKey]=1;-1*Ventas[Venta];Ventas[Venta]) Productos LíneaProductos=SWITCH(Productos[Línea];"T";"Turismo";"M";"Montaña";"R";"Ruta";"S";"Sencilla";"Sin Asignar") Clientes: =IF(Clientes[Ingresos]>50000;"Alto";IF(Clientes[Ingresos]>30000;"Medio";"Bajo")) Fechas: Semestre:=ROUNDUP(MONTH(Fechas[FullDateAlternateKey])/6;0) Territorios: -- Calcular agregado en tabla relacionada -- Sentido relación 1:M =SUMX(RELATEDTABLE(Ventas);Ventas[Venta])
36 Medidas DEMO
37 DEMO Medidas con DAX 3.- Trabajo con Medidas Columnas vs Medidas%Margen -- Primero como columna calculada Margen%=Ventas[Margen]/Ventas[Venta] -- Luego, lo mismo; pero como Medida %Margen_M %Margen_M=SUM(Ventas[Margen])/SUM(Ventas[Venta]) -- Correcto Medidas y agregados simples y complejos SumaVentas:=SUM(Ventas[Venta]) SumaXVentas:=SUMX(Ventas;Ventas[Venta]) -- Uso de SUMX para sumar varias columnas SumaXCantidadPrecio:=SUMX(Ventas;Ventas[Cantidad]*Ventas[Precio]) SumaXVentasIVA:=SUMX(Ventas;Ventas[Venta]+Ventas[IVA])
38 Columna calculada vs MedidaEn filas y/o columnas de tabla dinámica En segmentadores En agrupaciones o categorizaciones de elementos, para discretizar datos Medida Examinar el resultado como valor, en el panel central de tabla dinámica Utilizar este valor como origen de datos para KPI Su valor dependerá del contexto definido por el usuario en la tabla dinámica Está afectado por filtros de tabla dinámica y segmentadores
39 Contextos en DAX
40 Contextos de evaluaciónCada consulta se resuelve dentro de un contexto específico Contexto de filtro Siempre existe y define a un conjunto de filas activas en un cálculo Contexto de filas Existe sólo durante la iteración de una tabla y es la fila actual de la tabla en el momento de su iteración
41 Manipular el contexto de filtroFunción CALCULATE Para manipular el contexto de filtro con filtros diferentes El argumento expresión es el único obligatorio La expresión del filtro es la que al ser evaluada modifica el contexto de filtro Pueden ser de dos tipos: Expresión lógica que contenga una sola columna, en ese caso, cualquier contexto de filtro sobre esta columna se sustituye por la nueva condición Una expresión de tabla que devuelve una o más columnas, en este caso, todos los filtros sobre las columnas devueltas por la expresión de tabla se sustituyen por la nueva condición de filtro
42 Propagación del contexto de filtrosCuando se aplica contexto de filtro sobre una tabla el filtro se propaga a las otras tablas relacionadas para cada relación uno a muchos (1:M) Si se aplica un filtro a una columna de la tabla Categoría, se propaga a Productos y también a Ventas No se propaga a Fechas
43 Contextos DEMO
44 Manipular el contexto de filtro
45 Manipular el contexto de filtro
46 Manipular el contexto de filtro
47 Manipular el contexto de filtro
48 Recurso
49 BI de tiempos con DAX
50 Inteligencia de tiemposComparar valores en períodos de tiempo equivalentes Requerimientos del modelo: Tabla de tiempos independiente, que contiene exclusivamente fechas y columnas derivadas sobre fechas La tabla de tiempos no puede contener saltos en fechas, de inicio a fin sin interrupciones El mínimo nivel de granularidad para el día, no puede incluir rangos de horas, el día es la mínima unidad. Al menos una columna tiene que ser de tipo fecha (Date) Utilizan funciones de inteligencia de tiempo para definir el comportamiento del negocio a través del tiempo Comparación de resultados entre años, donde el objetivo es un tanto porciento de crecimiento sobre el valor del período anterior
51 BI de tiempos DEMO
52 Períodos anteriores y posterioresTrimestreAnterior:= CALCULATE(SUM(Ventas[Ventas]); PREVIOUSQUARTER(Fechas[Fecha])) AñoAnterior:= CALCULATE(SUM(Ventas[Ventas]); PREVIOUSYEAR(Fechas[Fecha])) MismoPeríodoAñoPasado:= CALCULATE(SUM(Ventas[Ventas]); SAMEPERIODLASTYEAR(Fechas[Fecha]))
53 Períodos paralelos
54 Inteligencia de tiempos – Desde / Hasta
55 Agregar y comparar en el tiempoObtener los totales desde inicios de año, trimestre, mes hasta día actual Conocidas como YTD (Year to date) Comparar estos agregados con los de años anteriores Ambos, agregados y comparativas cambian según el filtro de fecha y el nivel que se esté analizando
56 Acumulados
57 patrones
58 Clasificación ABC
59 Clasificación ABC
60 Clientes nuevos y recuperados
61 Clientes nuevos y recuperados
62 Recursos http://www.daxpatterns.com/
63 Resumen de recursos https://daxstudio.codeplex.com/
64 ¿Preguntas? Ana María Bisbé York [email protected] http://amby.net/¡¡ Gracias !!