GAA1104 · Big Data e Inteligencia de Negocios · Clase 20

La página del CFO que viaja sola

Construir la página ejecutiva —5 números, 1 pregunta, 0 ruido—, saber decir si un ratio empeoró por el numerador o por el denominador, y dejarla publicada y documentada para que otro pueda usarla sin ti.

El notebook de esta clase: https://gaa1104.vercel.app/notebooks/clase-20.ipynb

Ing. en Administración · mención Finanzas · Prof. Tomás Fernández

Clase 20 · el gráfico de hoy

Un número grande, una tendencia y un ranking

La página del CFO: primero el titular, después el contexto temporal, después el detalle. Ese orden es el diseño.

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.

Apertura, y la respuesta medida: operación contra financiamiento · 10 min

Lo que quedó planteado ayer (se proyecta la pregunta, NO la respuesta):

«Utilities pierde 4 puntos de ROE entre 2021 y 2023 (9,2 % → 5,3 %) con el margen EBITDA prácticamente intacto (34,7 % → 34,5 %). ¿Empeoró el negocio?»

Dos preguntas, en silencio, 60 segundos (espaciado 1–3–7–21):

Apertura, y la respuesta medida: operación contra financiamiento · 10 min
  1. Clase 19 · ¿Por qué se agrupa por RUT y no por nombre de empresa? (200 formas en bruto, 137 después de limpiar, 40 empresas reales)
  2. Clase 13 · Anki · El DSO promedio del sector Público en Austral era 91,6 días. ¿Por qué el promedio puede ser mal indicador ahí y qué se informa en su lugar? (cola larga; se informa la mediana y el P75)
Apertura, y la respuesta medida: operación contra financiamiento · 10 min

👀 Se mira — operación contra financiamiento, en cuatro números

La respuesta se construye entre todos, corriendo la consulta, no contándola. Viene resuelta: se corre y se leen los cuatro números.

Apertura, y la respuesta medida: operación contra financiamiento · 10 min
-- 👀 SE MIRA · EBITDA, gastos financieros, utilidad y deuda de Utilities
SELECT anio,
  SUM(ebitda_mm_clp)             AS ebitda_12m,
  SUM(gastos_financieros_mm_clp) AS gastos_financieros,
  SUM(utilidad_neta_mm_clp)      AS utilidad_neta,
  SUM(deuda_financiera_mm_clp)
    FILTER (WHERE q = 'Q4')      AS deuda_cierre
FROM eeff
WHERE sector_n = 'UTILITIES'
GROUP BY 1
ORDER BY 1;
-- 2021 | 1.073.517 | 131.322 | 402.158 | 3.042.929
-- 2023 | 1.267.692 | 418.434 | 282.699 | 3.773.745
Apertura, y la respuesta medida: operación contra financiamiento · 10 min

Se leen en voz alta, uno por uno, y la sala saca la conclusión antes que el profesor:

Apertura, y la respuesta medida: operación contra financiamiento · 10 min
El negocio no empeoró: se encareció la deuda.

«Si ustedes le llevan al directorio "Utilities cayó 4 puntos de ROE", lo primero que va a pasar es que alguien va a pedir un plan de eficiencia operacional. Y van a recortar donde no está el problema. Separar operación de financiamiento es lo que convierte un tablero en un diagnóstico.»

La regla, escrita en la pizarra y usada el resto de la clase:

Apertura, y la respuesta medida: operación contra financiamiento · 10 min
Todo ratio que baja tiene dos culpables posibles. Antes de recomendar, di cuál de los dos fue.
La página ejecutiva: cinco números con contexto · 20 min

Un número solo no decide nada. El triplete que se copia y se exige:

valor · comparación (vs período anterior, vs sector, vs covenant) · dirección.

Primero se deja el año armado en una vista, para no repetir el mismo GROUP BY cinco veces:

👀 Se mira — los cinco números del tablero, año por año

Las dos consultas vienen resueltas: la primera arma la vista del año, la segunda saca los cinco números.

La página ejecutiva: cinco números con contexto · 20 min
-- 👀 SE MIRA · el año armado una sola vez, para no repetir cinco GROUP BY
CREATE OR REPLACE VIEW anual_panel AS
SELECT rut_n, anio,
  SUM(ingresos_mm_clp)      AS ing,
  SUM(ebitda_mm_clp)        AS ebitda,
  SUM(utilidad_neta_mm_clp) AS util,
  AVG(patrimonio_mm_clp)    AS patrim,
  SUM(deuda_financiera_mm_clp)
    FILTER (WHERE q = 'Q4') AS deuda,
  SUM(activos_corrientes_mm_clp) AS act_corr,
  SUM(pasivos_corrientes_mm_clp) AS pas_corr
FROM eeff
WHERE rut_n <> '76660573-7'  -- la que reporta en USD
GROUP BY 1, 2
HAVING COUNT(*) = 4;         -- sólo años completos
La página ejecutiva: cinco números con contexto · 20 min

Y encima, los cinco números:

