Governança — Catálogo, Qualidade e Linhagem

Catálogo de dados (Unity Catalog)

Cada dataset registrado no Unity Catalog deve ter:

CampoObrigatórioExemplo
nameSimsilver.sps.purchase_orders
descriptionSim”Pedidos de compra normalizados do Sienge”
domainSimsps
source_systemSimsienge
source_of_truthSimtrue / false — único por entidade
ownerSimequipe responsável
stewardSimpessoa responsável pela qualidade
sensitivitySimpublic / internal / confidential / restricted
pii_fieldsSe aplicávellista de colunas PII
sla_freshnessSimex: “atualizado em até 2h após evento”
retention_yearsSimnúmero
tagsRecomendadoex: lgpd, financeiro, sienge

Regras de qualidade por domínio

D1 — SPS (Project Management)

EntidadeDimensãoRegraSeveridade
purchase_ordersCompletudepo_id IS NOT NULLErro
purchase_ordersCompletudeproject_id IS NOT NULLErro
purchase_ordersValidadetotal_value > 0Aviso
purchase_ordersUnicidadeCOUNT(po_id) = COUNT(DISTINCT po_id)Erro
budget_baselineCompletudeproject_id IS NOT NULL AND cost_center IS NOT NULLErro
budget_vs_actualConsistênciaactual_cost <= budget_cost * 1.5 (desvio > 50% = alerta)Aviso
construction_reportsTemporalidadeMAX(report_date) > NOW() - INTERVAL 2 DAYS (por obra ativa)Aviso
suppliersCompletudecnpj IS NOT NULL AND name IS NOT NULLErro

D2 — REMS (Gestão Condominial)

EntidadeDimensãoRegraSeveridade
buildingsCompletudebuilding_id IS NOT NULL AND name IS NOT NULLErro
financial_monthlyCompletudebudgeted_amount IS NOT NULL AND actual_amount IS NOT NULLErro
financial_monthlyTemporalidadeMAX(reference_month) >= DATE_TRUNC('month', NOW() - INTERVAL 1 MONTH)Aviso
service_ordersCompletudeso_id IS NOT NULL AND status IS NOT NULLErro
service_ordersValidadestatus IN ('open', 'in_progress', 'completed', 'cancelled')Erro
delinquencyConsistênciaReferential: unit_id existe em buildingsErro

D3 — IM (Inteligência de Mercado)

EntidadeDimensãoRegraSeveridade
offices_marketTemporalidadeMAX(reference_quarter) >= DATE_TRUNC('quarter', NOW() - INTERVAL 3 MONTHS)Aviso
macro_indicatorsCompletudeincc_monthly IS NOT NULL AND cub_sp IS NOT NULLAviso
offices_marketValidadevacancy_rate BETWEEN 0 AND 1Erro
offices_marketValidadeasking_price_sqm > 0Aviso

D4 — CIVAS (Avaliação Imobiliária)

EntidadeDimensãoRegraSeveridade
appraisalsCompletudeappraisal_id IS NOT NULL AND property_id IS NOT NULLErro
appraisalsValidadeappraisal_value > 0Erro
pipelineConsistênciastatus IN ('proposta', 'aceite', 'em_andamento', 'entregue', 'cancelado')Erro

Linhagem de dados (lineage)

Linhagens críticas de nível Gold

[Smart Colliers API] → bronze/rems/smart_colliers/financial_monthly
  → silver/rems/financial_monthly         (normalização + dedup)
    → gold/rems/financial_dashboard        (agregação mensal por empreendimento)
      → Power BI: Dashboard REMS

[Sienge BULK/Webhook] → bronze/sps/sienge/purchase_orders
  → silver/sps/purchase_orders           (normalização + status tracking)
    → silver/sps/budget_vs_actual          (join com budget_baseline)
      → gold/sps/project_performance       (KPIs custo por projeto)
        → Power BI: Dashboard SPS
        → Agente King (aprovação financeira)
        → Agente Atlas (histórico de CPUs)

[SharePoint Graph API] → bronze/im/sharepoint/offices/
  → silver/im/offices_market             (série histórica estruturada)
    → gold/im/market_dashboard             (painel de mercado)
      → Power BI: Dashboard IM (publicado para clientes)

[Sienge Webhook SALES_CONTRACT_*] → bronze/sps/sienge/sales_contracts
  → silver/sps/contracts                 (enriquecido com dados de projeto)
    → gold/cross/ai_feature_store          (features para Atlas + Sentinel)
      → Agente Atlas (modelo paramétrico de orçamento)
      → Agente Sentinel (auditoria legal de contratos)

Política de retenção

CamadaRetenção padrãoOverride regulatório
Bronze (estruturado)7 anosLGPD: exclusão sob solicitação
Bronze (documentos/blobs)7 anosNR-7: ASO/EPI mínimo 20 anos
Silver3 anosCFC: laudos CIVAS 5 anos
Gold1–2 anos rollingSOX: dados financeiros 7 anos
Dados externos (INCC, CUB)5 anos

Checklist de governança — ações para V1

Catálogo de dados

  • Registrar todos os datasets Bronze P1 no Unity Catalog com metadados obrigatórios
  • Definir source_of_truth para cada entidade de domínio (evitar duplicidade)
  • Mapear campos PII em todos os datasets com sensitivity = confidential/restricted
  • Criar tags de domínio e sensibilidade padronizadas

Qualidade de dados

  • Implementar dbt tests para entidades Silver P1 (purchase_orders, financial_monthly, buildings)
  • Configurar alertas de qualidade no Databricks (Slack/Teams quando regra falha)
  • Criar dashboard de qualidade por domínio no Gold

Linhagem

  • Habilitar lineage automático no Unity Catalog para todas as transformações dbt/Spark
  • Documentar linhagem manual para ingestões batch de SharePoint (Graph API)
  • Mapear linhagem em nível de coluna para datasets com campos PII

Controle de acesso

  • Provisionar roles e grupos no AWS IAM para cada perfil RBAC definido
  • Habilitar column masking no Unity Catalog para campos PII em Silver
  • Ativar audit log do Unity Catalog (Databricks audit logs → Bronze/corp/audit)
  • Configurar AWS Macie para DLP scan automático em Bronze (bucket S3 Bronze)

Compliance LGPD

  • Criar registro de atividades de tratamento (ROPA) para datasets Restrito
  • Implementar processo de atendimento de direitos do titular (exclusão, portabilidade)
  • Testar fluxo de soft-delete + hard-delete com dataset de teste

Comitê de governança

PapelResponsávelCadência
Data Steward — SPSA definir (Colliers SPS)Revisão mensal
Data Steward — REMSA definir (Colliers REMS)Revisão mensal
Data Steward — IMA definir (Colliers Research)Revisão trimestral
Data Owner — PlataformaGabriel Fernandes (Anouk)Contínuo
LGPD OfficerA definir (Colliers Jurídico)Revisão trimestral
Arquiteto de dadosGabriel Fernandes (Anouk)Contínuo

Ver também