Scamander MDIF¶
Scamander (Metadata-Driven Ingestion Framework, of MDIF) is een multi-platform Python SDK voor metadata-gestuurde data-ingestie en -transformatie op Spark-gebaseerde platforms. Het abstraheert de verschillen tussen Microsoft Fabric en Databricks weg, zodat één ingestie- of transformatiepipeline ongewijzigd op beide draait, of op vanilla PySpark voor lokaal testen.
De Airflow providers van het platform (zie Custom Airflow providers) bepalen wanneer en waar een job draait. MDIF is de library die de eigen code van die job importeert: de notebook-kernel waarop een SparkNotebookOperator-taak draait is een Spark-driver, en meestal is het MDIF dat daarbinnen het daadwerkelijke lezen, transformeren en schrijven doet.
Een paar dingen die MDIF standaard biedt:
Dezelfde Python-code draait zonder aanpassingen op Fabric, Databricks en lokale Spark.
Delta-tabellen worden rechtstreeks aangemaakt vanuit JSON-metadata, inclusief datatypes, nullability, primary/foreign keys en SCD Type-2-historiekolommen.
Een chainable
Transformer-API dekt het volledige bronze→silver→gold-traject: type casting, cleaning, joins, aggregaties, window functions en pivots.QualityCheckerdraait Great Expectations suites tegen elke Spark DataFrame vanuit een config-gestuurd expectation-model, logt de resultaten en werpt optioneel een fout op bij falen.Anonymizerverzorgt anonimisering en pseudonimisering: zes technieken (hash, mask, redact, generalize, encrypt, fake) aangestuurd door een declaratieveAnonymizationConfig, direct te koppelen in deTransformer-chain als.anonymize(config).Elke pipeline-run produceert leesbare console-logs, die automatisch worden doorgestuurd naar gestructureerde machine-logs die worden weggeschreven naar een Delta-tabel.
CSV-, JSON-, Oracle-, SQL Server-, PostgreSQL- en Lakehouse-bronnen worden allemaal benaderd via dezelfde
Source.connect()-interface.Een session-wrapper verzorgt de OAuth 2.0-tokenrefresh voor REST API-calls, zodat je dat niet zelf hoeft te doen.
Architectuur¶
src/scamander/
├── processor/ # Platform (abstract base, auto-detecting factory),
│ # Fabric, Databricks, Spark (vanilla fallback)
├── sources/ # Source (factory) + csv/json/oracle/postgresql/
│ # sqlserver/lakehouse connectors
├── sinks/ # Sink (factory) + lakehouse_sink
├── transformations/ # Transformer (fluent builder), cleaning
│ # (bronze→silver), enrichment (silver→gold), scd
├── quality/ # QualityChecker, QualityReporter
├── anonymization/ # Anonymizer + pure anonymization functions
├── secrets/ # SecretProvider + Vault / Azure Key Vault /
│ # Databricks implementations
├── models/ # Pydantic config models: Config, per-source and
│ # per-sink options, transformation/quality/
│ # anonymization config
├── utils/ # extract_archive, read_json_records
├── logging/ # HumanLogger (stdout), MachineLogger (Delta table)
└── api/ # OAuth2Session (auto-refreshing requests.Session)
Inhoud
- Aan de slag
- Installatie
- Kernconcepten
- Gebruikshandleiding
- 1. Het platform initialiseren
- 2. Een configbestand lezen
- 3. Data lezen uit een bron
- 4. Data wegschrijven naar een Delta-tabel
- 5. Een tabel aanmaken vanuit metadata
- 6. Bronze → Silver-transformaties
- 7. Silver → Gold-transformaties
- 8. SCD Type-2-merges
- 9. Config-gestuurde transformatiepipelines
- 10. Bestandshulpprogramma’s
- 11. Logging
- 12. OAuth 2.0 API-calls
- 13. Datakwaliteitscontroles
- 14. Anonimisering / pseudonimisering
- 15. Secret providers
- API-referentie
- Anonymization
- Api
- Logging
- Models
- Processor
- Quality
- Secrets
- Sources
- Transformations
- Utils
- Platform
- Databricks en Fabric
- Bronconnectoren
- Transformer
- QualityChecker en QualityReporter
- Anonymizer
- Utils
- Loggers
- OAuth2Session
- Secret providers
- Ondersteunde brontypes
- Datatype-mapping
- SCD Type-2 historietracking