La página ejecutiva: cinco números con contexto · 20 min
-- 👀 SE MIRA · los cinco números del tablero
SELECT anio,
  ROUND(SUM(ing) / 1e6, 2)                  AS ingresos_bill,
  ROUND(100.0 * SUM(ebitda) / SUM(ing), 1)  AS margen_pct,
  ROUND(100.0 * SUM(util) / SUM(patrim), 1) AS roe_pct,
  ROUND(SUM(deuda) / SUM(ebitda), 2)        AS deuda_ebitda,
  ROUND(SUM(act_corr) / SUM(pas_corr), 2)   AS liquidez
FROM anual_panel
GROUP BY 1
ORDER BY 1;
La página ejecutiva: cinco números con contexto · 20 min
AñoIngresos bill.MargenROEDeuda/EBITDALiquidez
201916,6025,0 %9,6 %2,301,24
202016,4923,5 %8,8 %2,571,26
202119,7424,0 %9,5 %2,391,22
202223,0323,3 %6,8 %2,491,24
202323,2823,7 %6,4 %2,481,22
202424,2124,0 %7,3 %2,461,23
202526,0224,2 %8,1 %2,441,24
La página ejecutiva: cinco números con contexto · 20 min

Se leen en voz alta sólo cuatro: 2019, 2021, 2023 y 2025. Con esos basta para ver la forma —ingresos que suben todo el tiempo, margen que casi no se mueve, ROE que se hunde en 2023 y se recupera a medias.

El HAVING COUNT(*) = 4 no es adorno, y se dice: sin él, las tres empresas con trimestres faltantes contaminan el año. Un año incompleto en un total anual es una mentira aritméticamente correcta.

La página ejecutiva: cinco números con contexto · 20 min

Y así se ve la página, hecha con las manos antes de abrir la herramienta. La tabla de arriba ya trae los cinco números; lo que falta es el orden en que se miran, y ese orden es el diseño: primero el titular, después de dónde viene, después quién lo explica. Tres piezas, cada una con un solo eje y todas con la misma unidad —por ciento— para que el ojo pueda saltar de una a otra sin recalibrar.

La página ejecutiva: cinco números con contexto · 20 min
# 👀 SE MIRA · la página del CFO ya dibujada: se corre y se mira el ORDEN
import matplotlib.pyplot as plt

GRIS, TINTA, ALERTA = "#b8b8b8", "#102a38", "#8c2b20"

roe_anio = bd.sql("""SELECT anio, ROUND(100.0 * SUM(util) / SUM(patrim), 1) AS roe
                     FROM anual_panel GROUP BY 1 ORDER BY 1""")
roe_sector = bd.sql("""SELECT s.sector_n AS sector,
                              ROUND(100.0 * SUM(a.util) / SUM(a.patrim), 1) AS roe
                       FROM anual_panel a
                       JOIN (SELECT DISTINCT rut_n, sector_n FROM eeff) s USING (rut_n)
                       WHERE a.anio = 2025 GROUP BY 1 ORDER BY roe""")

hoy   = roe_anio[roe_anio.anio == 2025].roe.iloc[0]
antes = roe_anio[roe_anio.anio == 2019].roe.iloc[0]
peor  = roe_anio.loc[roe_anio.roe.idxmin()]
lider = roe_sector.iloc[-1]

fig = plt.figure(figsize=(12.5, 5))
rej = fig.add_gridspec(1, 3, width_ratios=[1, 1.45, 1.45], wspace=0.30,
                       left=0.035, right=0.975, top=0.76, bottom=0.13)

# 1 · el titular: un número, y su comparación
t = fig.add_subplot(rej[0]); t.axis("off")
t.text(0, 0.60, f"{hoy:.1f} %".replace(".", ","), fontsize=52, color=ALERTA,
       ha="left", va="center")
t.text(0, 0.36, "ROE del panel · 2025", fontsize=13, color=TINTA, ha="left")
t.text(0, 0.26, f"{antes - hoy:.1f} pp bajo 2019".replace(".", ","),
       fontsize=11, color="#767676", ha="left")

# 2 · la tendencia: de dónde viene
d = fig.add_subplot(rej[1])
d.plot(roe_anio.anio, roe_anio.roe, color=ALERTA, linewidth=2.4, marker="o")
d.annotate(f"{peor.roe:.1f} %".replace(".", ","), xy=(peor.anio, peor.roe),
           xytext=(-10, -20), textcoords="offset points", fontsize=11, color=TINTA)
d.set_title("de dónde viene: el hoyo de 2023", fontsize=12, color=TINTA, loc="left")
d.set_xlabel("ROE anual del panel, en %", fontsize=9)
d.set_xticks(list(roe_anio.anio)); d.tick_params(labelsize=9)
d.set_ylim(0, 12); d.set_yticks([0, 3, 6, 9, 12])

# 3 · el ranking: quién lo sostiene
r = fig.add_subplot(rej[2])
r.barh(roe_sector.sector, roe_sector.roe, height=0.60,
       color=[ALERTA if s == lider.sector else GRIS for s in roe_sector.sector])
