Corregir los errores del simulacro con las manos de cada grupo sobre su propio archivo, y entrar a Power BI con el modelo ya aprendido — para comprobar que la herramienta no decide nada por ti.
El notebook de esta clase: https://gaa1104.vercel.app/notebooks/clase-15.ipynb
Ing. en Administración · mención Finanzas · Prof. Tomás Fernández
Acá el tema no es qué gráfico, sino cómo se construye uno fuera del notebook.
La forma la decide el trabajo que hace el dato —magnitud, identidad, polaridad, cambio en el tiempo, distribución—, no el gusto. Regla del curso: un solo eje.
Lo que quedó planteado anoche (se proyecta la pregunta, NO la respuesta):
«¿Qué parte del trabajo de anoche se habría hecho sola si el grano hubiera estado declarado por escrito en el minuto uno?»
Tres preguntas, en silencio, 90 segundos (espaciado 1–3–7–21):
dd/mm/yyyy?SELECT DISTINCT sobre las tres columnas del proveedor da 7 donde hay 4? ¿Y cómo se construye entonces una dimensión?Par (2 min) → plenaria (3 min).
Cerrar la pregunta colgada con ellos, y sin adornar: casi todo. El grano declarado por escrito es lo que evita rehacer el modelo a las 21:30, porque es la única frase que decide de una sola vez qué es una fila, qué es medida y qué es atributo. Los grupos que lo escribieron primero terminaron antes — decir cuántos fueron, con el registro de anoche en la mano.
«Y ojo con la tercera pregunta del recall, porque hoy vale doble: la suma cruzada prueba que las tres vistas dicen lo mismo entre ellas. No prueba que digan la verdad. Si el filtro estaba mal, las tres mienten igual de bien. Guárdense eso para el bloque de Power BI.»
No es una lista de errores proyectada. Cada grupo re-ejecuta el punto exacto donde se trabó. La corrección con las propias manos es lo que fija; escuchar la corrección de otro, no.
Los tres errores más caros del dictado tipo, del registro de anoche:
| Error | Cómo se detecta | Cómo se cura |
|---|---|---|
| Fechas mixtas detectadas tarde | las líneas 2018+ dan 10.902 en vez de 11.246: faltan 344 | COALESCE(TRY_CAST(fecha AS DATE), TRY_STRPTIME(fecha,'%d/%m/%Y')::DATE). Y la verificación: después del COALESCE, cero NULL |
| Calidad escrita como lista, no como decisiones | el notebook dice "hay 62 precios en 0" y no dice qué se hizo con ellos | cada hallazgo lleva sus cuatro partes: hallazgo → evidencia (la cifra) → tratamiento → riesgo residual. Es la estructura de la sesión 09 y la rúbrica la premia |
| Sin verificación cruzada | nadie se dio cuenta de nada hasta que un número se vio raro | una verificación después de cada carga, no al final. Filas antes / filas después |
Trabajo (18 min): cada grupo toma su notebook y arregla sólo su punto de traba, con la rúbrica al lado. El docente pasa por cada mesa una vez, con una pregunta de procedimiento y ninguna respuesta de contenido.
Cierre del bloque (4 min): revisar las coevaluaciones de ensayo. Si algún grupo reportó desequilibrio de aporte, la conversación es hoy — cara a cara, breve, sin dramatizar. El día del parcial no se conversa: se rinde.
«Y la buena noticia de anoche, que no dije al cierre porque estaban cansados: el gemelo tiene 450 fechas rotas y el oficial tiene cero. Tiene 24 formas de escribir 5 proveedores; el oficial tiene 4 proveedores limpios y 10 filas vacías. Lo entrenaron más sucio de lo que van a rendir.»
Primera vez que se abre la herramienta en el semestre. El encuadre va antes que el primer clic, y se dice mirando a la sala:
«Llevamos diez sesiones modelando. Hoy abrimos Power BI y no van a aprender nada nuevo sobre modelos: van a reconocer lo que ya saben, dibujado por otro. Si esto se hubiera hecho al revés —Power BI primero— habrían aprendido a arrastrar cajas sin saber qué es una fila.»
Y por qué Power BI y no otra herramienta, dicho de una vez para que no se pregunte en medio del parcial:
«Abrimos ésta porque el Parcial 2 la exige por su nombre: el entregable de la etapa 2 es un .pbix, y el nivel de 0 % de su rúbrica dice textual «No presenta la información en Power BI». No es mi herramienta favorita ni la única que sirve. En el bloque de reportes y en el examen la herramienta va a ser libre —ahí el instrumento dice «Power BI (o herramienta de BI equivalente)»— y ahí Looker Studio entra sin discusión. Hoy y hasta el martes 10, Power BI.»
(La regla escrita, para el que la pida: recursos/herramienta-de-bi.md.)
Get Data → Text/CSV, las cuatro tablas de referencia, una por una:
| tabla | filas |
|---|---|
fact_ventas | 11.541 |
dim_producto | 10 |
dim_proveedor | 4 |
dim_fecha | 1.096 |
«Miren los cuatro números antes de seguir. Diez productos, cuatro proveedores. Son los mismos conteos que verificamos en pandas la semana pasada. Si dim_proveedor te llega con siete filas, el problema no está en Power BI: está en cómo la construiste, y ya sabes lo que pasa después.»
Hilo 2 del curso — dónde vive esto en la organización, 30 segundos:
«El .pbix de estas semanas es material de portafolio de título. Y adentro de una empresa, esto es literalmente lo que hace control de gestión el día 5 de cada mes: cargar la salida del ERP en un modelo y responder preguntas sin volver a pedirle nada a nadie.»
Pararse, estirar, subir la luz un segundo. Clase nocturna: el cuerpo también aprende.
Model view. Power BI propone relaciones solo, por coincidencia de nombres de columna. Proyectar lo que dibujó y hacer la pregunta:
«¿Le creen?»
Contar hasta cinco. Y después, la revisión, que es el contenido del bloque:
Las cuatro cosas que se revisan en cada relación, antes de creerle:
len(dim) == 4 de pandas, con otra cara.id_producto, id_proveedor, id_fecha) y no el nombre. Un nombre como llave funciona hasta que alguien escribe Molinos del Sur con un espacio al final — y entonces deja de funcionar en silencio.El experto de negocio interno de hoy — se proyecta la duda concreta:
«Power BI dibujó una relación 1:N entre proveedor y producto porque en estos datos cada producto tiene un solo proveedor. ¿Eso es una regla del negocio, o es una coincidencia de estos tres años?»
A quién se le pregunta: Control de Gestión, y el Jefe de Planificación de Demanda.
Por qué importa y por qué no lo contesta el dato:
«Si es regla del negocio, la relación es correcta y el modelo puede apoyarse en ella. Si es coincidencia —porque hasta ahora nadie compró harina a dos molinos— tu modelo se rompe el primer mes que abastecimiento cambie de proveedor, y se rompe en silencio: los números van a seguir saliendo. La herramienta te muestra lo que pasó, nunca lo que puede pasar.»
Regla del curso en la pizarra, otra vez: una consulta SQL sin una conversación previa es una opinión con formato de tabla. Y vale igual para una relación dibujada a mano.
Ejercicio en máquina (5 min): se borra y se rehace a mano una sola relación, proyectada y con la sala siguiendo en su pantalla, y las otras dos se revisan sin borrarlas — dirección, cardinalidad y llave, una por una, en voz alta. Rehacer las tres enteras es tedioso y no enseña nada distinto de rehacer una; lo que fija es la revisión, y ésa se hace igual sobre las tres.
Verificación de integridad en Power BI, que es la misma de siempre con otra ropa: crear una tarjeta con COUNTROWS(fact_ventas) y comprobar que dice 11.541 con el modelo completo relacionado. Si después de relacionar el hecho creció, hay una dimensión duplicada. Es exactamente el merge que infló el hecho a 20.776 filas en la sesión 19.
La ceremonia de New measure, hecha despacio la primera vez:
Unidades = SUM(fact_ventas[cantidad])
Tabla simple: producto × Unidades. Y el número que ya conocen aparece solo:
1.009.104 en el total. Sin escribir un GROUP BY.
«La herramienta no hizo magia: nosotros le pasamos los datos en la forma que ella sabe leer. Si el grano estuviera mal, ese número saldría mal exactamente igual que en SQL, y con mejor tipografía.»
Segunda medida, y aquí está la clase:
Ingreso = SUM(fact_ventas[ingreso])
Mismo visual, ordenado primero por Unidades y después por Ingreso. Proyectar los dos, uno al lado del otro.
| ordenado por Unidades | ordenado por Ingreso | ||
|---|---|---|---|
| Harina de trigo | 166.545 | Café | 378.532.984 |
| Sal | 163.001 | Leche en polvo | 297.198.208 |
| Azúcar | 140.593 | Cacao | 296.872.276 |
| Arroz | 114.282 | Aceite vegetal | 173.634.157 |
| Aceite vegetal | 96.336 | Harina de trigo | 154.716.110 |
| Leche en polvo | 84.821 | Mantequilla | 153.558.232 |
| Café | 71.871 | Azúcar | 120.047.856 |
| Mantequilla | 67.076 | Arroz | 112.703.632 |
| Levadura | 56.011 | Sal | 75.012.328 |
| Cacao | 48.568 | Levadura | 73.368.689 |
Escribirlo en la pizarra:
El Café es el 7º en unidades y el 1º en ingreso. La Harina es la 1ª en unidades y la 5ª en ingreso. La Sal es la 2ª en unidades y la 9ª en ingreso.
Mismos datos. Mismo modelo. Dos rankings opuestos.
Y la pregunta que ordena todo el resto del semestre:
«Si tu informe muestra el ranking por unidades, el jefe de compras va a mirar la harina. Si muestra el de ingreso, el gerente comercial va a mirar el café. Ninguno de los dos gráficos está mal. Y elegir cuál va en la lámina no es una decisión de la herramienta: es tuya, y depende de quién decide. Eso es lo que separa un tablero de un informe.»
(Y el aviso, para que nadie se confunda: aquí Ingreso es cantidad × precio, sin costo. No es margen. La lección del margen ya la tienen de la sesión 13 y vale igual acá.)
Tres medidas más, que son exactamente las que pide el requisito 2.2 del Parcial 2:
Mediana unidades = MEDIANX(fact_ventas, fact_ventas[cantidad]) P75 unidades = PERCENTILEX.INC(fact_ventas, fact_ventas[cantidad], 0.75) Precio promedio = AVERAGEX(fact_ventas, fact_ventas[precio_unitario])
Los valores que deben salir con el modelo completo, sin ningún filtro — se proyectan para que cada quien verifique en su pantalla:
| medida | valor |
|---|---|
| Unidades | 1.009.104 |
| Ingreso | 1.835.644.472 |
| Mediana unidades | 76 |
| P75 unidades | 113 |
| Precio promedio | 2.349,49 |
Dos conceptos, no memorización:
Unidades da 1.009.104 en la tarjeta total y 166.545 en la fila de la Harina. No cambió la fórmula: cambió lo que el visual le está filtrando.La regla de validación, que es del curso y no de Power BI (y es el laboratorio de IA de la semana, ia/laboratorios-S7-S18.md → S12):
Toda medida DAX se verifica por doble ruta: el mismo número calculado en SQL o pandas sobre el mismo dato. Si DAX dice una cosa y SQL otra, el crimen está en el modelo —relación, grano o filtro—, casi nunca en la visual. Tabla de registro: | medida | valor DAX | valor SQL | coinciden |.
Por qué esto entra hoy y no en tres semanas. Se dice mirando a la sala, sin adornar:
«El martes 10 entregan la etapa 2, que es un .pbix. El indicador que más pesa de ese instrumento dice "utiliza gráficos y diagramas apropiados". Enseñarles a elegir el gráfico después de que lo entregaron es enseñárselos tarde. Así que las cuatro reglas van hoy, con el archivo en pantalla, y en la sesión 28 volvemos a ellas con los bocetos en la mano y con tiempo.»
Cada regla se dicta, se copia y se aplica de inmediato al visual del ranking que ya está en pantalla. Se copian porque son la pauta con que se corrige la etapa 2 y parte de la rúbrica del ET.
1 · Menos tinta. Todo lo que no porta información, fuera: bordes de caja, rejillas de fondo, sombras, degradados, 3D. La prueba: si borras el elemento y el mensaje no cambia, el elemento sobraba.
2 · Jerarquía. Un elemento dominante por página — el número o el gráfico que decide. Todo lo demás baja de tamaño y de contraste. Si un compañero mira tu página tres segundos y no puede señalar el dominante con el dedo, la página no está lista.
3 · Color con función de semáforo. Cinco valores, no más: fondo, texto, un gris de apoyo, un color de señal (lo que estás explicando) y un color de alerta (el problema). Un color usado para todo no señala nada.
4 · Pequeños múltiplos. Cinco paneles chicos con la misma escala ganan a cinco líneas peleando en un gráfico. La alineación de los picos entre paneles es el mensaje.
Aplicación inmediata, 4 minutos en máquina, sobre el visual que ya tienen: quitar la rejilla y el borde, dejar los diez productos en gris y sólo el Café en color, y cambiar el título por el mensaje: no «Ingreso por producto» sino «El Café es el 7º en unidades y el 1º en ingreso». Es el mismo visual de hace veinte minutos, y decide algo distinto.
La regla que va arriba de las otras cuatro, dictada y copiada: el diseño se hace después de la limpieza. Un gráfico bonito construido sobre una dimensión con duplicados es peor que uno feo, porque el feo se nota. Es la misma alarma del *:* de hace media hora, ahora con colores.
Síntesis construida con ellos:
Checklist del Parcial 2, proyectado (empieza mañana). Se proyecta y se fotografía; no se dicta, que no hay tiempo y no hace falta:
| Etapa | Cuándo | Entregable | RA |
|---|---|---|---|
| Etapa 1 — modelado y consolidación | mié S12 (mañana) | notebook .ipynb (o SQL) | RA3 |
| Etapa 2 — análisis con BI | mar S13 | informe .pbix | RA4 |
| Etapa 3 — síntesis y recomendación | mié S13 | informe breve + coevaluación + anexo de IA | RA4 |
Los tres últimos son obligatorios y se entregan aunque no se haya usado IA — el anexo se declara igual.
Ticket T23 (3 min, se proyecta).
Preguntas que quedan planteadas (se escriben en la pizarra y no se responden hoy):
→ Power BI dibujó las relaciones solo. ¿Le crees? ¿Qué revisas antes de que ese número llegue a una lámina?
→ Mañana entregan un modelo. ¿Cuál es la primera cosa que hace tu grupo al abrir el archivo, antes de escribir una consulta?
Puente al miércoles, corto:
«Mañana es la etapa 1, con la fuente oficial y en grupo. Dos horas. Y la primera cosa que van a hacer no es cargar: es contar filas y escribir el grano. Lo demás ya lo saben hacer.»
Tres minutos. No suma nota. Sirve para armar la apertura de la próxima clase.
El notebook de esta clase:
https://gaa1104.vercel.app/notebooks/clase-15.ipynb