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

You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

1 Días
20 Hrs
6 Min
58 Seg

Funciones lógicas y condicionales anidadas: IF, SWITCH

10/28
Resources

How do nested conditionals work in Power BI?

Nested conditionals in Power BI are a very powerful tool for categorizing and segmenting data efficiently. Although they may seem complicated at first, with practice it is easy to master them. How can we use them to create a new category? Here a common case comes into play: classifying vehicle models by price. Let's explore how this is done with practical exercises so that you can apply it in your projects.

What are the steps to create a nested conditional?

To begin with, we need to generate a table with specific data of interest. Let's imagine that we are working with a table "Photo Vehicle", which contains fields such as "Model" and "Price". We want to create in it a column called "Model Classification" that classifies vehicles according to price. The classification logic can be as follows:

  • Economic Model: if the price is less than or equal to 2,500.
  • Medium Price Model: if the price is less than or equal to 38,000.
  • High Price Model: if the price is less than or equal to 45,000.
  • VIP Model: for prices above 45,000.

In DAX, this logic is implemented through a nested IF, which allows multiple conditions to be evaluated in a hierarchical manner. The structure would look something like this:

Classification Model =IF([Price] <= 2500, "Economic Model", IF([Price] <= 38000, "Medium Price Model", IF([Price] <= 45000, "High Price Model", "VIP Model") )) )

How to simplify nested conditionals with SWITCH?

Nested conditionals can become cumbersome if you increase the conditions. This is where the use of SWITCH in DAX is invaluable. SWITCH allows us to handle multiple scenarios in a clearer and more organized way. For example, we can use SWITCH to calculate the quarter on a monthly basis:

  1. We generate a table with "Year" and "Month" fields from a date dimension.
  2. We create a "Quarter" column using SWITCH, evaluating the month to determine which quarter it belongs to.

The basic structure using SWITCH would be as follows:

Quarter =SWITCH(TRUE(), [ Month] = 1 || [Month] = 2 || [Month] = 3, "Quarter 1", [ Month] = 4 || [Month] = 4 || [Month] = 5 || [Month] = 6, "Quarter 2", [ Month] = 7 || [Month] = 8 || [Month] = 9, "Quarter 3", [ Month] = 10 || [Month] = 11 || [Month] = 12, "Quarter 4")

What are the advantages of SWITCH over nested if?

SWITCH not only simplifies code writing, but also makes the applied logic more readable. This is especially useful in complex scenarios where many conditions are evaluated. The readability and maintainability of the code increases significantly, which is crucial for long-term projects and team collaborations.

Using nested conditionals and learning to simplify them with SWITCH can transform how you categorize data in Power BI. Master these tools and see how they streamline your workflows and improve data interpretation. Don't stop here, keep practicing and exploring more DAX features to become a Power BI expert!

Contributions 22

Questions 3

Sort by:

Want to see more contributions, questions and answers from the community?

Siempre supe que el curso de programación Basica me sería útil algún día 😁. Al principio, Power BI me intimidaba, pero con cada clase, me fascina más y más.

Model_Classification using Switch = 
SWITCH (
    TRUE(),
    Fotos_Vehiculos[Precio] <= 2500, "Economic Model 💰",
    Fotos_Vehiculos[Precio] <= 38000, "Medium Model 🚗",
    Fotos_Vehiculos[Precio] <= 45000, "Premium Model 🏎️",
    "VIP Model 💎" 
)

Yo lo hice acompañado de un true para simplificarlo un poco.

