Module 34 of 52 · Data and AI

Catalogues, lineage and active metadata

30 min 5 outcomes Impact analysis walkthrough + ordering challenge 6 sources cited

By the end of this module you will be able to:

  • Distinguish a business glossary from a technical data catalogue and say which question each answers
  • Explain what makes metadata active rather than declared
  • Explain how OpenLineage captures lineage at run time and what column-level lineage adds
  • Run an impact analysis from a lineage graph and produce a short list rather than a freeze
  • Name the real competitor a catalogue faces and design the adoption loop around it

One changed column and everything it touches

The tint follows order_total only as far as the objects that actually read it, so customer_counts and the Customer growth dashboard stay plain and the change becomes a short list of objects rather than a platform-wide freeze.

Changing one source column does not put every downstream object at risk. Lineage held at column level tints only the transform, marts and dashboards that read that field, which is what turns an impact assessment into a short list instead of a freeze.

One changed column and everything it touches A dependency graph read left to right under four headings: Sources, Transform, Marts, Dashboards. Two sources feed one transform by arrows labelled feeds. The changed source, orders_raw with order_total edited, is tinted and carries a red top and left accent; customers_raw is plain. build_sales feeds sales_daily by aggregates, revenue_by_sku by filters, and customer_counts by aggregates. The first two serve the Trading review dashboard; customer_counts serves Customer growth. Every object reading order_total is tinted red with red edges, while customer_counts and Customer growth stay plain with grey edges. A three swatch legend explains the tint. LINEAGE IMPACT · ONE CHANGED COLUMN AND EVERYTHING IT TOUCHES SOURCESTRANSFORMMARTSDASHBOARDS SOURCEorders_raworder_total edited SOURCEcustomers_rawno column changed TRANSFORMbuild_salesreads order_total MARTsales_dailysums order_total MARTrevenue_by_skuuses order_total MARTcustomer_countsno order_total DASHBOARDTrading reviewrecheck the totals DASHBOARDCustomer growthno change needed feeds feeds aggregates filters aggregates serves serves serves the column that changeddownstream that reads itnever reads that columnColumn-level lineage is what keeps a blast radius this small

The catalogue trust loop breaks when an entry goes stale

Publish, discover, use, feed back and refresh close a circuit that keeps entries current, and the one dashed route out leaves at discover when an entry is stale, so a single let-down sends the reader to a colleague instead.

A catalogue keeps its authority only while publish, discover, use, feedback and refresh keep circulating. One stale entry sends the reader to a colleague, and after that they stop searching at all.

The catalogue trust loop breaks when an entry goes stale Four regions. The cycle region holds five cards on a circuit: Publish entry, Discover and Use across the top row, then Feed back and Refresh entry on the bottom row. Arrows read listed with an owner, answers a live question, reader reports a gap, the owner corrects the entry, and republished as current, closing the loop. The bypass region shows a dashed exit from Discover labelled entry is stale, landing on a red-tinted card, Ask a colleague instead, where trust is lost and the catalogue is bypassed. A footer card states that an empty catalogue is worse than none because it teaches distrust. CATALOGUE TRUST LOOP · ONE EXIT BREAKS THE CYCLE STEP 1Publish entryOwner, meaning andfreshness are recorded STEP 2DiscoverA reader searchesbefore building STEP 3UseThe entry answers thequestion being asked STEP 4Feed backThe reader flags whatwas wrong or missing STEP 5Refresh entryThe owner corrects itand dates the change listed with an owner answers a live question reader reports a gap the owner corrects the entry republished as current entry is stale FAIL ROUTEAsk a colleague insteadTrust lost, and thecatalogue is bypassed An empty catalogue is worse than none: it teaches distrustEvery stale entry is evidence that the catalogue is not worth searching.

Five fields every catalogue entry must carry

A consumer can only find, join, trust and lawfully use a dataset once title, schema, owner, refresh schedule and licence are all present, because each answers a different question and any one missing sends them back to the producer.

A useful catalogue entry carries five fields: title + summary, schema reference, owner, refresh schedule, licence. Drop any one and consumers cannot use the dataset without asking the producer. W3C DCAT-3 describes catalogue metadata; schema and ownership conventions still need local governance.

Five fields every catalogue entry must carry Five cards left to right: Title + summary, Schema, Owner (emphasised), Refresh schedule, Licence. Verb arrows defines, named in, refreshed on, released under. A red-accent callout names what a consumer cannot do without each field. CATALOGUE ENTRY · FIVE FIELDS · W3C DCAT-3 1DCAT-3Title +summaryWhat and why2ISO 11179SchemaColumns + types3UK GDQFOwnerNamedaccountablerole4DCAT-3RefreshscheduleWhen dataupdates5DWBP §6LicenceReuse terms definesnamed inrefreshed onreleased under Drop any field and the consumer must ask No title: cannot find it. No schema: cannot join. No owner: cannot ask. No refresh: cannot trust. Nolicence: cannot use.