r.axvline(hoy, color=TINTA, linestyle="--", linewidth=1)
r.text(hoy + 0.25, len(roe_sector) - 0.35, f"{hoy:.1f} % del panel".replace(".", ","),
       fontsize=9, color=TINTA)
for i, v in enumerate(roe_sector.roe):
    r.text(19.6, i, f"{v:.1f}".replace(".", ","), va="center", ha="right",
           fontsize=9.5, color=TINTA)
r.set_title("quién lo sostiene: la Banca, sola", fontsize=12, color=TINTA, loc="left")
r.set_xlabel("ROE 2025 por sector, en %", fontsize=9)
r.set_xlim(0, 20); r.set_xticks([0, 5, 10, 15, 20])
r.tick_params(labelsize=9, length=0)
r.set_ylim(-0.6, len(roe_sector) - 0.15)

for eje, lados in ((d, ("top", "right")), (r, ("top", "right", "left"))):
    for lado in lados:
        eje.spines[lado].set_visible(False)

fig.suptitle("La página del CFO: el dueño recuperó la mitad de lo que perdió en 2023,\n"
             "y lo que queda arriba lo sostiene un solo sector",
             fontsize=15, color=TINTA, x=0.035, y=0.98, ha="left")
plt.show()
La página ejecutiva: cinco números con contexto · 20 min

Qué se mira en el resultado, y en este orden exacto:

La página ejecutiva: cinco números con contexto · 20 min
  1. El número grande, primero. Un solo elemento dominante por página. Si alguien mira tres segundos y no puede señalarlo con el dedo, la página no está lista. Y no va solo: abajo lleva su comparación —1,5 pp bajo 2019—, porque un número sin contexto no decide nada.
  2. La tendencia, después. El 8,1 % no es una foto: es la mitad del camino de vuelta desde el 6,4 % de 2023. La línea es lo único que puede decir eso, y por eso es línea y no una segunda tarjeta.
  3. El ranking, al final. Seis sectores, la línea de puntos en el 8,1 % del panel, y una sola barra de color: la Banca está en 16,3 y los otros cinco están todos bajo el promedio. El titular de la página lo sostiene un sector.
  4. Lo que la página no tiene, y se dice en voz alta: ninguna tabla de detalle, ningún segundo eje, ningún color decorativo. Tres piezas, una unidad, un mensaje. El resto va en la página 2.
La página ejecutiva: cinco números con contexto · 20 min

El quinto número no está en el panel, y hay que decirlo. El CFO de una empresa operativa —el de Austral, el de la carrera de ustedes— también mira cuánto se demora en cobrar. Los números ya están medidos desde la clase 13 y van a la pizarra sin volver a correr la consulta: DSO Público 91,6 · Construcción 72,5 · Minería 60,6 · Industrial 56,2 · Retail 55,7.

La página ejecutiva: cinco números con contexto · 20 min
El DSO es el ratio del capital de trabajo y el que más rápido se convierte en decisión: 91,6 días contra 55,7 son 36 días de caja financiando al sector Público. El panel de EEFF no lo trae, porque el panel es la mirada del inversionista. El libro de ventas sí. Un tablero de CFO decente mezcla las dos fuentes y declara cuál viene de dónde.
La página ejecutiva: cinco números con contexto · 20 min

El contexto macro va un clic detrás, no en la página 1. datos/tc_mensual.csv trae el dólar observado mensual (promedio anual: 700,3 en 2019 · 751,0 en 2021 · 826,4 en 2023 · 933,7 en 2025) y la tasa implícita de la deuda del panel va de 4,32 % en 2021 a 11,46 % en 2023 (gastos financieros del año ÷ deuda promedio de los cuatro trimestres — no es la medida deuda cierre del covenant, que usa Q4; con Q4 dan 4,31 % y 11,34 %). Eso explica el mundo, pero la página ejecutiva no se pelea con el mundo: página 2 o drill-through.

La página ejecutiva: cinco números con contexto · 20 min

🔨 Actividad — Tu página ejecutiva, primero en el cuaderno

Entregas: en el cuaderno, tus cinco KPI y tu visual dominante con la restricción 5-1-0 y el título-mensaje escrito. 3 minutos acá; la página construida y exportada a PDF se entrega antes de mañana, mié 02-12, 20:30.

Y la restricción de la página, proyectada, dura, y copiada en el cuaderno (3 min, cada uno escribe la suya):

5 tarjetas KPI máximo · 1 visual dominante · 0 tablas de detalle · título-mensaje.
La página ejecutiva: cinco números con contexto · 20 min

Estructura sugerida —se puede cambiar, pero se justifica—: 1 · margen EBITDA vs 2019 · 2 · ROE vs el año anterior · 3 · deuda/EBITDA con el umbral de 4× dibujado · 4 · liquidez corriente vs el sector · 5 · empresas en alerta, con el año de la última alerta nueva. Dominante: la serie 2019–2025 del indicador que sostiene tu mensaje, con las empresas deterioradas destacadas y las otras en gris.

El indicador tiene numerador y denominador: la alerta de covenant · 20 min

