Power BI + Auditoría de Datos
Power BI + Data Auditing

Power BI como Centro de Comando de Data Quality

Power BI as a Data Quality Command Center

20 casos prácticos para convertir dashboards en radares de integridad: duplicados, registros huérfanos, anomalías, excepciones y señales tempranas de riesgo.

20 practical cases to turn dashboards into integrity radars: duplicates, orphaned records, anomalies, exceptions, and early risk signals.

La idea central

The core idea

Power BI no debe limitarse a mostrar resultados bonitos. Bien diseñado, puede funcionar como un tablero de control forense que revela dónde se rompe la confianza en la data: relaciones incompletas, reglas violadas, patrones anormales y problemas que normalmente quedan ocultos en reportes operativos.

Power BI should not be limited to showing attractive results. When designed well, it can become a forensic control panel that reveals where data trust breaks: incomplete relationships, violated rules, abnormal patterns, and issues that normally remain hidden in operational reports.

Cómo usar estos casos sin romper nada

How to use these cases without breaking anything

Caso práctico Practical case

1. Auditoría de registros huérfanos

1. Orphaned Record Audit

Detecta registros en hechos sin correlación en dimensiones.

Detects facts without dimension correlation.

Ejemplo baseBase example
#"RegistrosSinMatch" = Table.Join(Fact, "ID", Dim, "ID", JoinKind.LeftAnti)
Caso práctico Practical case

2. Detección de duplicados

2. Duplicate Detection

Identifica duplicados en llaves primarias para evitar inflar métricas.

Identifies duplicates in primary keys to avoid metric inflation.

Ejemplo baseBase example
Duplicados = COUNTROWS(Fact) - COUNTROWS(DISTINCT(Fact[ID]))
Caso práctico Practical case

3. Semáforo de Calidad (KPI DQ)

3. Data Quality Traffic Light

Alerta visual automática si el % de errores supera el 2%.

Automatic visual alert if error rate exceeds 2%.

Ejemplo baseBase example
Semáforo = SWITCH(TRUE(), [IssueRate] < 0.02, "Verde", [IssueRate] < 0.05, "Amarillo", "Rojo")
Caso práctico Practical case

4. Detección de anomalías

4. Anomaly Detection

Identifica montos atípicos (3 desviaciones estándar).

Identifies outliers (3 standard deviations).

Ejemplo baseBase example
EsOutlier = IF(ABS([Monto] - AVERAGE([Monto])) > (3*[StdDev]), "ALERTA", "Normal")
Caso práctico Practical case

5. Segregación de funciones (SoD)

5. Segregation of Duties (SoD)

Valida si quien creó una transacción fue también quien la aprobó.

Validates if transaction creator is the same as the approver.

Ejemplo baseBase example
SoD_Violation = IF(Fact[Creator_ID] = Fact[Approver_ID], "¡VIOLACIÓN!", "OK")
Caso práctico Practical case

6. Operaciones en fines de semana

6. Weekend Operations Audit

Detecta actividad fuera de horarios laborales estándar.

Detects activity outside standard working hours.

Ejemplo baseBase example
Weekend_Audit = IF(WEEKDAY(Fact[Date], 2) > 5, "AUDITAR", "OK")
Caso práctico Practical case

7. Identificación de montos redondos

7. Suspicious Rounding Detection

Detecta montos terminados en 000 (posible invento contable).

Detects amounts ending in 000 (potential accounting fraud).

Ejemplo baseBase example
Redondeo_Alert = IF(MOD(Fact[Amount], 1000) = 0, "ALERTA: Redondeo", "OK")
Caso práctico Practical case

8. Fechas cronológicas erróneas

8. Chronological Error Audit

Encuentra proyectos que finalizan antes de empezar.

Finds projects ending before they start.

Ejemplo baseBase example
Error_Fecha = IF(Fact[End_Date] < Fact[Start_Date], "ERROR: Fecha Final < Inicial", "OK")
Caso práctico Practical case