The catalogue was bought, populated and ignored, and everyone could see it happening

The most common catalogue failure has nothing to do with the product chosen. An organisation buys a tool, points it at every warehouse and lake it owns, and lets it harvest. Within a fortnight the catalogue holds tens of thousands of entries. Searching for customer returns forty tables with near-identical names, no owner, no description beyond the column list the harvester read, and no indication which one anybody actually uses. An analyst tries it twice, gets nothing useful, and goes back to asking a colleague who knows.

That is the honest shape of the adoption problem. The catalogue is not competing with a rival catalogue. It is competing with a person who gives a confident answer in ninety seconds. Any design that does not beat that on speed and trust will lose, and once people have learned to bypass it, winning them back is much harder than getting them the first time.

If a catalogue holds 40,000 harvested tables and a colleague answers the same question in 90 seconds, which one does an analyst use?

Three things make metadata worth maintaining: a place where words are settled, a place where datasets are found, and a record of how data moved that keeps itself current. The first two are frequently confused with each other, and the third is the one that decides whether the other two stay true.

Two artefacts are routinely merged into one project and then satisfy neither audience. Separating them starts with noticing that they answer different questions.

34.1 Glossary and catalogue are different things

A is about language. It is the agreed list of terms an organisation uses, each with one written definition, so that active customer or working age means the same thing in a report, a contract and a model. Its unit is a term. Its owner is usually a business function rather than a platform team. Its success measure is that arguments about numbers stop being arguments about words.

A is about assets. It is a searchable inventory recording what each dataset is, who owns it, where it sits and how far it can be trusted. Its unit is a dataset. Its success measure is that somebody can find and safely reuse a dataset without asking a colleague first.

Underneath both sits a third artefact that gets less attention. A is a managed register in which the definitions of individual data elements are recorded, identified and administered, so that a field can be looked up rather than reinvented per project. ISO/IEC 11179 is the international series for metadata registries, and the framework part sets out how the rest of the series fits together. Throughout that series, metadata means descriptions of data rather than the data itself. Where a glossary settles a business term and a catalogue lists a dataset, a registry pins down the element: its name, its meaning, its permitted values and who is accountable for it.

The interoperability layer for catalogues is DCAT. It became a W3C Recommendation in its third version on 22 August 2024, and it exists so that catalogues published by different organisations can be read and aggregated without bespoke translation for each one.

DCAT is an RDF vocabulary designed to facilitate interoperability between data catalogs published on the Web.

W3C Data Catalog Vocabulary (DCAT) Version 3 - Abstract

DCAT is not a catalogue product and does not tell you how to run one. It is the shared vocabulary that lets a dataset description travel between catalogues, which is why UK and EU public sector portals converge on it. If you are building an internal catalogue, DCAT is the export format to plan for, not the internal model you have to adopt.

The five-field catalogue entry figure at the head of the module sets a minimum shape. Five fields carry the load: title and summary saying what the dataset is and why it exists, columns and types describing its structure, a named accountable role rather than a team mailbox, a refresh schedule saying when the data updates, and a licence stating the reuse terms. Drop any one of those and the consumer has to ask somebody, which is exactly the outcome the catalogue was bought to avoid.

Common misconception

A data catalogue and a business glossary are the same project with different screens.

They have different units, different owners and different failure modes. A glossary fails when two functions keep using one word for two things; the fix is a definition agreed by people with authority over the term. A catalogue fails when entries are unowned and stale; the fix is an accountable owner per asset and a refresh signal. Building both behind one governance forum usually means the glossary work stalls waiting on platform delivery, and the catalogue ships without settled definitions.

Both artefacts share one weakness. A description typed by hand starts decaying the moment the pipeline behind it changes, and nothing in the tool notices.

34.2 Active metadata

is metadata that keeps itself current by reading signals from systems as they run, rather than waiting for someone to update a description by hand. The distinction is not about how modern the tool is. It is about where the fact comes from.

Declared metadata is asserted by a person: this table refreshes daily, this column holds a customer identifier, this dataset is owned by the pricing team. It is true on the day it is written. It becomes false silently, because a pipeline change does not send anyone to edit a catalogue entry. Declared metadata therefore has a half-life, and in most organisations that half-life is a matter of months.

Active metadata is emitted by the running system: the job that last wrote this table finished at 03:14, this table has been read by 6 queries this week and by 400 last quarter, this column was produced by that expression in that transform, this dataset has not been written for 11 days against a stated daily schedule. None of that requires a person to remember anything, and all of it changes the catalogue entry from a claim into an observation.

