Informes con Power BI¶
Ejercicio power-bi-reports-annex.pdf · PDF
Te presentas a tu primer trabajo. La entrevista va bien, y entonces llega la frase: "Por cierto, aquí usamos Power BI." Llevas cinco meses con Superset. ¿Empiezas de cero?
No. Sabes para qué sirve un cuadro de mando (dashboard), qué es un KPI, qué hace un filtro y qué gráfico responde a qué pregunta. Ese conocimiento es tuyo, no de Superset. Esta lección comprueba que sobrevive a un cambio de herramienta: vas a reconstruir tres gráficos de tu cuadro de mando Steam market en Power BI y a demostrar, con SQL, que muestran los mismos números.
Qué aprenderás
- Nombrar la palabra de Power BI para cada palabra de Superset que ya usas
- Orientarte en Power BI Desktop: el lienzo del informe (report canvas), el panel Visualizations y el panel Data
- Construir una tarjeta (card), un gráfico de columnas y un gráfico de barras arrastrando campos a pocillos de campo (field wells)
- Añadir un slicer y explicar qué hace a los demás elementos visuales de la página
- Describir qué hace Publish, y qué tipo de cuenta y de licencia necesita
- Desactivar dos trampas: la tarjeta que dice 27K y el "dashboard" de Power BI que no es lo que crees
Ya conociste la parte de datos de Power BI en Obtener datos con Power BI y Power Query; hoy toca la parte que la gente realmente mira.
El mismo juego, otra consola¶
Imagina que tu juego favorito sale en otra consola. Las reglas son las mismas. El mapa es el mismo. Tu estrategia sigue funcionando. Solo los botones tienen otros nombres. No necesitas un manual nuevo: necesitas la tabla de equivalencias de botones.
Power BI es la herramienta de Microsoft para convertir datos en informes interactivos. Tiene dos mitades: Power BI Desktop, una aplicación gratuita para Windows donde construyes, y el servicio de Power BI (Power BI service), un sitio web donde publicas y compartes.
Aquí tienes la tabla de botones. Ten la abierta durante toda la lección:
| En Superset | En Power BI | Cuidado |
|---|---|---|
| Dashboard | Informe (Report, de una o más páginas) | Un "dashboard" de Power BI es otra cosa: mira la última sección |
| Chart | Visual | Lo eliges en el panel Visualizations |
| Big Number | Card | Muestra 27K por defecto en lugar de 26,685 |
| Dataset (columnas, métricas) | Modelo semántico (semantic model), listado en el panel Data | Las versiones antiguas llaman al panel Fields |
| Cajas de métricas y dimensiones | Field wells: Values, X-axis, Y-axis | Arrastras un campo a un pocillo |
| Native filter | Slicer | Un slicer es un visual: está en el lienzo |
| Draft → Published | Publish en el servicio de Power BI | Necesita una cuenta de trabajo o de centro educativo |
Cuidado: Power BI Desktop solo funciona en Windows
Power BI Desktop se descarga gratis, pero necesita Windows 10 o posterior. No hay versión para Linux, y la VM del laboratorio no es una máquina Windows. Si no tienes un PC con Windows, aún puedes hacer la mitad más importante de esta lección: predecir cada número en SQL Lab. La mitad de construcción la sigues en un ordenador con Windows.
Un aviso más: Microsoft publica una versión nueva de Power BI Desktop cada mes, y los botones cambian de sitio. Si un menú de tu pantalla no se llama exactamente como dice esta página, busca el nombre más parecido. Las ideas no cambian.
Un recorrido por la pantalla¶
Abre Power BI Desktop y mira cuatro sitios. No más.
flowchart TB
RIB["<b>Cinta de opciones</b><br>pestañas con herramientas: Home, Insert, Modeling"]
subgraph MAIN ["Bajo la cinta"]
direction LR
CAN["<b>Lienzo del informe</b><br>la página blanca donde<br>van los visuales"]
VIS["<b>Panel Visualizations</b><br>elige el tipo de visual,<br>rellena sus pocillos"]
DAT["<b>Panel Data</b><br>tus tablas y<br>sus campos"]
DAT -- "arrastra un campo" --> VIS
VIS -- "dibuja el visual" --> CAN
end
RIB --> MAIN
| Sitio | Dónde | Para qué sirve |
|---|---|---|
| Cinta de opciones (Ribbon) | En la parte superior | Las pestañas con las herramientas: Home, Insert, Modeling |
| Lienzo del informe (Report canvas) | La gran zona blanca del centro | La página donde colocas y ordenas tus visuales |
| Panel Visualizations | A la derecha | Eliges el tipo de visual y después rellenas sus pocillos |
| Panel Data | A la derecha | Las tablas y los campos de tus datos, listos para arrastrar |
Ahora busca el editor de SQL. No hay ninguno a la vista. Esta es la mayor diferencia del día: en Superset siempre podías abrir SQL Lab y escribir tú mismo la consulta. En Power BI arrastras campos, y la consulta te la escribe él.
Sin SQL no significa sin consulta
Cada visual sigue haciendo una pregunta a los datos: cuenta estas filas, agrúpalas por esa columna. Power BI simplemente la escribe entre bastidores. Lo que significa que no puedes leerla para comprobarla. Así que compruebas al revés: calculas tú la respuesta en SQL primero, y después miras si el visual está de acuerdo.
Visuales y pocillos de campo¶
Un visual es un gráfico, una tabla o un número del lienzo del informe. Un pocillo de campo (field well) es una caja con nombre del panel Visualizations donde sueltas un campo para decirle al visual qué dibujar.
Un campo (field) es simplemente una columna de tus datos, como price_band o release_year. Cada tipo de visual tiene sus propios pocillos, y se corresponden directamente con lo que ya haces en Superset:
| Visual | Pocillos que rellenas | Qué hacías en Superset |
|---|---|---|
| Card | Values | Big Number: una métrica |
| Clustered column chart | X-axis, Y-axis | Gráfico de barras con barras verticales: una dimensión y una métrica |
| Clustered bar chart | Y-axis, X-axis | Gráfico de barras con barras horizontales: las mismas dos, intercambiadas |
| Slicer | Field | Native filter: la columna por la que filtrar |
Cuando sueltas un campo en un pocillo que espera un número, Power BI tiene que decidir cómo resumirlo: sumarlo, contarlo, hacer la media. Lo adivina. Y muchas veces adivina Sum.
Cuidado: Sum no es Count
Arrastra number (el número de fila del juego) a una tarjeta y Power BI suma los números: una cifra de decenas de millones que no significa nada. Querías saber cuántos juegos hay, no el total de sus etiquetas. Abre la flechita junto al campo en el pocillo y elige Count. Pregúntate siempre de qué es suma, recuento o media el número que tienes delante.
Páginas y slicers¶
Un cuadro de mando de Superset es una pantalla, a veces dividida en pestañas. Un informe de Power BI está hecho de páginas: uno o más lienzos, como diapositivas, cada uno con sus propios visuales. Las pestañas de las páginas están en la parte inferior del lienzo. Una página para la visión general, otra para el detalle.
Un slicer es un filtro que vive en el lienzo como un visual. El lector hace clic en un valor, y los demás visuales de la página conservan solo las filas que coinciden.
Es la misma idea que el filtro nativo que construiste en Filtros y filtros cruzados: un control, muchos gráficos reaccionan, y detrás de cada uno se ha añadido un WHERE. Dos detalles son distintos:
| Native filter de Superset | Slicer de Power BI | |
|---|---|---|
| Dónde vive | En la barra de filtros, fuera de los gráficos | En el lienzo, entre los visuales |
| Qué toca por defecto | Los gráficos de su ámbito | Todos los demás visuales de su página |
| Cómo excluyes un gráfico | Cambias el ámbito (scoping) del filtro | Seleccionas el slicer, luego Format → Edit interactions, y pones ese visual en None |
Pruébalo: predice, construye, compara¶
El método importa más que los clics: primero predices en SQL, luego construyes, luego comparas. Un visual que no puedes comprobar es un visual en el que no puedes confiar.
Power BI leerá un archivo, así que necesitas games_clean.csv: tu tabla limpia de Steam de la Unidad 2, exportada a un archivo. Si aún no lo tienes, hazlo tú mismo en dos minutos.
Haz tú mismo games_clean.csv
En SQL Lab, pon el desplegable LIMIT en 100 000. El valor por defecto, 1 000, te daría un archivo con solo 1,000 juegos. Ejecuta SELECT * FROM games_clean y pulsa Download to CSV.
La pantalla solo muestra las primeras 10,000 filas y lo avisa en una notificación. El archivo las tiene todas: comprueba que contiene 26,685 filas de datos. El archivo original, sin limpiar, está en la página de Recursos, pero no es el que quieres aquí.
Paso 1 — Predice. En SQL Lab, con la base de datos Dades classe, ejecuta estas tres consultas una a una (SQL Lab solo muestra el resultado de la última sentencia) y apunta los resultados:
SELECT COUNT(*) AS games FROM games_clean;
SELECT release_year, COUNT(*) AS games FROM games_clean
GROUP BY release_year ORDER BY games DESC LIMIT 1;
SELECT price_band, COUNT(*) AS games FROM games_clean
GROUP BY price_band ORDER BY games DESC;
Después ejecuta las mismas tres otra vez con WHERE owners_tier = 'Hit' antes del GROUP BY. Eso es lo que hará el slicer en el Paso 4. Un éxito (hit) es un juego con al menos un millón de propietarios. Deberías acabar con estos seis resultados:
| Pregunta | Todos los juegos | Solo owners_tier = 'Hit' |
|---|---|---|
| Número de juegos | 26,685 | 623 |
| Año con más juegos | 2018, con 8,845 | 2015, con 80 |
| Franja de precio con más juegos | Under 5, con 11,613 |
Free, con 182 |
Paso 2 — Carga el archivo y construye la tarjeta.
| Haz esto | Deberías ver |
|---|---|
Home → Get data → Text/CSV, elige games_clean.csv, comprueba la vista previa, Load |
La tabla y sus campos aparecen en el panel Data |
En el panel Visualizations elige Card. Arrastra number del panel Data al pocillo Values |
Una tarjeta con un número enorme: es una suma |
| Abre la flechita junto al campo en el pocillo y elige Count | La tarjeta dice 27K |
| Format visual → Visual → Callout values → Values → Display units: None | La tarjeta dice 26,685, dígito a dígito como tu primera consulta |
Paso 3 — Dos gráficos. Haz clic primero en una zona vacía del lienzo, o el visual nuevo sustituirá a la tarjeta en lugar de añadirse a su lado.
| Haz esto | Deberías ver |
|---|---|
Clustered column chart: release_year en X-axis, number en Y-axis, puesto en Count |
Juegos lanzados por año. La columna más alta es 2018 |
Clustered bar chart: price_band en Y-axis, number en X-axis, puesto en Count |
Juegos por franja de precio. La barra más larga es Under 5 |
| Para cada visual: Format visual → General → Title, y escribe lo que muestra | Dos títulos que entendería un desconocido |
Paso 4 — El slicer.
| Haz esto | Deberías ver |
|---|---|
Haz clic en una zona vacía del lienzo. Elige Slicer y arrastra owners_tier a su pocillo Field |
Una lista con Hit, Mid y Niche en el lienzo |
| Haz clic en Hit | Los tres visuales cambian: la tarjeta marca 623, la columna más alta es 2015, la barra más larga es Free |
Compara con tus predicciones de "solo éxitos". Si los seis números coinciden, no solo has construido un informe: lo has verificado.
Cuidado: 27K no es un error
Tu SQL dice 26,685 y la tarjeta dice 27K. ¿Quién tiene razón? Los dos. La tarjeta redondea a miles para mostrarlo; el valor que hay detrás sigue siendo 26,685. Poner Display units en None muestra todos los dígitos. Ya viste lo mismo en Superset, donde un Big Number decía 26.7k hasta que cambiaste su formato de número. Un número redondeado va bien en un cartel y mal en una factura: decide cuál necesita tu lector.
Si algo sale mal
| Lo que ves | Qué ha pasado | Solución |
|---|---|---|
| La tarjeta muestra un número en los millones | El campo está en Sum | Abre la flechita junto al campo en el pocillo y elige Count |
El eje de años muestra 2,004 con coma, o hay una única barra |
release_year se está sumando como si fuera una cantidad |
Ponlo en X-axis y elige Don't summarize para él |
| Una columna sin año a la izquierda del gráfico | Un juego de la tabla no tiene fecha de lanzamiento | Nada: es real. Buen ojo |
| La tarjeta desapareció al añadir el gráfico | La tarjeta seguía seleccionada, así que el visual nuevo la sustituyó | Deshaz, haz clic en una zona vacía del lienzo y luego elige el visual nuevo |
Publicar en el servicio¶
En Superset, tu cuadro de mando vivía en el servidor desde el primer clic. Aquí, todo lo que has construido hasta ahora vive en un archivo de tu PC: File → Save crea un archivo .pbix. Nadie más puede verlo.
Para cambiarlo publicas:
| Haz esto | Qué pasa |
|---|---|
| Home → Publish | Power BI te pide que inicies sesión |
| Inicia sesión con una cuenta de trabajo o de centro educativo | Las direcciones personales como Gmail se rechazan |
| Elige My workspace, luego Select | El archivo viaja a la nube de Microsoft |
| Abre el enlace con el que responde Power BI | Tu informe, en el navegador |
Lo que viajó a la nube: ¿el informe, los datos o ambos? Ambos. El informe sube junto con su modelo semántico, y el modelo lleva dentro una copia de los datos. Esto se llama importar: las 26,685 filas ya no están solo en tu archivo CSV, también están dentro del informe publicado.
flowchart LR
subgraph SUP ["<b>Superset</b>"]
direction LR
DB1[("PostgreSQL<br>los datos se quedan aquí")] -- "consulta en cada vista" --> D1["Dashboard<br>en el servidor"]
end
subgraph PBI ["<b>Power BI</b>"]
direction LR
F["<b>Archivo .pbix</b> en tu PC<br>informe + una copia de los datos"] -- "Publish" --> S["<b>Servicio de Power BI</b><br>My workspace"]
end
Cuidado: publicar no es compartir
¿Te suena? Tras Publish, tu informe está en My workspace, y solo tú lo ves. Una licencia gratuita basta para eso. Compartirlo con otras personas es un paso aparte, y necesita una licencia de pago. En Publicación y permisos aprendiste que Published no significaba "todo el mundo puede verlo". La misma lección, en la otra consola.
Dos herramientas, dos respuestas a la misma pregunta: ¿cómo llega mi gráfico a otras personas? En Superset diste a un rol acceso a un dataset. En Power BI publicas en un espacio de trabajo y después compartes. La pregunta es la misma en todas las consolas.
La palabra que cambia de significado¶
Un botón del gráfico tiene el mismo nombre en las dos consolas y hace algo distinto.
Lo que construiste en Superset —una pantalla de gráficos que puedes filtrar— corresponde a un informe de Power BI. En Power BI, un dashboard es otra cosa: una única página de mosaicos (tiles) que anclas desde informes, para tener lo más destacado en un solo sitio.
| Informe de Power BI | Dashboard de Power BI | |
|---|---|---|
| Páginas | Una o más | Exactamente una |
| Hecho de | Visuales | Mosaicos anclados desde informes |
| ¿Se puede filtrar o segmentar? | Sí | No |
| Dónde existe | Power BI Desktop y el servicio | Solo en el servicio |
Así que si un compañero dice "envíame el dashboard de Power BI", haz una pregunta más. Muy bien puede referirse al informe.
Ideas clave¶
- Power BI tiene dos mitades: Power BI Desktop (gratis, solo Windows) para construir, y el servicio de Power BI (un sitio web) para publicar y compartir.
- Las ideas son las que ya conoces; cambian los nombres. Dashboard → informe, chart → visual, Big Number → card, native filter → slicer, dataset → modelo semántico.
- Construyes arrastrando un campo a un pocillo de campo. No hay editor de SQL: Power BI escribe la consulta, así que comprueba Sum frente a Count.
- Un slicer es un filtro que está en el lienzo y filtra los demás visuales de su página.
- Predice en SQL, construye, compara.
games_cleantiene 26,685 juegos; una tarjeta que dice 27K está redondeando, no mintiendo. - Publish envía el informe y una copia de los datos a My workspace, donde solo tú lo ves. Compartir es un paso aparte que necesita una licencia de pago.
- Un dashboard de Power BI es una única página de mosaicos anclados en el servicio. Tu cuadro de mando de Superset corresponde a un informe de Power BI.
Comprobación rápida¶
1. ¿Cómo se llama en Power BI lo que Superset llama native filter?
- Card
- Slicer
- Field well
- Tile
Un slicer filtra los demás visuales de su página, igual que un native filter hace con los gráficos de su ámbito. La diferencia es dónde vive: un slicer es en sí mismo un visual, colocado en el lienzo. Una card es el Big Number.
2. Arrastras number a una tarjeta y muestra una cifra de decenas de millones. ¿Qué ha pasado?
- El archivo CSV se cargó varias veces
- Power BI está redondeando el número de juegos
- El campo se está sumando en lugar de contarse
- El slicer está puesto en Hit
Power BI adivinó Sum y sumó los números de fila de todos los juegos: un total que no significa nada. Abre la flechita junto al campo en el field well y elige Count para obtener cuántos juegos hay.
3. Tu consulta SQL devuelve 26,685 juegos y tu tarjeta de Power BI dice 27K. ¿Quién tiene razón?
- SQL: Power BI perdió algunas filas al cargar el archivo
- Power BI: SQL cuenta dos veces la fila sin fecha de lanzamiento
- Los dos: la tarjeta redondea a miles para mostrarlo, y Display units: None muestra 26,685
- Ninguno: las dos herramientas no se pueden comparar
El valor que hay detrás de la tarjeta es 26,685; solo su visualización está redondeada. Cambiar Display units a None muestra todos los dígitos. Por eso predices primero en SQL: sabías qué número esperar.
4. Pulsas Publish y eliges My workspace. Elige las dos afirmaciones verdaderas.
- El informe y una copia de los datos viajan al servicio de Power BI
- Toda tu clase puede abrir ya el informe
- Solo tú puedes verlo allí, hasta que lo compartas con una licencia de pago
- Los datos se quedan solo en tu PC y el informe los consulta en vivo
Publicar sube el informe con su modelo semántico, que contiene una copia importada de los datos. Y My workspace es solo tuyo: publicar no es compartir. Compartir necesita una licencia de pago.
5. ¿Qué frase describe un dashboard de Power BI?
- Un informe con varias páginas que puedes segmentar
- La zona blanca de Power BI Desktop donde colocas visuales
- Una única página de mosaicos anclados desde informes, que existe solo en el servicio
- El archivo con la extensión
.pbix
La misma palabra, distinto botón. Un dashboard de Power BI es una página de mosaicos anclados, vive solo en el servicio y no se puede segmentar. Lo que construiste en Superset corresponde a un informe de Power BI. La zona blanca es el lienzo del informe.
6. ¿Por qué deberías calcular los números en SQL antes de construir los visuales en Power BI?
- Porque Power BI no sabe contar filas por sí mismo
- Porque Power BI necesita una consulta SQL para cargar un archivo CSV
- Porque Power BI escribe la consulta por ti, así que tu propio resultado es la única forma de comprobarla
- Porque los resultados de SQL siempre están redondeados y los de Power BI son exactos
En Power BI no hay a la vista ningún editor de SQL: arrastras campos y la consulta se genera. No puedes leerla, así que predices, construyes y comparas. Si los dos números no coinciden, algo va mal, normalmente Sum en lugar de Count.
7. La página de tu informe tiene un slicer puesto en Hit, y la tarjeta ahora marca 623. Tu lector quiere que la tarjeta siga mostrando los 26,685 juegos mientras los dos gráficos siguen al slicer. ¿Qué haces?
- Borrar el slicer y escribir un
WHEREen el editor de SQL - Publicar el informe: los slicers no actúan sobre las tarjetas en el servicio
- Seleccionar el slicer, abrir Format → Edit interactions y poner la tarjeta en None
- Mover la tarjeta al panel Data
Por defecto un slicer filtra todos los demás visuales de su página. Edit interactions es la forma de sacar un visual de su alcance, la misma idea que cambiar el ámbito de un filtro de Superset. No hay editor de SQL donde escribir un WHERE.
Ya hablas dos consolas. Entonces, ¿cuál deberías usar y, más importante, qué dices realmente con los gráficos una vez construidos? A continuación: Superset frente a Power BI, y storytelling con datos.