Hydra ETL
Build your first job
Hydra DSL1 · Manifestsources.yaml
Grammar element · sources.yaml

sources.yaml is a catalogue, not a build list

Three correct shapes of the file. Walk them, then read what the engine builds from each.

sources.yaml4 steps

      
What the engine builds

The figures below come from running the real engine on this exact manifest.

✓ 30 rows read · 6 written

What sources.yaml is

sources.yaml is the file that declares every input the job may read. One root key, sources, holding a mapping: each key is an identifier you invent, each value is a declaration of one system to read from.

It is one of the three required files of a job, next to destinations.yaml and pipeline.yaml. Only transformations.yaml may be omitted.

What it contains

  • Identifiers — names local to the job. pipeline.from points to one of them; join.right, merge.right and union.right may point to others.
  • Declarations — four keys each: type names the connector, connection says how to reach the system, extract what to read, schema how to type it. Their shape is the subject of the connectors page.

Declared is not opened

This is the idea worth keeping. The file is a catalogue, not a build list. The engine instantiates a connector only when something references its identifier — so a second source sitting in the file untouched is never built, its type never checked, its file never looked for.

Only the referenced entries of the catalogue are opened Three sources are declared. pipeline.from opens the first, join.right opens the second, the third is never instantiated. sources.yaml — the catalogue what references it src_orders src_customers src_never_used never instantiated pipeline.from join.right nothing An unreferenced entry costs nothing at run time — it is simply not built.
Declared on the left, referenced on the right. Only what is referenced is built.

What the engine requires

  • The file must exist and declare at least one entry. It is one of the three required files of a job, next to destinations.yaml and pipeline.yaml.
  • Every referenced identifier must exist. That link is checked from pipeline, which names the two ends of the job.
  • Unreferenced entries are not checked at all. Convenient while you draft, worth a second look before you commit.

Close by

0 / 0 on this page