Hola, acabao de ver que hay un error en la fórmula de los if anidados, ya que hay modelos de menos de 25.000 que aparecen como "Modelo de Precio Medio" ![](https://static.platzi.com/media/user_upload/image-c5698491-07eb-4fee-8028-a708f7217b46.jpg) La forma correcta sería de la siguiente manera. ![](https://static.platzi.com/media/user_upload/image-f92751dc-061c-448e-9141-07e33b105fee.jpg) Un saludo.
Quería compartir con ustedes una herramienta que considero muy útil. Esta herramienta puede ayudarnos a limpiar y mejorar la estructura de nuestro código en DAX. Aunque no corrige errores automáticamente, sí nos permite optimizar la escritura de nuestro código. ¡Espero que les sea de ayuda <https://www.daxformatter.com/>
DAX ya tiene una fórmula para el Quarter o Trimestre. ```txt Trimestre = "Trimestre" & QUARTER(your_table[Date]) ```

Para los que sean flojos como yo y no les guste escribir código, esta función les va a caer bien

trimestre_2 = 
"Q" & CEILING((MOD(Dim_Fechas[Month number] - 1, 12) + 1) / 3, 1)

Paso 1: Ajustar el número del mes

(MOD(Dim_Fechas[Month number] - 1, 12) + 1) 
  • Ajusta el número del mes para ciclar correctamente.

  • Restamos 1 antes de aplicar la función MOD, y luego sumamos 1 de nuevo, asegurando que enero sea el mes 1, febrero el mes 2, y así sucesivamente hasta diciembre como el mes 12.

Paso 2: Agrupar los meses en trimestres

((MOD(Dim_Fechas[Month number] - 1, 12) + 1) / 3)
  • Divide el número del mes ajustado entre 3, agrupando los meses en trimestres.

Paso 3: Redondear el resultado

CEILING((MOD(Dim_Fechas[Month number] - 1, 12) + 1) / 3, 1)
  • Redondea el resultado al número entero más cercano, asegurando que cada mes se asigna al trimestre correcto.

Paso 4: Construir la cadena del trimestre

"Q" & CEILING((MOD(Dim_Fechas[Month number] - 1, 12) + 1) / 3, 1)
  • Construye la cadena del trimestre, como “Q1”, “Q2”, etc., para cada mes.

Resumen de la clase
IF ANIDADAS

Clasificación modelo =
IF(Fotos_Vehiculos[Precio] <= 2500, “Modelo Económico”,
IF(Fotos_Vehiculos[Precio] <= 38000, “Modelo de Precio Medio”,
IF(Fotos_Vehiculos[Precio] <= 45000, “Modelo de Precio Alto”, “Modelo VIP”
)))

SWITCH

Trimestre = SWITCH(‘Dim fecha’[Mes],
1, “Trimestre 1”,
2, “Trimestre 1”,
3, “Trimestre 1”,
4, “Trimestre 2”,
5, “Trimestre 2”,
6, “Trimestre 2”,
7, “Trimestre 3”,
8, “Trimestre 3”,
9, “Trimestre 3”,
10, “Trimestre 4”,
11, “Trimestre 4”,
12, “Trimestre 4”)

Mejorar tu código de trimestre dax: Trimestre = SWITCH(    TRUE(),    Dim\_fechas\[Numero de mes] IN {1, 2, 3}, "Trimestre1",    Dim\_fechas\[Numero de mes] IN {4, 5, 6}, "Trimestre2",    Dim\_fechas\[Numero de mes] IN {7, 8, 9}, "Trimestre3",    Dim\_fechas\[Numero de mes] IN {10, 11, 12}, "Trimestre4"  )
Estas clases de power BI en realidad se basan en la logica que se aprendio de programacion basica de platzi. Aui dejo como hice micodigo de trimestre. Por si interesa. ![](https://static.platzi.com/media/user_upload/RETO-1bcfcfac-661b-4304-9f6a-ddfb52676e5b.jpg)
```js Trimestre = SWITCH( QUARTER(Dim_Fechas[Date]), 1, "Primer Trimestre", 2, "Segundo Trimestre", 3, "Tercer Trimestre", 4, "Cuarto Trimestre" ) ```Trimestre = SWITCH( QUARTER(Dim\_Fechas\[Date]), 1, "Primer Trimestre", 2, "Segundo Trimestre", 3, "Tercer Trimestre", 4, "Cuarto Trimestre" )
Las funciones lógicas en DAX, como IF y SWITCH, son fundamentales para crear medidas y columnas calculadas en Power BI. IF permite evaluar condiciones y devolver un valor si la condición es verdadera y otro si es falsa. Por ejemplo, `IF(Precio <= 2500, "Modelo Económico", "Otro Modelo")`. Por otro lado, SWITCH es útil para evaluar múltiples condiciones de manera más clara y concisa. En lugar de anidar varias condiciones IF, puedes usar SWITCH para simplificar el código. Por ejemplo, `SWITCH(TRUE(), Precio <= 2500, "Modelo Económico", Precio <= 38000, "Modelo de Precio Medio", "Modelo VIP")`. Ambas funciones son esenciales para clasificar datos y crear análisis más profundos en tus reportes.
Hola! Me pueden indicar que función cumple el "TRUE" el la formula SWITCH Gracias
Para calcular el trimestre. Trimestre = (    IF(Dim\_Fechas\[Numero Mes] >=1 && Dim\_Fechas\[Numero Mes]<= 3, "Trimestre 1",    IF(Dim\_Fechas\[Numero Mes] >=4 && Dim\_Fechas\[Numero Mes]<= 6, "Trimestre 2",    IF(Dim\_Fechas\[Numero Mes] >=7 && Dim\_Fechas\[Numero Mes]<= 9, "Trimestre 3",    "Trimestre 4"))))
Este es un SWITCH que determina el tipo de carro basado en su rango de precio: Clasificacion 2 = SWITCH( TRUE(), Fotos\_Vehiculos\[Precio] <= 20000, "GOOD", Fotos\_Vehiculos\[Precio] > 20000 && Fotos\_Vehiculos\[Precio] <= 30000, "MORE FEATURES",Fotos\_Vehiculos\[Precio] > 30000 && Fotos\_Vehiculos\[Precio] <= 45000, "VIP",Fotos\_Vehiculos\[Precio] > 30000 && Fotos\_Vehiculos\[Precio] > 45000, "LUXURY") Espero ayude.

Genial…!

```js // Un poco mas personalizada la formula, evitando valores null Clas_Mod = VAR condicional = IF( Fotos_Vehiculos[Precio] <= 25000,"Modelo Economico", IF( Fotos_Vehiculos[Precio] <= 38000 && Fotos_Vehiculos[Precio] > 2500 ,"Modelo de Precio Medio", IF( Fotos_Vehiculos[Precio] > 38000 ,"Modelo de Precio Alto") ) ) RETURN UPPER(condicional) ```Clas\_Mod =     VAR condicional = IF( Fotos\_Vehiculos\[Precio] <= 25000,"Modelo Economico",        IF( Fotos\_Vehiculos\[Precio] <= 38000 && Fotos\_Vehiculos\[Precio] > 2500 ,"Modelo de Precio Medio",                 IF( Fotos\_Vehiculos\[Precio] > 38000 ,"Modelo de Precio Alto")         )        )RETURN UPPER(condicional)
Tritmestre = SWITCH(Dim\_fechas\[Numero Mes], 1, "Trismestre 1", 2, "Trismestre 1", 3, "Trismestre 1", 4, "Trismestre 2", 5, "Trismestre 2", 6, "Trismestre 2",   7, "Trismestre 3", 8, "Trismestre 3", 9, "Trismestre 3", 10, "Trismestre 4", 11, "Trismestre 4", 12, "Trismestre 4")

Trimestre = SWITCH(Dim_Fechas[Numero Mes],
1, “Trimestre 1”,
2, “Trimestre 1”,
3, “Trimestre 1”,
4, “Trimestre 2”,
5, “Trimestre 2”,
6, “Trimestre 2”,
7, “Trimestre 3”,
8, “Trimestre 3”,
9, “Trimestre 3”,
10, “Trimestre 4”,
11, “Trimestre 4”,
12, “Trimestre 4”)

IF:Comprueba una condición y devuelve un valor cuando es “true”; en caso contrario, devuelve un segundo valor.

Sintaxis IF(<logical_test>, <value_if_true>[, <value_if_false>])

SWITCH:Evalúa una expresión en una lista de valores y devuelve una de varias expresiones de resultado posibles. Esta función se puede usar para evitar tener varias instrucciones IF anidadas.

Sintaxis:SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])

Tutoria de SWITCH
SWITCH

  • Funciones logicas y condicionales anidadas: IF, SWITCH

    • IF
      Clasificacion Modelo =
      IF(Fotos_Vehiculos[Precio] <= 25000 , “Modelo Económico”,
      IF(Fotos_Vehiculos[Precio]<=38000, “Modelo de Precio Medio”,
      IF(Fotos_Vehiculos[Precio]<= 45000, “Modelo de Precio Alto”,“Modelo VIP”)))

    • SWITCH
      Trimestre = SWITCH(Dim_Fechas[Numero Mes],
      1, “Trimestre 1”,
      2, “Trimestre 1”,
      3, “Trimestre 1”,
      4, “Trimestre 2”,
      5, “Trimestre 2”,
      6, “Trimestre 2”,
      7, “Trimestre 3”,
      8, “Trimestre 3”,
      9, “Trimestre 3”,
      10, “Trimestre 4”,
      11, “Trimestre 4”,
      12, “Trimestre 4”)