Casos de uso y modelo de datos con DAX

1

¿Cuándo utilizar DAX en Power BI?

2

Modelo de datos del proyecto de ventas de vehículos

3

¿Cómo afecta la dirección de filtro en Power BI?

Quiz: Casos de uso y modelo de datos con DAX

Creación de tablas y columnas con DAX

4

Columna calculada

5

Tablas calculadas

Quiz: Creación de tablas y columnas con DAX

Medidas

6

¿Cuándo crear una medida con DAX?

7

¿Cuáles son las principales funciones de agregación de DAX?

8

Manipulación de texto con DAX

9

Funciones lógicas y condicionales: IF, AND, OR

10

Funciones lógicas y condicionales anidadas: IF, SWITCH

11

Funciones lógicas y condicionales: HASONEVALUE

12

Funciones lógicas y condicionales: SELECTEDVALUE

13

Filtrado de datos con FILTER y SEARCH

Quiz: Medidas

CALCULATE

14

Uso de CALCULATE en Power BI

15

CALCULATE con ALL y ALLEXCEPT

Quiz: CALCULATE

Manejo de Iteradores y contextos

16

Iteradores X: cálculos por fila

17

Clasificación y ordenamiento de datos con RANKX y TOP

18

Evaluación de contextos con CALCULATE

Quiz: Manejo de Iteradores y contextos

Funciones de inteligencia de tiempo

19

Análisis de fechas y tiempo con DAX

20

Análisis de crecimiento acumulado en el tiempo con DAX

Quiz: Funciones de inteligencia de tiempo

Optimización de modelos y escritura de código DAX

21

Uso de variables para optimizar fórmulas en DAX

22

Mejorar legibilidad de código con DAX Formatter

23

Evaluación de modelo de datos con DAX Studio

24

Mantenimiento de modelos de datos con Tabular Editor

25

¿Cómo escribir código DAX con ChatGPT?

26

AI Visuals para interpretar el modelo de datos

Integración de medidas en reporte de Power BI

27

Reporte con medidas de seguimiento comercial en Power BI

28

Integración de visualizaciones de productos de mayor venta y ganancia

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

18 Días
10 Hrs
16 Min
50 Seg

Evaluación de contextos con CALCULATE

18/28
Recursos

