Skip to content

Export the documentation

The business dictionary documents tables and views, their columns and sections. Some of these objects are part of the feature store (process views, datasets, managers); others are documented data outside it (source tables and other views). The export lists all of them, each tagged with its side, as an Excel workbook or a self-contained HTML page.

import tdfs4ds

tdfs4ds.export_documentation('documentation.xlsx')                     # everything documented, current
tdfs4ds.export_documentation('documentation.html')                     # same content, one HTML file
tdfs4ds.export_documentation('sources.xlsx', scope='outside')          # only the data outside the store
tdfs4ds.export_documentation('store.html', scope='feature_store')      # only the feature store's objects
tdfs4ds.export_documentation('src.xlsx', databases='DB_SOURCE')        # some databases
tdfs4ds.export_documentation('one.html', objects=['DB_SOURCE.CLAIMS_RAW'])
tdfs4ds.export_documentation('q1.xlsx', as_of='2026-03-31')            # the primary store at a past date

Without a path, the file goes to tdfs4ds.DASHBOARD_REPORT_DIR as tdfs4ds_documentation_<store>[_<scope>][_<date>]_<timestamp>.<xlsx|html>.

In the admin app: Documentation › Coverage, Export the documentation: pick the scope, then XLSX or HTML.

Inside or outside the feature store

Scope Kinds What it means
feature store process view, dataset, Time/FilterManager, feature store internal object Registered in the store's catalogs. The columns of a process view are its features.
outside the feature store table, view, table or view Documented data, not governed features: no data domain, no entity, no refresh history; relationships between columns not certified.

table or view is shown when only a column or a section documents the object, so its type was never recorded.

The consumer agent uses the same rule when it answers (see Documented data outside the feature store).

What it contains

  • Objects: SCOPE, KIND, FEATURE_STORE, DATABASE_NAME, OBJECT_NAME, STATUS, DESCRIPTION, DESCRIPTION_SOURCE, DOCUMENTED_COLUMNS, MISSING_COLUMNS, SECTIONS, READ_BY_FEATURE_PROCESSES (outside objects only: the process views that read the object, directly or through views, from the lineage graph), DOCUMENTED_SINCE.
  • Columns: one row per column, in the table's own order, with COLUMN_ROLE (feature or entity key or other column on a process view, dataset column, column) and STATUS.
  • Sections: one row per section (OVERVIEW, ENTITY, FEATURE_THEMES, … then custom sections) and STATUS.

What is not documented yet, in yellow

The export also lists what has no documentation, with STATUS = missing, an empty text cell, filled yellow in the XLSX and marked missing in the HTML:

  • the process views, the datasets and the tables and views of the lineage graph that exist (checked in DBC) but have no description;
  • every column of those objects (read from DBC) that has no description; a process view's undocumented features and entity keys included;
  • the standard sections a dataset lacks (OVERVIEW, ENTITY, FEATURE_THEMES, BUSINESS_QUESTIONS, INTENDED_AUDIENCE).

Time/FilterManagers and internal objects are listed only when something documents them. Pass include_missing=False for the documented rows only. DBC is read as it is now, also for an export at a past as_of.

Writing the documentation back

Fill in the yellow cells (or correct any text), keep the sheets and headers, save, then:

tdfs4ds.import_documentation('documentation.xlsx')                         # dry run: what would change
tdfs4ds.import_documentation('documentation.xlsx', dry_run=False, author='Jane Doe')
  • Only new or changed texts are written (whitespace ignored); an emptied cell deletes nothing.
  • The texts go through the hand-documentation API, so they are marked written by hand with the author and LLM runs keep them:
  • process view: its description = entity_description; a feature column is written to the process documentation and the business dictionary and copied to the datasets exposing the feature; another column is an entity column (set_process_documentation);
  • dataset: description (also its OVERVIEW section), sections, columns (set_dataset_documentation);
  • table or view outside the feature store: set_object_documentation.
  • Skipped, listed in the report with the reason: rows of a read-only feature store, Time/FilterManagers and internal objects, sections of a process view, reserved sections.
  • The vector index is refreshed once at the end (refresh_index=False to skip it).

The report: written (object, part, name), skipped, unchanged (count), errors (whole message, per object; one failing object does not stop the others) and index.

DESCRIPTION_SOURCE reads written by hand (<editor>), imported, propagated, or, for documentation written before 0.3.2.1, imported (before 0.3.2.1) for a table and generated or unknown (before 0.3.2.1) otherwise.

  • The XLSX has four sheets: About (store, valid time, scope, counts, what "outside" means, links), Objects, Columns and Sections, each an Excel table (filters, banded rows), inside rows first.
  • The HTML has a summary, then one part per side: a list of the objects, then a card per object with its description, sections and columns.

Which stores. At the current valid time, every attached store is read (read-only ones through their public views, so DOCUMENTED_SINCE is empty for them, and FEATURE_STORE names the store). At a past as_of, the primary store's tables are read at that time. A source that could not be read is named, with its whole error, in About and at the top of the HTML.