Three consequences follow. First, staleness becomes detectable rather than discovered: a freshness signal that contradicts a declared schedule is an alert, not an embarrassment six months later. Second, usage signals give you a ranking, so a search for customer can put the table 400 people query above the thirty-nine nobody touches. Third, active metadata is what makes and the catalogue the same system rather than two, because the freshness, volume and schema signals an observability tool watches are the same signals the catalogue needs to stay honest.

Common misconception

Once the catalogue is populated by automated harvesting, the metadata is active.

Harvesting is a one-off read of schemas that produces declared metadata at scale, which is how catalogues end up with tens of thousands of unowned entries. Metadata is active when the running system keeps emitting signals that update the entry: run events, freshness, usage, column-level derivation. The test is simple. If a pipeline changed yesterday, does the catalogue already know, or is it waiting for a human?

The most valuable signal a running system can emit is what it read and what it wrote. Collected consistently, that is lineage, and there is an open standard for the shape of the message.

34.3 Runtime lineage and OpenLineage

is the record of where a piece of data came from and what happened to it on the way, from source system through each transformation to the report someone is looking at. Lineage drawn by hand on a whiteboard is documentation and rots like documentation. Lineage captured at run time is evidence, because it is produced by the same execution that moved the data.

OpenLineage is the open standard for that capture. Rather than each tool inventing its own lineage format, integrations in orchestrators, engines and warehouses emit events in a common shape as jobs start and finish, and any compatible backend can consume them.

The standard defines a generic model of dataset, job, and run entities uniquely identified using consistent naming strategies.

OpenLineage documentation - Overview

Three entities do the work. A dataset is a thing that gets read or written. A job is a recurring definition of work, such as a nightly transform. A run is one execution of that job. Consistent naming is what makes events from an orchestrator, a query engine and a warehouse resolve to the same dataset instead of three unrelated ones, which is the part teams most often get wrong when rolling their own.

Table-level lineage tells you that a report reads a table. tells you whether the column you are about to change is one that report actually uses. The OpenLineage column lineage dataset facet records, for each output column, which input columns produced it and in what way, and it distinguishes a direct dependency, where the output value is derived from the input, from an indirect one, where the input shaped the result through a join, a filter or a sort without being derived into it.

That distinction is the difference between a useful answer and a useless one. A filter predicate on a column means changing that column can change which rows appear, even though the column never shows up in the output. A team that only tracks direct derivation will miss that case and ship a change that silently alters row counts downstream.

Lineage is only worth collecting if somebody uses it to make a decision. The decision it is built for is whether a proposed change is safe.

34.4 Running an impact analysis

means working out what depends on something before you change it, by following lineage downstream from the column, table or job in question. Read the other way, upstream from a report that has gone wrong, the same graph is how you find the cause.

Work through the lineage impact graph at the head of the module. The proposed change edits order_total in orders_raw. Nothing changes in customers_raw. Both feed the build_sales transform, which reads order_total, so the transform is in scope. From there the graph separates. The sales_daily mart sums order_total and is affected. The revenue_by_sku mart uses order_total and is affected. The customer_counts mart does not reference order_total at all and is not. Following the dashboards, the trading review reads the affected marts and needs its totals rechecked; customer growth reads counts only and needs nothing.

The result is a short list: one transform, two marts, one dashboard, with a named owner for each and a specific question to answer. The alternative, in an organisation without column-level lineage, is a change freeze while everyone checks everything, or a change shipped in hope. Teams without lineage do not usually make reckless changes. They quietly stop making changes at all, and the debt accumulates where nobody can see it.

A is one that stops existing consumers working as they did: removing a column, renaming one, tightening a type or changing the meaning of a value. Impact analysis turns that from a category into a list of names. Where a exists between producer and consumers, the lineage graph tells you which contracts the change touches, and the contract tells you what notice the consumers were promised.

Common misconception

If a dashboard reads a table, any change to that table puts the dashboard at risk.

That is table-level reasoning, and it produces an impact list containing almost everything, which teams then ignore. Column-level lineage narrows the question to whether the specific field being changed reaches that dashboard, directly or through a join or filter. In the worked lineage impact graph, one of the two dashboards reads the affected marts and one does not, and only column-level detail separates them.

Loading interactive component...

Everything so far assumes people use the catalogue. That assumption is where most programmes actually fail, and it is worth stating the reason plainly.

34.5 The adoption battle, named honestly

The catalogue trust loop figure at the head of the module has five steps and one fail route. An owner publishes an entry recording meaning, ownership and freshness. A reader searching before building discovers it. The entry answers the question actually being asked, so it gets used. The reader feeds back what was wrong or missing. The owner corrects it and dates the change, and the refreshed entry is published again. The loop holds only while all five steps keep circulating.