Qué es un covenant, en 60 segundos: una cláusula del contrato de crédito. El banco presta con la condición de que la empresa mantenga, por ejemplo, deuda financiera / EBITDA por debajo de 4 veces. Si se cruza, el banco puede exigir el pago anticipado. No es un indicador de gestión: es un gatillo contractual. Por eso una alerta falsa cuesta reuniones, y una alerta perdida cuesta la empresa.

👀 Se mira — las 12 alertas de covenant

Se corre la consulta completa, sin anticipar el resultado:

El indicador tiene numerador y denominador: la alerta de covenant · 20 min
-- 👀 SE MIRA · qué empresas cruzan 4× de deuda/EBITDA, y en qué años
WITH anual AS (
  SELECT rut_n, sector_n, anio,
    SUM(deuda_financiera_mm_clp)
      FILTER (WHERE q = 'Q4') AS deuda_cierre,
    SUM(ebitda_mm_clp)        AS ebitda_12m
  FROM eeff
  GROUP BY 1, 2, 3
  HAVING COUNT(*) = 4)
SELECT a.anio,
  any_value(e.empresa_n)                  AS empresa,
  a.sector_n,
  ROUND(a.deuda_cierre / a.ebitda_12m, 2) AS deuda_ebitda
FROM anual a
JOIN eeff e USING (rut_n)
WHERE a.deuda_cierre / a.ebitda_12m > 4.0
GROUP BY a.anio, a.rut_n, a.sector_n,
         a.deuda_cierre, a.ebitda_12m
ORDER BY a.anio, deuda_ebitda DESC;
El indicador tiene numerador y denominador: la alerta de covenant · 20 min

Salen 12 alertas en 6 empresas, en dos láminas seguidas:

El indicador tiene numerador y denominador: la alerta de covenant · 20 min
AñoEmpresaSectorDeuda/EBITDA
2020Clínica Santa Elena S.A.Salud5,01
2020Clínica Los Robles S.A..Salud4,30
2020Clínica Puerto Varas SpASalud4,15
2020Centro Médico Cordillera SpASalud4,11
2023Papelera Itata S.A.Forestal4,70
2023Clínica Los Robles S.A..Salud4,64
El indicador tiene numerador y denominador: la alerta de covenant · 20 min
AñoEmpresaSectorDeuda/EBITDA
2024Papelera Itata S.A.Forestal6,07
2024Clínica Los Robles S.A..Salud5,53
2024Multitienda Aconcagua S.A.Retail4,55
2025Papelera Itata S.A.Forestal7,61
2025Clínica Los Robles S.A..Salud6,44
2025Multitienda Aconcagua S.A.Retail5,41
El indicador tiene numerador y denominador: la alerta de covenant · 20 min

🔨 Actividad — ¿Cuáles de las 12 alertas descartarías?

Entregas: tu lista de alertas descartadas, escrita, con el porqué al lado de cada una. En pares, 3 minutos, y antes de cualquier explicación.

Antes de que yo diga nada: en pares, 3 minutos. Consigna proyectada, y el docente se calla:

De estas 12 alertas, ¿cuáles descartarías y por qué? Escríbelo. No hace falta más dato que el que está en la tabla: año, empresa, sector y el número.
El indicador tiene numerador y denominador: la alerta de covenant · 20 min

Grupo 1 — las cuatro de 2020 son falsas. Se demuestra, no se afirma:

El indicador tiene numerador y denominador: la alerta de covenant · 20 min
-- 👀 SE MIRA · se cayó el denominador: el EBITDA de Salud, no la deuda
SELECT anio,
  SUM(ebitda_mm_clp)           AS ebitda_12m,
  SUM(deuda_financiera_mm_clp)
    FILTER (WHERE q = 'Q4')    AS deuda_cierre
FROM eeff
WHERE sector_n = 'SALUD' AND anio IN (2019, 2020, 2021)
GROUP BY 1
ORDER BY 1;
-- 2019 | 228.436 | 576.929
-- 2020 | 144.302 | 583.882
-- 2021 | 271.371 | 738.684
El indicador tiene numerador y denominador: la alerta de covenant · 20 min
El EBITDA del sector Salud cae 36,8 % en 2020 (las clínicas suspendieron cirugías electivas) y la deuda sube 1,2 %. Nadie se endeudó. Se cayó el denominador. Un semáforo automático habría mandado cuatro cartas al directorio y cuatro llamadas del banco, por nada. En 2021 las cuatro vuelven solas por debajo de 4×.

Grupo 2 — las de 2023 en adelante son verdaderas, y se prueban con dos cosas: cuatro indicadores deteriorados a la vez y persistencia.

El indicador tiene numerador y denominador: la alerta de covenant · 20 min
Papelera Itata S.A.202120232025
Deuda/EBITDA2,994,707,61
Margen EBITDA %18,814,111,1
ROE %3,9−2,1−4,0
Liquidez1,551,281,08
El indicador tiene numerador y denominador: la alerta de covenant · 20 min