Aportes 40

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Ya entendí porque no me funcionaba la misma medida que se hizo para vendedor >30 mill, cuando trataba de invocar la medida total ventas ![](https://static.platzi.com/media/user_upload/image-012b0497-53a0-4033-93f3-07712c600620.jpg) y es porque la tabla Fac\_Ventas no tiene el campo de marca de vehiculos, mientras que si contiene el campo vendedor por eso si se intenta invocar esta medida no la reconoce y por eso hay que hacer el sum nuevamente ![](https://static.platzi.com/media/user_upload/image-1dcd3304-7973-4abc-9e7b-cf097e9b94a1.jpg)
Trate la de los compañeros pero no me dio, porque al final el total me seguía saliendo con 359,547,368.20, que no es el total de las marcas de >50MM, por lo cual procedí a hacer 2 cálculos adicionales, uno para un total que no se viera afectado por **marca\_vehículo** y otro para el contexto de las **Marcas>50M,** les comparto lo que me funció `Total de Ventas 2 = CALCULATE(SUM(Fact_Ventas[Precio Venta sin IGV]),ALLEXCEPT(dim_vehiculo,dim_vehiculo[marca_vehiculo]))` `Marcas>50M = CALCULATE([Total de Ventas 2],FILTER(dim_vehiculo,[Total de Ventas 2]>50000000))`

Mi solución:

Venta marca vehiculo mayor > 50000000 = CALCULATE([Total de ventas], FILTER(dim_vehiculo,  sum(Fact_Ventas[Precio Venta sin IGV]) > 50000000))

De algo me sirvió el curso de fundamentos de base de datos.

Brands_Over_50M = 
CALCULATE (
    [Total de Ventas],
    FILTER (
        VALUES(dim_vehiculo[marca_vehiculo]),
        CALCULATE (
            [Total de Ventas],
            ALL(dim_vehiculo),
            dim_vehiculo[marca_vehiculo] = EARLIER(dim_vehiculo[marca_vehiculo])
        ) > 50000000
    )
)
Una consulta, porque cuando se hace el calculo para TOYOTA y HONDA, el cuadro arroja los nombres TOYOTA y SUZUKI? Me refiero al ejemplo del minuto 3:07.


 

  • 1: ¿Suzuki? Acá debería llamar la atención que aparezca Suzuki cuando se acaba de hacer un IN con TOYOTA y HONDA, además de que aparecen dos modelos y no los 6 modelos.
     
  • 2: Es porque toma el campo “marca_vehiculo” de la tabla “Marca Top” en lugar de la tabla “dim_vehiculo” es la se acaba de referenciar en la fórmula.
Me paso lo mismo que el compañero Jefferson Osorio Lozano , me toco realizar 2 calculos donde tocaba sacar el total de ventas de la tabla dado que por los filtros no lo pude realizar de forma directa Paso 1 ![](https://static.platzi.com/media/user_upload/image-ad2ef721-76b1-4477-a7c9-743edab1b4c4.jpg) Paso 2 ![](https://static.platzi.com/media/user_upload/image-77133153-ea8a-4e3d-bb13-30fb9a3398bf.jpg)
Yo lo hice de esta manera: ```txt VentasVeh > 50000000 = CALCULATE([Total de Ventas], FILTER(GROUPBY(dim_vehiculo,dim_vehiculo[marca_vehiculo]) ,[Total de Ventas]>50000000)) ```Aunque no entiendo por qué el filter cuando se realiza con la medida Total de Ventas que sean mayores a 50M genera una tabla vacía, al parecer la agregación no cumple con el criterio y pienso que pueda ser que se sume por id vehículo y no por Marca, tal vez por eso no alcanza los 50M.![](https://static.platzi.com/media/user_upload/image-d6cce8c9-d163-43d8-a582-4274b7b03d32.jpg)![]()

Esta evaluacion de contextos va mas allá del uso de calculate, la idea es que tu puedas entender que filas, que datos son relevantes para tu caso, ademas, como una funcion puede relacionarse con los datos.
es una parte crucial en el analisis de los datos ya que te va a permitir responder preguntas claves de negocio.

En el caso de la medida del total de vetas de Honda y Toyota, para que se aplique el filtro en el contexto se debe utilizar la función filter: TOTAL DE VENTA HONDA - TOYOTA = CALCULATE(\[Total de Ventas], FILTER(dim\_vehiculo,dim\_vehiculo\[marca\_vehiculo] IN {"TOYOTA","HONDA"}))
Va de nuevo por que el editor me fallo les dejo mi formula, ![](https://static.platzi.com/media/user_upload/image-6f163b0c-4a3d-43c9-a67b-2be7e16b8162.jpg) Con esto evitaran que el total salga incorrecto. ![](https://static.platzi.com/media/user_upload/image-eb4660f8-0fee-45f1-8ee7-034bbd5f895c.jpg)
Yo por aqui nuevamente, me estoy dando cuenta que algo pasa con mi tabla dim\_vehiculo que no esta funcionando las medidas, se puede ver no trae ningun valor ![](https://static.platzi.com/media/user_upload/image-448c06ed-6aaf-45f5-bf14-42423e1ab0cb.jpg)
He aqui mi respuesta. Fue un poco confuzo, pero ya estamos aqui. ```js Ventas mayores a 50M = CALCULATE( [Total de venta], FILTER(dim_vehiculo, SUM(Fact_Ventas[Total de venta]) >50000000)) ```Ventas mayores a 50M = CALCULATE(    \[Total de venta],    FILTER(dim\_vehiculo,     SUM(Fact\_Ventas\[Total de venta]) >50000000)) ![](https://static.platzi.com/media/user_upload/Marcas%20mayores%20a%2050M-d7b3c986-500d-4da2-856e-0edfa1effbad.jpg)
Venta Marca >50M = CALCULATE(\[Total de Ventas],    FILTER(SUMMARIZE(Fact\_Ventas, dim\_vehiculo\[marca\_vehiculo],            "VentasPorMarca", \[Total de Ventas]        ),        \[VentasPorMarca] > 50000000    ))
![](https://static.platzi.com/media/user_upload/image-b92a9e0c-e0bf-4a50-b8c4-3c37e1609624.jpg)![](https://static.platzi.com/media/user_upload/image-3d38501d-5ea4-4c6f-8f8f-445da25ff79b.jpg)
![](https://static.platzi.com/media/user_upload/image-ec0083b0-8cd5-4706-baea-b1604d362d0a.jpg)
Me dio fue con esta formula marcveh>50m = CALCULATE(\[Total de ventas], filter(dim\_vehiculo, sum(Fact\_Ventas\[Precio Venta sin IGV]) >50000000))
Muchas gracias compañeros por sus valiosos aportes, con la ayuda de todos conseguí la respuesta al reto. ![](https://static.platzi.com/media/user_upload/image-3d61e9d5-47ce-4524-a60d-7f1f6c1ae952.jpg)
Me paso lo mismo que los demas compañeros, no me daba igual que con la opción de 30 Millones, tuve que solucionar haciendo: VENTA VEHICULO> 50 MILL = CALCULATE(\[Total Ventas],FILTER(dim\_vehiculo,SUM(Fact\_Ventas\[Precio Venta sin IGV])>50000000))
![](https://static.platzi.com/media/user_upload/image-e66c0582-4108-42f3-9700-80bc67601c76.jpg)
Mi respuesta VentaMarca>50 = CALCULATE(\[Total de Ventas],FILTER(dim\_vehiculo,SUM(Fact\_Ventas\[Precio Venta sin IGV]) > 50000000))
Hola, les dejo una formula, ```js Marcas Venta>50mill = CALCULATE ( [Total de Ventas], FILTER ( VALUES ( dim_vehiculo[marca_vehiculo] ), [Total de Ventas] > 50000000 ) ) ```Con esto evitaran que el total salga incorrecto. ![](https://static.platzi.com/media/user_upload/image-a28caaad-ed84-422a-af0e-379f7ae916c2.jpg) Saludos
![](https://static.platzi.com/media/user_upload/image-56909be9-341f-48c1-a9bd-938df260df3a.jpg) VENTA MARCA >50MILL = CALCULATE (    \[Total de ventas],    FILTER (        VALUES(dim\_vehiculo\[marca\_vehiculo]),        CALCULATE (            \[TOTAL DE VENTA MODELO],            ALL(dim\_vehiculo),            dim\_vehiculo\[marca\_vehiculo] = EARLIER(dim\_vehiculo\[marca\_vehiculo])        ) > 50000000    ))
se puede hacer lo mismo como en excel de tomar en referencia absoluta en un campo determinado si colocar un valor en especifico por ejemplo Ventas = IF(VALOR TOTAL >= $B$4,"MAXIMO","MINIMO") es probable hacerse de la misma manera en POWER BI
Les dejo mi aporte al caso final que dejó como reto: ```js VentaMarca>50000000 =     CALCULATE([Total de Ventas],        filter(VALUES(dim_vehiculo[marca_vehiculo]),            [Total de Ventas] > 50000000)) ```
Caí en la inocencia y realicé tal cual como explicaba en el video, al ver los comentarios, tenia otras maneras de hacer la medida DAX

Creo que en el minuto 3:04 elige la marca-vehiculo pero de Marca Top por eso solo le aparecen dos resultados y uno de ellos es “Suzuki”. En el primer ejercicio elijió marca-vehiculo pero de la dim_vehiculo.

![](https://static.platzi.com/media/user_upload/image-23af52cf-b923-48cf-b677-e9bdbf7611ad.jpg)
![](https://static.platzi.com/media/user_upload/Screenshot%202023-12-26%20222254-38c53d4d-6762-4e2f-ae7d-69c0c298505d.jpg)
Solucion mas simple con SUMX & CALCULATE. ![](https://static.platzi.com/media/user_upload/Result-cd55757e-da27-426e-8fa8-4d294ebbb3a1.jpg)![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202023-12-09%20153851-35a044a9-fcc2-48d1-9069-a9a6f4a90fa6.jpg)![](https://static.platzi.com/media/user_upload/SUMX-c1e4ed0f-4aac-45fd-ab3c-1d9c40256a19.jpg)
Aqui hay una solucion alternativa para el Umbral de Ventas con SUMX y sin usar FILTER. \[Umbral Bono] = 30.000.000 ```js SUMX Bono sin Filter = SUMX( // Especifica el contexto como la tabla "Vendedores" Vendedores, // Solo suma la fila, si su [Total de Ventas] es mayor al [Umbral Bono] (30.000.000), de lo contrario retorna 0 IF( [Total de Ventas] > [Umbral Bono], [Total de Ventas], 0 ) ) ```Y aca una con FILTER para filtrar la tabla al final ```js SUMX Bono = SUMX( // Filtra la tabla vendedores por las filas (vendedores) con [Total de Ventas] mayores al [Umbral Bono] FILTER( Vendedores, [Total de Ventas] > [Umbral Bono] ), // Hace la sumatoria final por el [Total de Ventas] [Total de Ventas] ) ```Espero les sirva para internalizar mejor el concepto de Contexto en Power BI
Si se pregunta por que salio SUSUKI en lugar de HONDA en el minuto 3:06, es porque el profe arrastro "marca\_vehiculo" desde la tabla "Marca TOP" y no desde "dim\_vehiculo". Recuerden que Marca TOP es una tabla filtrada a partir de "dim\_vehiculo" que solo contiene las TOP 2 marcas con mayores ventas, siendo SUSUKI y TOYOTA. Que la tabla se filtre no tiene nada que ver con el contexto declarado en CALCULATE()

Encontre otra manera de hacerlo más rápido leyendo un poco de documentación. Aín así surge a raiz del otro post que realicé.

Venta Marca 50M MIX = IF( CALCULATE([Total de Ventas],
ALLEXCEPT(dim_vehiculo,dim_vehiculo[marca_vehiculo]))>50000000,
VALUE([Total de Ventas]))

La lógica es, si encuentras que al evaluar las ventas, hay marcas que sean mayores a los 50M, muéstrame el valor de dicha venta.

Aún así, sigo sin entender por qué

VentaMarca>50M = 
CALCULATE([Total de Ventas],
FILTER(dim_vehiculo,[Total de Ventas]>50000000))

//Si es idéntico a:

VentaVendedor>30M = 
CALCULATE([Total de Ventas],
FILTER(Dim_Vendedor,[Total de Ventas]>30000000))

No funciona. Dejo foto:

Bueno, después de muchos intentos y con el conocimiento brindado hasta el momento, creo que llegarás a lo siguiente:

  1. Crear una medida que filtre solo las ventas relacionadas a la marca
  2. Crear una medida que filtre a las ventas que sean mayores a 50m.

Entonces para ello hacemos lo siguiente:

Creamos la medida:

Venta MARCA = 
CALCULATE([Total de Ventas],
ALLEXCEPT(dim_vehiculo,dim_vehiculo[marca_vehiculo]))

Por qué? Porque queremos efectivamente mostrar las ventas en todas las marcas y si, el resultado es identico a poner solo las ventas totales, sin embargo, nuestro objetivo es crear una medida con ese filtro ya establecido.

Con la medida anterior, vamos a crear la medida >50M ahora sí.

VentaMARCA>50MM = 
CALCULATE([Venta MARCA],
FILTER(dim_vehiculo,[Venta MARCA]>50000000))

Ahora colócalo en la tabla. Espero poder haberte ayudado.

Lo que sí, es que me vinieron más interrogantes. Sería bueno que el profesor responda y nos explique por qué no funciona lo siguiente:

VentaMarca>50M = 
CALCULATE([Total de Ventas],
FILTER(dim_vehiculo,[Total de Ventas]>50000000))

//Si es idéntico a:

VentaVendedor>30M = 
CALCULATE([Total de Ventas],
FILTER(Dim_Vendedor,[Total de Ventas]>30000000))

Colocaré imagen sobre como se comportan las medidas:

wow a mi algo que me funciono de pura chiripa fue:

MARCA MAS DE 50 MILLONES = CALCULATE([Total de ventas],FILTER(SELECTCOLUMNS(dim_vehiculo,"TOYOTA",dim_vehiculo[marca_vehiculo]),[Total de ventas] > 50000000))

Alguien me puede explicar la razón por la cual al usar la medida de Total de ventas en filter, no se obtiene el resultado si la suma de ventas sin IGV corresponde al Total de las ventas, es decir:

Total de ventas = sum(Fact_Ventas[Precio Venta sin IGV])

No se obtiene el resultado y manda error:
VentaMarca>50M = CALCULATE([Total de ventas],filter(dim_vehiculo,[Total de ventas])> 50000000)

Al sustituir la medida de Total de ventas por la suma de las ventas sin IGV se obtiene el resultado
VentaMarca>50M = CALCULATE([Total de ventas],filter(dim_vehiculo,sum(Fact_Ventas[Precio Venta sin IGV])> 50000000))

Aprende Cómo Utilizar la Función CALCULATE en Power BI

https://www.youtube.com/watch?v=kYF-Fhv6LRk
No tiene desperdicio.

Hola Renzo buenos diasa, podrias apoyarme por favor, aun cuando tengo la misma estructura de la medida Total de Venta HONDA-TOYOTA al visualizarla en al tabla me aparecen todas als marcas con el total igual ![](https://static.platzi.com/media/user_upload/image-29e83959-03b6-47bb-84ca-fce33ab024c1.jpg)
He aqui mi respuesta. Fue un poco confuzo, pero ya estamos aqui. ```js Ventas mayores a 50M = CALCULATE( [Total de venta], FILTER(dim_vehiculo, SUM(Fact_Ventas[Total de venta]) >50000000)) ```![](C:\Users\Germa\OneDrive\Documentos\1_My_Documents\1_School_notes\001_Platzi\024_Análisis_y_Modelado_con_DAX_y_PowerBI)![](https://static.platzi.com/media/user_upload/Marcas%20mayores%20a%2050M-d929b947-aa17-4dfd-8528-f940a241d0eb.jpg)