The fail route is what happens when a reader searches and the entry does not answer the question: the catalogue is bypassed and the reader asks a colleague instead. That is the honest statement of the adoption battle. The catalogue is not competing with another catalogue. It is competing with a knowledgeable colleague who responds quickly and is usually right. Beating that requires the catalogue to be faster than a message and at least as trustworthy, and a catalogue full of stale or unowned entries is worse than no catalogue, because it teaches people to distrust the one place that was meant to settle questions.

Four design choices follow from taking that competitor seriously.

  1. Curate a subset rather than harvest everything. A hundred entries that are owned, described and current beat forty thousand that are not. Harvest for coverage if you like, but rank and surface only what somebody has signed for.
  2. Name a person, not a team mailbox. A is the named person who looks after a defined set of data day to day, agreeing what fields mean, watching quality and chasing issues to closure. An entry without one is an entry nobody will correct.
  3. Make feedback cost one click. The loop only closes if flagging a wrong entry is easier than working around it. Feedback that requires a ticket will not happen.
  4. Let runtime signals do the maintaining. Freshness, usage and column lineage should arrive from the platform. Reserve human effort for the parts a machine cannot supply: what the dataset is for, what it must not be used for, and who decides.

One further honesty is worth adding. Catalogue adoption is measured badly almost everywhere. Entry counts and coverage percentages measure the harvest, not the outcome. The measures that mean something are how often search leads to a dataset being used, how many entries have been corrected in the last quarter, and whether the median age of an entry is falling.

34.6 Check your understanding

Two departments report different figures for active customers. Both queries were checked and both run correctly against the same warehouse. Which artefact is the right place to resolve this?

A catalogue entry states that a table refreshes daily. Run events show the table has not been written for eleven days. What does this situation illustrate?

A mart does not select a source column at all, but its WHERE clause filters on that column. The source column's type is about to change. How should the impact analysis classify that mart?

A catalogue programme reports 96 per cent coverage of the warehouse and rising, yet analysts continue to ask colleagues for dataset recommendations. What is the most useful reading of these facts?

Loading interactive component...

Core distinctions

  • A business glossary settles terms, a data catalogue lists datasets, and a metadata registry pins down individual data elements under ISO/IEC 11179. Different units, different owners, different failure modes.
  • DCAT is the RDF vocabulary for interoperability between catalogues published on the web, at Recommendation status in version 3 since 22 August 2024. Treat it as the export format to plan for rather than an internal model you must adopt.
  • Declared metadata is asserted by a person and decays silently. Active metadata is emitted by the running system, which makes staleness detectable, gives search a usage ranking, and puts the catalogue and observability on the same signals.
  • OpenLineage standardises runtime lineage capture around dataset, job and run entities with consistent naming, so events from an orchestrator, an engine and a warehouse resolve to the same objects.
  • Column-level lineage separates direct dependencies, where an output is derived from an input, from indirect ones through joins, filters and sorts. Filter-only dependencies move row counts without any column changing, and table-level lineage cannot see them.
  • Impact analysis converts a proposed change into a named short list of affected transforms, marts, dashboards and owners. Without it, teams do not make reckless changes; they stop making changes.
  • A catalogue competes with a knowledgeable colleague answering in ninety seconds. Curate a subset, name a person per entry, make feedback cost one click, let runtime signals maintain freshness, and measure use and correction rather than coverage.

Standards and sources cited in this module

  1. W3C Data Catalog Vocabulary (DCAT) Version 3

    Abstract and section 6.5

    The interoperability vocabulary quoted in Section 34.1, at W3C Recommendation status since 22 August 2024. Defines the distinction between a resource and the catalogue record describing its registration.

  2. OpenLineage

    Overview and column lineage dataset facet

    The open standard for runtime lineage collection used in Sections 34.3 and 34.4, including the direct and indirect dependency distinction that column-level impact analysis relies on.

  3. ISO/IEC 11179-1:2023, Information technology - Metadata registries

    Scope and framework

    The international framework for registering the meaning, representation and administration of data elements, distinguished from glossaries and catalogues in Section 34.1.

  4. W3C PROV-DM: The PROV Data Model

    Agents, entities and activities

    The provenance vocabulary that lineage models reuse, giving a shared way to express who or what produced a dataset and through which activity.

  5. DAMA-DMBOK: Data Management Body of Knowledge, Second Edition

    Metadata Management knowledge area

    Treats catalogues of data assets and their ownership as a core management function, and is the standard reference for the stewardship roles named in Section 34.5.

  6. Open Data Contract Standard

    Schema, quality and service level fields

    Where a contract exists between producer and consumers, it defines the notice a breaking change owes them, which is what an impact list is turned into.

Module 34 of 52 · Data and AI