Y la contraprueba, que es lo que hace utilizable la alerta: el máximo deuda/EBITDA entre las otras 37 empresas nunca cruza 4× salvo en el año del shock (3,51 · 5,01 · 3,52 · 3,66 · 3,80 · 3,58 · 3,56 de 2019 a 2025).

La regla de diseño que sale de aquí, y va a la pauta de la formativa 3:

El indicador tiene numerador y denominador: la alerta de covenant · 20 min
Una alerta en una página ejecutiva muestra siempre su denominador. La tarjeta no dice «deuda/EBITDA 4,70 🔴»: dice «4,70× — deuda +10 %, EBITDA −13 %, segundo año consecutivo de caída». Si no cabe, no es que falte espacio: es que la alerta todavía no está entendida.
El indicador tiene numerador y denominador: la alerta de covenant · 20 min
Hilo 3 — salir de Excel rápido. Un covenant vigilado en una planilla es una celda que alguien tiene que acordarse de mirar, y ese alguien está de vacaciones en febrero. Aquí es una regla que se recalcula sola cada vez que llega un trimestre nuevo. Ésa es la diferencia entre un control y un recordatorio.
Respiro · 5 min
La bisagra · 4 min

Se proyecta la página ejecutiva que acaban de diseñar en el cuaderno, y se pregunta:

«Esta página la explicas tú. Estás en la reunión, alguien pregunta por el 4,70 y tú cuentas la historia del denominador.

¿Y cuando la abra alguien un martes a las 8 de la mañana, sin ti en la sala?»

Se recogen dos respuestas y se construye la del curso, que queda escrita en la pizarra el resto de la clase:

La bisagra · 4 min
Cuando no estás tú, lo único que queda es lo que está escrito. El informe no termina cuando se ve bien: termina cuando puede viajar solo. Y viajar solo significa tres cosas concretas: que llegue (distribución), que cargue rápido (rendimiento) y que se entienda sin traductor (diccionario). Eso es la segunda mitad de esta clase.
Que llegue y que cargue: distribución, rendimiento y el permiso de publicar · 16 min

Las tres vías de distribución (5 min)

El criterio no es técnico: es quién lo recibe y qué necesita hacer con él.

Que llegue y que cargue: distribución, rendimiento y el permiso de publicar · 16 min
VíaQué entregaCuándo se usaQué se pierde
1 · Publicar al servicioInteractividad y actualización automáticaEl comité mensual que va a filtrar en vivoRequiere cuenta, permisos y gobierno de accesos
2 · Exportar a PDFCongela la decisión de hoyCorreo al directorio, acta de reunión, respaldo de auditoríaNadie puede explorar; y por eso nadie puede romperlo
3 · Pack reproducible (.pbix + fuentes + diccionario)Que el otro rehaga tu númeroTraspaso de cargo, auditoría, entrega académicaPesa y exige que la documentación esté al día
Que llegue y que cargue: distribución, rendimiento y el permiso de publicar · 16 min

Regla del curso para el Examen Transversal: vía 2 obligatoria en la entrega, vía 3 como anexo. El criterio es auditor y se dice tal cual: «que otro pueda rehacer tu número sin ti».

Que llegue y que cargue: distribución, rendimiento y el permiso de publicar · 16 min
Y acá se cierra el argumento de la herramienta libre, en un minuto y sin desviarse: «en el examen ustedes eligen la herramienta —el instrumento dice «Power BI (o herramienta de BI equivalente)»— y estas tres vías son exactamente el criterio con que se elige. Un .pbix es un archivo: viaja, se versiona y la vía 3 sale gratis. Un informe de Looker Studio es un servicio con permisos: la vía 1 sale gratis y es un enlace, pero la vía 3 hay que armarla a mano y el enlace deja de funcionar para el que pierde el acceso. Ninguna de las dos es mejor: son dos maneras distintas de que tu trabajo sobreviva sin ti, y elegir con eso a la vista es el IE 5.1.1.» Regla escrita en recursos/herramienta-de-bi.md; y si eligen Looker Studio, la parte 4 de recursos/guia-looker-estudiante.md es obligatoria, porque compartir el informe no comparte la hoja de datos.
Que llegue y que cargue: distribución, rendimiento y el permiso de publicar · 16 min

Y la conversación incómoda, que hay que tener hoy y no en el trabajo: qué pasa cuando el informe sale de tu carpeta. Los roles de acceso no son un tema de TI. Si el panel muestra por empresa y el que abre es un ejecutivo comercial de una de esas empresas, hay una decisión de negocio detrás de cada permiso. Se pregunta antes de publicar, no después.

Rendimiento y de dónde saca el dato Power BI (6 min)

Primero, la honestidad: este panel tiene 1.109 filas y 164 KB. Carga instantáneo aunque lo hagas mal. Las dos cifras se leen en voz alta y no se corre nada en vivo:

Que llegue y que cargue: distribución, rendimiento y el permiso de publicar · 16 min
eeff_empresas.csv   1.109 filas ·   164 KB · se lee en 0,11 s
ventas_full.csv.gz  810.000 filas ·  24 MB · se cuenta en 0,73 s

