tasks/workstreams/graph-library/initiatives/m2-table-formatting-and-linking-architecture/support-matrix.md

Support Matrix

Purpose

Track table-formatting capabilities seen in major BI tools and define Dataface support status and config mapping.

Legend: - M2: planned for first-pass implementation - Partial: partial/limited support in M2 - Later: defer beyond M2

Cross-Tool Capability Matrix

Capability Seen in other BI tools Dataface status Dataface mapping / approach
Hide/show columns Tableau, Looker, Metabase, Superset M2 style.columns.<id>.hidden
Column header title override Tableau, Looker, Metabase M2 style.columns.<id>.header.title
Column alignment Tableau, Looker, Metabase, Superset M2 style.columns.<id>.header.align, style.columns.<id>.value.align
Text wrap/truncation behavior Tableau, Metabase, Looker Partial Start with style.columns.<id>.value.wrap; advanced truncation modes later
Number formatting Tableau, Looker, Metabase, Superset M2 style.columns.<id>.value.* aligned with Vega-Lite format / formatType (shared Python formatter with charts)
Currency formatting Tableau, Looker, Metabase M2 Same Vega-Lite-shaped fields as charts (exact mapping in schema docs)
Date/time formatting Tableau, Looker, Metabase M2 Same Vega-Lite-shaped fields as charts
Prefix/suffix/unit display Tableau, Looker, Metabase M2 style.columns.<id>.value.number.prefix/suffix
Column-level links Looker, Metabase, Superset M2 style.columns.<id>.link (static URL, template, or column ID)
Text column linked by URL column Common modeling pattern across BI stacks M2 style.columns.<text_col>.link: <url_col> (column ID resolution)
Row-level URL variation Looker/Metabase style row-context navigation M2 Column ID on link and/or URL templates with row column placeholders
Row click action (entire row clickable) Some BI/table libs Later Defer to avoid interaction conflicts in M2
Cell-level arbitrary renderer overrides Table libraries (AG Grid/Tabulator/MUI) Later Avoid arbitrary render hooks in M2 JSON config
In-cell data bars Looker, Metabase, Superset (CELL_BAR) M2 style.columns.<id>.visual.type=bar
In-cell sparklines Table libraries + existing Dataface support M2 style.columns.<id>.visual.type=sparkline
Conditional formatting rules engine Tableau, Looker, Metabase, Superset Later M2 keeps logic in query/data layer
Style from another column (color map) Common via calculated fields / callbacks M2 style.columns.<target>.style.textColor, backgroundColor, … with value = source column ID
Query-side templated style/link helpers (e.g., Jinja-generated CASE columns) Common in SQL-first BI workflows M2 Compute helper columns in query, then reference column IDs in unified style/link fields
Text color from another column Tableau/Looker style conditional output M2 style.columns.<target>.style.textColor: <source_col>
Font weight from another column Table libraries via class/style callbacks M2 style.columns.<target>.style.fontWeight: <source_col>
Heatmap / color scale rule engine Tableau, Looker, Metabase color ranges Later M2 requires precomputed color in data
Header background/font style Tableau, Looker Partial Basic header typography/color in M2; richer theming later
Row/column banding Tableau Partial Basic table-level zebra in style.table.zebra; advanced banding later
Entire-row background from data Superset ENTIRE_ROW, Metabase row styles M2 style.table.rowBackgroundColor: <col> (column-ID-first); query supplies color per row
Border/divider fine controls Tableau Later Keep minimal grid line controls in M2
Totals/subtotals formatting controls Tableau, Looker Later Handle via query + existing table rendering for now
Dashboard-specific table destinations Metabase, Looker Later Out of M2 formatting scope
Detail view/entity drill modal behavior Metabase/Looker drill flows Later Separate drill/navigation initiative

Tool-Specific Notes

Tableau

Looker

Metabase

Superset/Preset

M2 Principle (Current)