A courts analytics group has a large ETL process that is hard to debug as one monolithic Azure Machine Learning step. How should they improve maintainability?
Select an answer to reveal the explanation.
Short Explanation
Giant ETL blobs are like one court file with every case stapled together — impossible for you to debug. Break the work into discrete components with typed inputs and outputs instead. Just adding nested MLflow tags, splitting storage across versioned datastore folders, or spinning up separate pipeline endpoints with their own triggers won't give you that clear, debuggable structure.
Full Explanation
Splitting the ETL into discrete Azure ML components with typed inputs and outputs for clearer pipelines is correct because monolithic ETL steps hide failure points and resist unit testing. Courts analytics maintainability improves when extract, transform, validate, and load-style stages become separate components with explicit schemas between them. Typed interfaces make Azure ML pipelines easier to debug, reuse, and assign ownership across municipal data engineers.
Splitting the ETL into discrete Azure ML jobs with nested MLflow tags for stepwise lineage tracking fails because separate jobs with tags only add lineage visibility — they do not create reusable components with enforced typed inputs and outputs that make the pipeline debuggable and testable as a single DAG. Splitting the ETL into discrete Azure ML datastores with versioned folders for isolated stage storage fails because separate storage locations only isolate intermediate files — they do not decompose the transformation logic into testable components with explicit schemas between stages. Splitting the ETL into discrete Azure ML pipeline endpoints with separate triggers for modular execution fails because fragmented endpoints with independent triggers break single-pipeline orchestration and lineage — they add scheduling complexity without providing reusable components with typed inputs and outputs you can debug together.
Exam caveat: prefer composition of small typed components over mega-scripts. “Hard to debug as one monolithic step” is a direct signal to split into components with typed I/O and to retain intermediate outputs for diagnosis. Nested MLflow tagging, separate datastore folders, and separate pipeline endpoints with independent triggers are useful practices elsewhere, but none of them substitute for decomposing the pipeline itself.
Operational check: refactor the large ETL into discrete components, define typed inputs/outputs between stages, retain intermediate outputs for failed-run diagnosis, and confirm a deliberate fault in one stage fails that component clearly without obscuring upstream success.
Prefer to study offline? Printable PDF study book + test engine ($7.50, unofficial). These questions stay free here.