Y las tres razones por las que el modelo ágil escala y la tabla plana no, dictadas: 1 · las dimensiones son cortas —dim_empresa tiene 40 filas, no 1.109 repeticiones del nombre—; 2 · la agregación vive en la medida, no en columnas calculadas —una columna se materializa fila por fila, una medida se evalúa sólo para lo que estás mirando—; 3 · sólo cargas las columnas que usas.

Que llegue y que cargue: distribución, rendimiento y el permiso de publicar · 16 min
«La estética también es de tiempo. Un informe que tarda quince segundos en responder a un filtro, en una reunión de ocho minutos, es un informe que no se usa.»

Y lo que falta para cerrar el argumento, con una confesión: «todo lo que hemos hecho este semestre es Importación, y no se los había dicho. Es uno de tres modos, y es el que casi siempre corresponde. Pero el primer día que abran Power BI en una empresa con base corporativa, alguien de TI les va a preguntar por los otros dos.»

Que llegue y que cargue: distribución, rendimiento y el permiso de publicar · 16 min
ModoQué haceLa pregunta de negocio que lo decide
ImportaciónCopia el dato dentro del .pbix y lo comprime. Se actualiza según un calendario¿Basta con el dato de anoche? Entonces éste, y punto
DirectQueryNo copia nada. Cada clic dispara una consulta a la base de origen¿Tiene que mostrar el dato de hace cinco minutos? Entonces éste — y la velocidad del informe pasa a ser la de esa base, no la tuya
Live ConnectionTe conectas a un modelo semántico ya publicado por otro equipo. No modelas: consumes¿Ya existe un modelo corporativo con las definiciones oficiales? Conéctate, y que el margen EBITDA signifique lo mismo en los doce informes de la empresa
Que llegue y que cargue: distribución, rendimiento y el permiso de publicar · 16 min

La pregunta se dice completa y se copia, porque es la que se lleva un titulado a su primer trabajo:

«¿El informe tiene que mostrar el dato de hace cinco minutos o el de anoche?» La respuesta la da el negocio, no TI.

Y el aviso honesto: DirectQuery se paga. Todo lo del modelo ágil se aplica igual, y encima se le suman la latencia de la red y la carga sobre una base que además tiene gente trabajando.

Que llegue y que cargue: distribución, rendimiento y el permiso de publicar · 16 min

Y la herramienta que dice cuál visual es el lento: Performance Analyzer (pestaña Optimize / View): Start recording, se refrescan los visuales, y devuelve milisegundos por visual, separando la consulta DAX del dibujo.

«Cuando alguien diga "el informe está lento", eso no es un diagnóstico: es un síntoma. Un informe no es lento: hay un visual que es lento, y casi siempre es uno solo.»
Que llegue y que cargue: distribución, rendimiento y el permiso de publicar · 16 min

¿Quién autoriza publicar un panel con RUT? (5 min)

Es la media lámina de recursos/etica-y-privacidad.md §6, que está escrita y minutada ahí. Acá va sólo lo que se dice en voz alta y en qué minuto. Este bloque no se corta.

Que llegue y que cargue: distribución, rendimiento y el permiso de publicar · 16 min
El diccionario de datos como contrato · 20 min

No es documentación: es un contrato. Define qué significa cada campo y, sobre todo, qué NO significa. Cinco columnas:

TablaCampoTipoQué significaRegla / advertencia

En clase se documenta fact_eeff, que es la tabla que sostiene todas las medidas; dim_empresa, dim_sector y dim_tiempo se completan en casa sobre la misma plantilla. Pero antes, los cuatro ejemplos obligatorios de este panel (12 min), que se escriben en la pizarra y se copian textual porque son la clase:

El diccionario de datos como contrato · 20 min

🔨 Actividad — El diccionario de fact_eeff, y la prueba de fuego

Entregas: la fila de diccionario de cada campo de fact_eeff —cinco columnas— más los cuatro ejemplos obligatorios escritos, y la prueba de fuego pasada con el compañero de al lado. 12 minutos de escritura + 8 de prueba en pares; el diccionario completo se entrega antes de mañana, mié 02-12, 20:30.

1 · El ejemplo insignia: ebitda_mm_clp no significa lo mismo en Banca.

El diccionario de datos como contrato · 20 min
-- 👀 SE MIRA · ese 33,0 % de Banca está bien calculado y no es un margen EBITDA
SELECT sector_n,
  ROUND(100.0 * SUM(ebitda_mm_clp)
              / SUM(ingresos_mm_clp), 1)    AS margen_pct,
  ROUND(SUM(activos_corrientes_mm_clp)
      / SUM(pasivos_corrientes_mm_clp), 2)  AS liquidez
FROM eeff
WHERE anio = 2025 AND rut_n <> '76660573-7'
GROUP BY 1
ORDER BY 2 DESC;
-- UTILITIES 35,3 · 1,18
-- BANCA     33,0 · 1,02
-- MINERIA   30,4 · 1,83
-- FORESTAL  18,5 · 1,46
-- SALUD     14,2 · 1,09
-- RETAIL     8,0 · 1,31
El diccionario de datos como contrato · 20 min

