Vamos a explorar el fascinante mundo de las tablas calculadas en Power BI, una herramienta indispensable para los analistas de datos. Estas permiten crear dimensiones personalizadas a partir de las existentes en el modelo, como es el caso de una tabla calendario. Aprender a manejar estas funcionalidades amplía nuestras capacidades analíticas y optimiza la forma en que filtramos y representamos la información.
¿Cómo crear una tabla calendario en Power BI?
Crear una tabla calendario es crucial para trabajar con datos relacionados con el tiempo. Aun cuando tu dataset puede incluir una tabla de fechas, aprender a construirla desde cero es esencial para una comprensión más profunda y personalización.
Eliminar la tabla calendario existente: Si tu dataset ya contiene una tabla de calendario, elimínala (clic derecho, eliminar) para evitar duplicidades.
Ver Datos y Crear Nueva Tabla: Ve a la vista de "Datos" y selecciona "Herramientas de tabla" para crear una nueva tabla. Esta será nuestra tabla calendario. Utiliza la función CALENDAR para definir un rango de fechas específico:
Formato de Fecha: Ajusta la columna de fechas al formato adecuado, es decir, solo fecha (sin hora).
¿Cómo establecer columnas calculadas?
Una vez que tenemos nuestra tabla de fechas, es momento de añadir columnas calculadas que nos permitan realizar análisis más detallados.
Añadir columnas descriptivas: Inicia agregando columnas como año, mes y semana. Esto se consigue mediante las funciones YEAR, FORMAT, y WEEKNUM de DAX:
Año = YEAR(DimFechas[Date])
Mes = FORMAT(DimFechas[Date], "mmmm")
Semana = WEEKNUM(DimFechas[Date])
Crear un campo llave (DayKey): Este es esencial para conectar nuestra tabla de fechas con otras tablas de hechos. Usa valores concatenados de año, mes y día:
¿Cómo ordenamos las visualizaciones correctamente?
Para asegurar que nuestras visualizaciones muestren los meses en un orden secuencial, debemos ordenar las columnas usando una referencia numérica.
Ordenar por número de mes: Selecciona la columna 'Mes' y utiliza "Herramientas de columna" para ordenar por 'NúmeroMes'. Esto garantizará que los meses se muestren en el orden correcto tanto en los gráficos como en los informes.
¿Cuándo usar tablas calculadas?
Las tablas calculadas son indispensables para crear dimensiones adicionales que mejoren el análisis de tus datos, como las tablas de calendario que habilitan el uso del Time Intelligence en Power BI. Este enfoque es vital para:
Evitar vacíos temporales: Asegura que todos los períodos estén representados, lo cual es fundamental para análisis comparativos.
Potencializar el análisis de datos: Al añadir columnas descriptivas, puedes realizar cortes más detallados y específicos que ayudan a obtener insights valiosos.
Finalmente, como desafío para afianzar este conocimiento, intenta añadir una columna que identifique el día de la semana, mostrando resultados de "Lunes" a "Domingo". Esta práctica enriquecerá aún más tus capacidades analíticas en Power BI. Sigue explorando y desarrollando tus habilidades para alcanzar nuevas cumbres en el análisis de datos.
En caso que aparezcan los dias o los meses en Ingles, podemos añadirle un argumento a la instruccion FORMAT() , donde "es-ES" sera para que el resultado sea en español.
Esta forma es más sencilla que la que conocía yo de otro curso.
Día de semana texto = SWITCH(Calendario[Día de semana #], 1, "Domingo", 2, "Lunes", 3, "Martes", 4, "Miércoles", 5, "Jueves", 6, "Viernes", 7, "Sábado")
Una diferencia es que con la forma de Anderson, empieza por default en domingo. La segunda te permite controlar mejor qué número coincide con qué día de la semana.
Nos recupera el numero del dia de la semana y el valor 1 significa que queremos que empiece de domingo a sabado nuestra numeracion.
Para dar formato a nombre del día
Gracias por el dato
Otra forma de crear las columnas de año y mes es llamando la columna "date" y seleccionando alguna de las opciones que salen posterior al punto (como el .[Año] .[Mes])
Yo use esta opción y me salio ordenado de una! No tuve que aplicar el "orden por mes"
Clase 5.
Tablas Calculadas.
En Power BI:
• Vamos a la sección vista de datos.
• Seleccionamos la tabla con la información que requiramos.
• Buscamos en la barra superior “Herramientas de Tablas.”
• Damos click en la opción “Nueva Tabla”.
Función CALENDARAUTO ()
Es una agregación de DAX, que permite generar una columna de fecha a partir de la fecha mínima y máxima que encuentre dentro de nuestro modelo de datos.
Ejemplo:
DIM_FECHAS = CALENDARAUTO (“01/01/2015”, “31/12/2017”)
ORDENAR DATOS DE COLUMNAS.
• Seleccionamos la columna dentro de la tabla.
• Vamos a “ORDENAR COLUMNA”
• Seleccionamos el orden que queremos darle.
¿Cuánto utilizar una tabla calculada?
• Usualmente para crear una tabla calendario.
• Como artificio para generar una tabla adicional de datos.
Tabla de tiempo.
• Requisito para generar TIME INTELLIGENCE.
• Evita vacíos de información a nivel de tiempo.
• Ventajas de mayor análisis.
Sería interesante tener un curso de Power Query con lenguaje M
lo mismo pido :D
Tabla Calendario Completa = ADDCOLUMNS(
CALENDARAUTO(),
"Año", YEAR([Date]),
"Mes_Num", MONTH([Date]),
"Mes",
VAR x = FORMAT([Date],"Mmmm")
VAR y =UPPER( LEFT(x,1))
VAR z = MID(x,2,LEN(x))
RETURN
y & z,
"Trimestre", "Q"& QUARTER([Date]),
"Semestre",IF(MONTH([Date])<=6,"Sem 1","Sem 2"),
"Semana", WEEKNUM([Date],2),
"Dia mes",DAY([Date]),
"Dia Semana",WEEKDAY([Date],2),
"Nombre Día",FORMAT([Date],"Dddd"))
```Tabla Calendario Completa = ADDCOLUMNS(
  CALENDARAUTO(),
  "Año", YEAR(\[Date]),
  "Mes\_Num", MONTH(\[Date]),
  "Mes",
  VAR x = FORMAT(\[Date],"Mmmm")
  VAR y =UPPER( LEFT(x,1))
  VAR z = MID(x,2,LEN(x))
  RETURN
  y & z,
  "Trimestre", "Q"& QUARTER(\[Date]),
  "Semestre",IF(MONTH(\[Date])<=6,"Sem 1","Sem 2"),
  "Semana", WEEKNUM(\[Date],2),
  "Dia mes",DAY(\[Date]),
  "Dia Semana",WEEKDAY(\[Date],2),
  "Nombre Día",FORMAT(\[Date],"Dddd"))
// Les dejo una tabla calendario en dax
Para hacerlo mas dinamico al tener la fecha con formato numero cree en la Fact_Ventas la columna fecha con la formula
Muchas gracias por esta buena idea, Juan! Para mí es vital no solo llegar a un resultado con los datos disponibles del momento sino pensarlo de cara al futuro, procurando la menor cantidad de tiempo y riesgo de error al tener que revisar manualmente las tablas a ver qué rango de fechas debo actualizar.
Noté que a la fórmula de formato que propones le faltó el segundo argumento, yo lo planteé así:
Fecha = format(date(int(Fact_Ventas[datekey]/10000),MOD((Fact_Ventas[datekey]/100),100), mod(Fact_Ventas[datekey],100)), "dd/mm/yyyy")
Recordemos que la idea de las tablas dim es "filtrar" la información de tu tabla fact, por lo cual tu tabla dim_fechas debe estar preparada para las fechas que tu tabla fact tendra.
La idea es buena para garantizar que no tengas huecos, pero no es lo mismo el procesamiento de 1096 filas (numeros de registros ocupados por renzo) que de millones de datos en una tabla fact, por lo cual el buscar el maximo y minimo en millones de registros te va a generar mucho procesamiento cada que este buscando estos datos.
Calculando si es fin de semana o entre semana
Agregue la columna con numero de dia y nombre de dia de la semana
Recuerden que deben agregar el 2 al final de la variable para que traiga los días de la semana, empezando el lunes como día 1. Por ejemplo:
Lunes = 1,
Martes = 2,
Miércoles = 3.
Day number =WEEKDAY(Dim_Fechas[Date],2)
Muchas gracias
Hola!!!
Día de la semana = FORMAT(dim_fechas[Date],"dddd")
Cálculo día de la semana en texto usando fórmula DAX:
Dia_Semana = FORMAT([Date],"dddd")
DateKey seria como un tipo de registro único, parecido a un ID?
Hola George, así es, es como un ID de la fecha
Tengo un problema con mi proyecto que no se como asociarlo a la tabla de fechas debido a que mis ventas son de servicios y estas se ejecutan en un periodo de tiempo no en un dia en especifico, por lo que no tengo un dataKey para cada ID, alguien tiene alguna idea que me pueda compartir de como manejar esto por favor
Hola Juan, entiendo lo del datekey, es como el ejemplo del curso, finalmente tiene que traducir la llave a una fecha tangible mediante una dimensión de tiempo, es la única opción y siempre se maneja así en proyectos de BI