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(featureorentity key or other columnon a process view,dataset column,column) andSTATUS. - 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=Falseto 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.