Ese 33,0 % de Banca está bien calculado y no es un margen EBITDA. Un banco no tiene costo de venta ni EBITDA: en este panel esas columnas se reutilizan con la lectura del área de estudios — costo_venta_mm_clp son los intereses pagados a los depositantes y deuda_financiera_mm_clp no incluye los depósitos.

Y el costo de no escribirlo, medido:

El diccionario de datos como contrato · 20 min
-- 👀 SE MIRA · el mismo titular, con Banca y sin Banca: 24,3 contra 22,8
SELECT
  ROUND(100.0 * SUM(ebitda_mm_clp)
              / SUM(ingresos_mm_clp), 1)  AS con_banca,
  ROUND(100.0 * SUM(ebitda_mm_clp)
          FILTER (WHERE sector_n <> 'BANCA')
              / SUM(ingresos_mm_clp)
          FILTER (WHERE sector_n <> 'BANCA'), 1) AS sin_banca
FROM eeff
WHERE anio = 2025 AND rut_n <> '76660573-7';
-- 24,3 | 22,8
El diccionario de datos como contrato · 20 min
El margen agregado del panel en 2025 es 24,3 % con Banca y 22,8 % sin ella: un punto y medio de diferencia en el titular. (Sobre el panel completo, 24,0 % y 22,6 %: el filtro también hay que declararlo.) Los dos números son correctos. Sólo uno de los dos es honesto, y cuál lo sea depende de lo que diga el diccionario. Si eso no está escrito, el informe miente solo, sin que nadie mienta.
El diccionario de datos como contrato · 20 min

2 · La convención de signos. Todas las columnas de gasto van en positivo, como magnitud, y la identidad se cumple fila a fila: ebitda = ingresos − costo_venta − gastos_operacionales. Quien no lo sepa va a restar dos veces.

3 · La exclusión declarada. «El margen EBITDA excluye a Minera Andes Blancos SpA (RUT 76.660.573-7): reporta ingresos en millones de USD y el resto en MM CLP. Consultado a Control de Gestión el [fecha]. Pendiente la conversión.» Una exclusión sin nota es un maquillaje.

El diccionario de datos como contrato · 20 min

4 · Lo que la fuente no trae. «Deuda/EBITDA se calcula sobre deuda bruta: el panel no informa efectivo, por lo tanto no hay deuda neta.» Y: «Tres empresas tienen 11 trimestres ausentes; los totales anuales usan sólo años completos.»

Y la fila que salió hace quince minutos, que también es del diccionario: una columna puede tener una advertencia de publicación, no sólo de significado. «rut_cliente: identificador del cliente. No se publica en paneles distribuidos fuera de Control de Gestión; la apertura publicable es segmento × macrozona, con mínimo 3 clientes por celda.» El diccionario es donde esa decisión queda escrita — si no, se vuelve a discutir cada vez y se resuelve distinto cada vez.

El diccionario de datos como contrato · 20 min

La prueba de fuego, 8 minutos, en pares. Se intercambian los diccionarios. La pregunta al compañero:

«Con esto en la mano y sin hablar conmigo: ¿puedes decirme qué significa deuda_financiera_mm_clp para una empresa de Banca, y por qué mi margen agregado da 24,3 y no 22,8?»

Si no puede, el contrato está cojo y se reescribe la fila. No se discute, se reescribe.

Los dos expertos de negocio interno · 10 min

Los dos en la misma lámina. Son las dos llamadas que hay que aprender a hacer por teléfono.

Los dos expertos de negocio interno · 10 min
1 · Tesorería. «Calculé el covenant con deuda_financiera_mm_clp. ¿Está bien?»
La pregunta textual: «¿El covenant de nuestro contrato se mide sobre deuda bruta o sobre deuda neta de caja? ¿Y el EBITDA es el reportado o lleva ajustes pactados con el banco?»
Por qué cambia todo: la deuda neta descuenta el efectivo. Una empresa con 4,70× de deuda bruta y caja abundante puede estar en 3,2× de deuda neta — y no estar en incumplimiento en absoluto. La respuesta cambia quién aparece en rojo en tu página.
Los dos expertos de negocio interno · 10 min

Y el hallazgo que hay que hacerles descubrir, no contarles:

Los dos expertos de negocio interno · 10 min
-- 👀 SE MIRA · busca la columna de caja: no existe, y eso se escribe en la lámina
SELECT column_name
FROM (DESCRIBE SELECT *
      FROM read_csv_auto('datos/finanzas/eeff_empresas.csv'))
WHERE lower(column_name) LIKE '%caja%'
   OR lower(column_name) LIKE '%efectivo%';
