Aprendizajes de la sección “Create measures by using DAX” del módulo “Model the data”

  • dlom
    Participante

      ¿Qué aprendiste en la sección “Create measures by using DAX”?
      ¿Cómo te servirá esto que aprendiste en tus desarrollos de Power BI?
      ¿Cómo te servirá esto que aprendiste al presentar el examen de certificación?

    • Fausto
      Participante

        Me pareció muy interesante que agreguen clases para dar una pequeña capacitación del uso de la función CALCULATE (teniendo en cuenta que probablemente sea la más potente de PowerBI) y también un extra con una breve explicación de las funciones de Time Intelligence

        egpjavier
        Participante

          Hola Fausto,

          Justo hicimos dos Masterclass de 90 minutos cada uno sobre la Función CALCULATE, y otro sobre Time Intelligence.

          Puedes verlos en la Especialización en DAX, te comparto los enlaces:

          https://www.datdata.com/products/especializacion-en-dax-con-power-bi/categories/2154393702/posts/2173740984

          https://www.datdata.com/products/especializacion-en-dax-con-power-bi/categories/2154393702/posts/2173740985

           

          Saludos!

          Javier

          Andrea
          Participante

            HOla,

            les copio mi resumen,.

            Un saludo

            Crear medidas de agregación única
            Uso de SUM and IF

            Uso de funciones estadísticas Básicas:
            Average
            Count
            Max and Min
            Es mejor trabajar con medida que con las columnas (seleccionando el tipo de medida que se necesita, i.e. Sum, Average, etc), ya que así se obtiene directamente la medida que se necesita.

            Identificar medidas implícitas y reemplazar por medidas explícitas
            Ocultar las columnas que pueden dar lugar a confusión por parte del usuario y dejar las medidas calculadas.

            Reemplazar las columnas numéricas con medidas: iteradores X
            https://www.datdata.com/products/certificacion-oficial-por-microsoft-de-power-bi/categories/3567095/posts/11910394
            Iteradores X: dan row context a las medidas para evitar usar columnas para hacer operaciones por columnas. Ejemplos: SUMX, AVERAGEX,
            Por ejemplo, para SUM, se puede calcular la fila y luego sumarla (con SUM) o hacer todo de una vez con SUMX

            Para una función ejemplo SUMX(Tabla, Expresion), la expresión usada puede ser, por ejemplo una medida, o una columna, es decir:
            SUMX(Tabla Ventas, Tabla Ventas[columna]) =SUMX(Tabla Ventas, Medida)
            Los pasos para definir la función de este ejemplo serían:
            Se define una tabla con los datos
            Se ejecuta la expresión para cada fila de la tabla
            Se suman (en el caso de la función SUMX) los resultados de las operaciones para cada fila de la tabla indicada. La operación que se realice depende de la función que se utilice, AVERAGEX, SUMX, MINX, MAX, COUNTX, etc.

            Ejemplo:

            Si quiéramos calcular una medida con información contenida en distintas tablas se debe usar el RELATED. Ejemplo, si se quiere calcular el coste de venta de cada venta realizada, se debe hacer :
            Costo de venta =SUMX(Sales, Sales[Quantity]*RELATED(Products[Unitary Cost])
            Usar calculate para manipular filtros
            https://www.datdata.com/products/certificacion-oficial-por-microsoft-de-power-bi/categories/3567095/posts/11910392
            Para calcular la venta total de todos los vendedores, sin filtros, se debe hacer:
            Filtro ALL
            Venta total =CALCULATE([Venta (Sum)], ALL(Seller[Seller Name])
            Aquí hay que tener en cuenta que con ALL se quitan todos los filtros que hay en el reporte. Otra cuestión es que estamos usando Venta(Sum) que es una medida que suma todas las ventas. Lo correcto es usar medidas dentro de medidas, aunque se podría haber calculado a través de SUM(Sales[Ventas]) que es la suma de la columna que tiene todas la ventas.
            Filtro ALLSELECTED
            Si usáramos ALLSELECTED eliminaríamos solo los filtros de la visualización en donde insertemos la medida
            Venta total =CALCULATE([Venta (Sum)], ALLSELECTED(Seller[Seller Name]), o podría haberse puesto:
            Venta total = CALCULATE([Venta (Sum)], ALLSELECTED(Seller[Seller Name], Seller[Region]))
            Capacitación express CALCULATE
            https://www.datdata.com/products/certificacion-oficial-por-microsoft-de-power-bi/categories/3567095/posts/11910396
            Contexto de Evaluación:
            Todas las operaciones de DAX son evaluadas en un contexto. Una misma operación de DAX puede tener resultados diferentes según el contexto en el que se evalúe:

            En un caso el contexto es el general y en el otro es el regional.
            El contexto puede ser:
            ROW CONTEXT: hace referencia a otros valores dentro de la misma fila
            FILTER CONTEXT: hace referencia a los valores dentro en una misma columna o tabla:

            CALCULATE(): Qué hace CALCULATE()?
            CALCULATE es la única función que puede modificar el FILTER CONTEXT.
            Función: CALCULATE(<Expresión>, Filtro1, Filtro2, …). En CALCULATE() primero se consideran los filtros y luego la expresión que se ejecuta después de los filtros para obtener el resultado.

            Ejemplo: SUM VS CALCULATE1()

            Ejemplo 2: quitamos todos los filtros de año en CALCULATE2()

            La función se traduce como una tabla donde se le han aplicado filtros para obtener el CALCULATE1

            Funciones comunes con CALCULATE()
            Algunas funciones que devuelven una tabla son:
            FILTER(): Devuelve una tabla filtrada
            ALL(): quita todos los FILTROS y devuelve una tabla
            ALLSELECTED: Quita todos los filtros de una visualización y devuelve una tabla
            ALLEXCEPT(): quita todos los filtros except los que se pongan en la función y devuelve una tabla
            Funciones de TIME INTELLIGENCE

            Funciones TIME INTELLIGENCE con DAX
            https://www.datdata.com/products/certificacion-oficial-por-microsoft-de-power-bi/categories/3567095/posts/11921599
            Cálculo de ventas totales:
            Venta = SUM(Sales[Venta])

            Cálculo de ventas totales en el mismo período del año anterior:
            Ventas mismo Mes año anterior = CALCULATE([Venta], SAMEPERIODLASTYEAR(Calendario[Fecha]))
            Para calcular las ventas acumuladas:
            Ventas acumuladas en el año = CALCULATE([Venta], DATESYTD(Calendario[Fecha]))
            En una tabla quedaría así:

            Capacitación express en TIME INTELLIGENCE
            https://www.datdata.com/products/certificacion-oficial-por-microsoft-de-power-bi/categories/3567095/posts/11921597
            Cuándo se utilizan?
            Se utilizan por ejemplo para
            a. Comparar venta con periodos previous
            b. Obtener acumulados mensuales, trimestrales, anuales de ventas
            c. Obtener el promedio de ventas de los últimos 30 días-
            No se debe confundir con las funciones de FECHA Y HORA

            RequisitosLa columna fechas debe tener todas las fechas del rango de fechas considerado
            La fecha debe estar marcada del tipo FECHA o FECHA/HORA
            PARA CUMPLIR SIEMPRE ESTOS REQUISITOS SE USA LA TABLA CALENDARIO

            Pasos requeridos por estas funciones
            a- Detecta el contexto de filtro actual para determinar el periodo de fechas en el contexto
            b- Elimina el contexto del filtro de la columna de fechas para tener todas las fechas disponibles
            c- Se desplaza en el tiempo para encontrar en nuevo periodo (especificado en la función)
            d- Aplica el filtro para obtener el periodo deseado
            Grupos de funciones
            Que devuelven una fecha específica
            FIRSTDATE()
            STARTOFMONTH()
            ENDOFMONTH()
            STARTOFQUARTER()
            ENDOFQUARTER()
            Que devuelven una tabla con fechas (MÁS USADAS)
            DATEADD()
            DATESMTD()
            DATESQTD()
            DATESYTD()
            DATESINPERIOD()
            Que evalúan una expresión:
            TOTALMTD()
            TOTALYTD()
            OPENINGBALANCEMONTH()
            CLOSINGBALANCEQUARTER()
            Ojo, Cuidado con el grupo que devuelve una tabla y el que evalúa una expresión

            Combinando TIME INTELLIGENCE con CALCULATE()

            Patrones comunes con CALCULATE()

            Crear semi-additive measures
            https://www.datdata.com/products/certificacion-oficial-por-microsoft-de-power-bi/categories/3567095/posts/11910391
            Semi-additive measures son medidas que no pueden ser agregadas a través de todas las dimensiones FECHA/FECHA/HORA
            Por ejemplo, para el inventario de cada día y el inventario al final de mes no se puede hacer una suma del inventario de todos los días del mes, por tanto se utiliza una función semiaditiva como sigue:

            Inventario para cada día podría calcularse como : Inventario Total = SUM(Inventario[Inventario])
            Sin embargo, el inventario del mes se debe corresponder con el inventario del último día del mes:
            Inventario mensual =
            CALCULATE([Inventario Total], LASTDATE(Calendario[Fecha]))
            Si nos diera a en blanco el último día del mes (en caso de que la empresa no trabaje, por ejemplo), deberíamos cambiar la medida a la siguiente
            expresión, la cuál sería válida para mes, quarter y año
            Inventario mensual =
            CALCULATE([Inventario Total], LASTNONBLANK(Calendario[Fecha], [Inventario Total])

          Viendo 3 respuestas - de la 46 a la 48 (de un total de 48)
          • Debes estar registrado para responder a este debate.