Cómo crear un mapa de calor por hora en Power BI: paso a paso
Este tutorial muestra cómo crear un mapa de calor por hora en Power BI para identificar patrones de actividad a lo largo de los días y las horas. Un mapa de calor es útil para destacar picos, periodos inactivos y verificar estacionalidad diaria de forma visual e inmediata.
Requisitos previos
- Power BI Desktop instalado
- Una fuente de datos con timestamp (ej.: registros de eventos con columna DateTime)
- Noiones básicas de Power Query y DAX
Paso 1: Preparar los datos en Power Query
Importa tu tabla con la columna DateTime a Power Query. El objetivo es extraer el día de la semana y la hora para construir las dimensiones del mapa de calor.
// No Power Query (Editor Avançado) um exemplo mínimo para adicionar colunas
let
Fonte = Csv.Document(File.Contents("caminho\meus_dados.csv"),[Delimiter=",", Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None]),
Promoted = Table.PromoteHeaders(Fonte, [PromoteAllScalars=true]),
ChangedType = Table.TransformColumnTypes(Promoted,{{"DateTime","datetime"}}),
Hora = Table.AddColumn(ChangedType, "Hour", each Date.Hour([DateTime]), Int64.Type),
DiaSemana = Table.AddColumn(Hora, "Weekday", each Date.DayOfWeekName(Date.From([DateTime]), "pt-PT"))
in
DiaSemana
Explicación: creamos las columnas Hour (0–23) y Weekday (lunes, martes, ...). También podrás normalizar nombres o crear un orden numérico para los días si quieres ordenar después en el visual.
Paso 2: Crear tabla de días ordenada
Para garantizar el orden correcto de los días en el eje del mapa (lunes a domingo), crea una pequeña tabla en DAX con orden implícito.
WeekdayOrder =
DATATABLE(
"Weekday", STRING,
"Order", INTEGER,
{
{"segunda-feira",1}, {"terça-feira",2}, {"quarta-feira",3},
{"quinta-feira",4}, {"sexta-feira",5}, {"sábado",6}, {"domingo",7}
}
)
Después relaciona WeekdayOrder[Weekday] con la columna Weekday de la tabla de eventos. Define WeekdayOrder[Order] como columna de ordenación para WeekdayOrder[Weekday]. Esto evita la ordenación alfabética.
Paso 3: Crear medidas de recuento y normalización
Crea medidas DAX para contar eventos por combinación de día y hora. Una medida simple y otra normalizada (porcentaje) ayudan en la visualización.
ContagemEventos = COUNTROWS('Eventos')
EventosPorCelula =
CALCULATE(
[ContagemEventos],
ALLEXCEPT('Eventos', 'Eventos'[Weekday], 'Eventos'[Hour])
)
EventosPercentual =
DIVIDE(
[EventosPorCelula],
CALCULATE([ContagemEventos], ALL('Eventos'[Hour])),
0
)
Explicación: EventosPorCelula agrega por Weekday+Hour; EventosPercentual normaliza por el total (opcional para colores relativos).
Paso 4: Elegir el visual y construir la matriz
Para un mapa de calor simple puedes usar la visualización Matrix nativa con formato condicional. Otra opción es un visual de terceros tipo "Heatmap" en AppSource. Aquí usamos la Matrix:
- Inserta una Matrix en el informe.
- Rows: WeekdayOrder[Weekday] (ya ordenada).
- Columns: Eventos[Hour].
- Values: EventosPorCelula (o EventosPercentual).
A continuación aplica formato condicional: en Values elige Background color scales y define la escala de color (ej.: azul claro -> rojo oscuro). Selecciona mínimo, medio y máximo o cuantiles para destacar valores medios y extremos.
Paso 5: Ajustes visuales e interacciones
Mejora la lectura con estos pequeños cambios:
- Mostrar encabezados de columnas rotados para ahorrar espacio (Column headers > Word wrap).
- Definir formato de número sin decimales para recuentos.
- Añadir un slicer de fecha para filtrar por periodo (mes/rango).
- Configurar Tooltip para mostrar total del día y media por hora usando medidas adicionales.
Verificar el resultado
Valida el mapa de calor comprobando: 1) El orden de los días es correcto (lunes→domingo); 2) Las horas aparecen de 0 a 23; 3) Los colores siguen la lógica de tus medidas (picos visibles). Prueba filtros de fecha para ver si los patrones cambian como se espera y compara algunos totales con una tabla sencilla para confirmar los recuentos.
Conclusión
Has pasado de registros temporales brutos a un mapa de calor por hora en Power BI, útil para descubrir picos y comportamientos horarios. Próximos pasos: experimentar con distintas normalizaciones (por día o por hora), usar un visual de Heatmap de AppSource para diseños más ricos, o combinar con R/Python para smoothing. Consejo: si ves valores inesperados, confirma siempre zonas horarias y conversiones de DateTime.