-- (0 filas)
Los dos expertos de negocio interno · 10 min
El panel no tiene columna de caja. Con este archivo, el covenant sólo se puede calcular sobre deuda bruta, y eso no es una decisión: es una limitación de la fuente. La diferencia entre un analista y alguien que hace gráficos es que el analista escribe esa limitación en la lámina: «deuda/EBITDA calculado sobre deuda bruta; el panel no informa efectivo».
Los dos expertos de negocio interno · 10 min
2 · El analista de Estudios del banco (o, en una empresa operativa, Control de Gestión). «Voy a escribir en el diccionario qué significa ebitda_mm_clp en Banca. ¿Con qué palabras exactas?»
La pregunta textual: «¿"EBITDA" de un banco significa lo mismo que el de un retailer? Si tengo que ponerlo en una línea de diccionario, ¿cómo lo escribirías tú?»
Y aquí está lo nuevo del método, que hay que subrayar: su respuesta se copia textual al diccionario, entre comillas y con la fecha. No se parafrasea. Un diccionario escrito con las palabras del área que genera el dato se defiende solo en una auditoría; uno escrito con tus palabras es tu interpretación, y a los seis meses nadie sabe si era la de ellos o la tuya.
Los dos expertos de negocio interno · 10 min
Hilo 1, en su forma final. El semestre partió con «una consulta SQL sin una conversación previa es una opinión con formato de tabla». El diccionario es el registro escrito de esas conversaciones. Es lo único que queda de ellas cuando tú ya no estás en el cargo.
Los dos expertos de negocio interno · 10 min
Hilo 2 — qué van a ver en la organización. Ésta es la lámina que se proyecta en el comité de gestión mensual. La pregunta que hace el CFO ahí no es «¿por qué el gráfico es de barras?»: es «¿de dónde sale ese número y qué supuesto tiene adentro?». Y el diccionario es lo primero que pide un auditor externo y lo primero que no existe: el que lo escribe se vuelve indispensable en tres meses.
Síntesis, entregas y ticket · 15 min

Síntesis, construida con ellos (6 min):

Síntesis, entregas y ticket · 15 min
  1. «¿Por qué el ROE de Utilities cayó?» → por el financiamiento, no por la operación.
  2. «¿Cuál es el triplete del KPI?» → valor, comparación, dirección.
  3. «¿Por qué las alertas de 2020 eran falsas?» → cayó el denominador.
  4. «¿Qué le falta al panel para calcular deuda neta?» → la columna de caja, y eso se escribe en la lámina.
  5. «¿Las tres vías de distribución y cuándo cada una?» → servicio, PDF, pack reproducible.
  6. «¿Qué prueba tiene que pasar el diccionario?» → que un compañero entienda un campo sin hablar contigo.
  7. «¿De dónde salen las palabras del diccionario?» → del área que genera el dato, textuales y con fecha.
  8. «¿El informe muestra el dato de hace cinco minutos o el de anoche?» → y según eso, Importación o DirectQuery.
  9. «Publicaste el corte agregado y sacaste el RUT. ¿Qué cuentas antes de apretar Publicar?» → cuántos titulares distintos hay en la celda más chica.
Síntesis, entregas y ticket · 15 min

Las tres entregas, dichas con reloj y escritas en la pizarra (4 min):

Síntesis, entregas y ticket · 15 min
QuéCuándoMínimo
Página ejecutiva construida en Power BIantes de mañana, mié 02-12, 20:30cumple 5-1-0 y tiene título-mensaje
Reporte exportado a PDFidemlas tarjetas no cortadas y el título-mensaje legible en la primera página
Diccionario de datosidemfact_eeff completo + los cuatro ejemplos obligatorios escritos
Síntesis, entregas y ticket · 15 min
«El boceto lo tienen en el cuaderno desde las 20:55 y el modelo está cargado desde ayer: lo que falta es armarla y exportarla. Un PDF que no abriste no se manda. Y mañana es la formativa 3: el PDF que suban esta noche es el que van a presentar.»

Publicación al servicio para quien pueda; demo desde la cuenta del profesor para el resto. Carpeta del pack reproducible armada: .pbix + los CSV de las cuatro tablas + el diccionario; si no alcanza hoy, se sube al sitio antes del sábado 23:59.

Síntesis, entregas y ticket · 15 min

Ticket TC20 (3 min): a) ¿Qué parte del reporte reemplaza al que lo explica? Una frase. b) Con los gastos financieros 520.955 (2021) → 1.651.271 (2023) MM CLP y Utilities perdiendo ROE de 9,2 % a 5,3 % con el margen EBITDA casi intacto (34,7 % → 34,5 %), escribe la línea del diccionario que impide que alguien lea eso como mala gestión. c) Del 1 al 5, dónde te sientes y qué te falta.

Anki S14–S15 publicado (10 tarjetas: las cuatro reglas de estética, las cuatro medidas, el triplete, la trampa del denominador).

Preguntas que quedan planteadas (se escriben en la pizarra y no se responden hoy):

Síntesis, entregas y ticket · 15 min
→ Tienes el reporte publicado y documentado. Si te dieran dos horas y un caso que nunca viste, ¿cuánto de todo esto se sostiene?

→ Mañana presentas tu dashboard en tres minutos. ¿Qué sacas primero si te quedan dos?
Clase 20 · cierre

Ticket de salida

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-20.ipynb

← → avanzar · P proyector · F pantalla completa
GAA1104 · C20 · La página del CFO que viaja sola 20:30 1 / 1