Saltar a contenido

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_clean tiene 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 WHERE en 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.