9. Correos externos prohibidos

9. Prohibited External Emails

Identifica proveedores con correos personales (Gmail).

Identifies suppliers using personal emails (Gmail).

Ejemplo baseBase example
Dominio_Error = IF(CONTAINSSTRING(Fact[Email], "@gmail.com"), "EXTERNO", "CORPORATIVO")
Caso práctico Practical case

10. Validación de campos obligatorios

10. Mandatory Field Validation

Cuenta filas críticas vacías para exigir calidad.

Counts critical empty rows to enforce quality.

Ejemplo baseBase example
Missing_Fields = COUNTROWS(FILTER(Fact, ISBLANK(Fact[MandatoryField])))
Caso práctico Practical case

11. Auditoría de cambios (DeltaAudit)

11. Change Audit (Delta)

Compara valor original vs actual (cambios no autorizados).

Compares original vs actual (unauthorized changes).

Ejemplo baseBase example
Changed = IF(Fact[Current] <> Fact[Original], "MODIFICADO", "OK")
Caso práctico Practical case

12. Validación de formato numérico

12. Numeric Format Validation

Fuerza tipos de datos para evitar errores de cálculo.

Forces data types to prevent calculation errors.

Ejemplo baseBase example
#"DetectType" = Table.TransformColumnTypes(Fact, {{"Monto", type number}})
Caso práctico Practical case

13. Auditoría de relaciones

13. Relationship Audit

Verifica cardinalidad para evitar modelos erróneos.

Verifies cardinality to prevent incorrect models.

Ejemplo baseBase example
-- Validar: Model View → Cardinalidad (One-to-Many)
Caso práctico Practical case

14. Perfilado de calidad (Column Profile)

14. Column Profiling

Herramienta nativa para ver % de errores sin código.

Native tool to see % of errors without code.

Ejemplo baseBase example
-- Power Query: View → Column Quality / Column Profile
Caso práctico Practical case

15. Identificación de dominios prohibidos

15. Prohibited Domain Whitelist

Lista blanca de dominios permitidos para proveedores.

Whitelist of authorized domains for suppliers.

Ejemplo baseBase example
Whitelisting = IF(NOT(Fact[Domain] IN {"empresa.com"}), "ERROR", "OK")
Caso práctico Practical case

16. Auditoría de varianza mensual

16. Monthly Variance Audit

Detecta saltos anormales mes a mes.

Detects abnormal month-to-month jumps.

Ejemplo baseBase example
Delta = [Actual] - CALCULATE([Actual], PREVIOUSMONTH(DimDate[Date]))
Caso práctico Practical case

17. Tabla de excepciones automática

17. Automated Exception Table

Dataset con registros que fallaron cualquier auditoría.

Dataset with records failing any audit.

Ejemplo baseBase example
Excepciones = FILTER(Fact, Fact[Audit_Flag] <> "OK")
Caso práctico Practical case

18. Auditoría de roles (RLS)

18. Role Audit (RLS)

Asegura que datos sensibles no sean expuestos por RLS.

Ensures sensitive data isn't exposed by RLS.

Ejemplo baseBase example
-- Modeling → Manage Roles → Filtro: DimDept[Dept] = "RRHH"
Caso práctico Practical case

19. Validación de longitud de IDs

19. ID Length Validation

Aísla documentos con longitud incorrecta.

Isolates documents with incorrect length.

Ejemplo baseBase example
ID_Error = IF(LEN(Fact[ID]) <> 11, "LONGITUD INCORRECTA", "OK")
Caso práctico Practical case

20. Centro de Comando de Data Quality

20. Data Quality Command Center

Dashboard central: resume errores, tendencias y detalle.

Central dashboard: summarizes errors, trends, and detail.

Ejemplo baseBase example
-- Visualiza: Errores, tendencia de fallas y detalle forense