Table
Table manifests describe tables bound to datasets.
They control formatting, grouping, scenarios, and optional drilldown views.
Spec outline
Section titled “Spec outline”apiVersion: bino.bi/v1alpha1
kind: Table
metadata:
name: revenue_table
spec:
dataset: revenue_by_customer
tableTitle: "Top customers"
filter: "region = 'DE'"
order: ac1 # category | categoryindex | rowgroup | rowgroupindex | ac1-4 | fc1-4 | pp1-4 | pl1-4 | auto
orderDirection: desc
measureScale: M
measureType: currency # volume | currency
measureUnit: "EUR"
internationalisation: "_system"
internationalisationMode: "default"
translation: "table.revenue.by_customer"
categoryWidth: w25 # w5 | w10 | w15 | w20 | w25 | w50 | inf
dataFormat: decimal # percent | decimal
dataFormatDigitsDecimal: 1
dataFormatDigitsPercent: 1
grouped: true
showGroupTitle: true
showMeasureScale: true
limit: 10
type: list # list | sum | opt | sumnototal | optnototal
scenarios: ["ac1", "py1"] # ac1-4 | fc1-4 | pp1-4 | pl1-4 | auto
variances: ["dpy1_ac1_pos"]
barColumns: [] # columns to render as inline bar charts
barColumnWidth: w10 # w5 | w10 | w15 | w20 | w25 | w30 | w40 | w60 | w80 | w100
scale: auto # "" | none | auto | 0.5 | 1.2 | …
unitScaling: 0.01 # pixels per unit for absolute variance bars
percentageScaling: 0.5 # pixels per percentage for relative variance pins
thereof: []
partof: []
columnthereof: nullFields
Section titled “Fields”dataset– required dataset reference.tableTitle– optional human-readable title.filter– optional filter expression.order– sort key; using scenario names requires them to appear inscenarios. Set toautoto detect from the dataset silently. Default:category.orderDirection– sort direction (ascordesc).measureScale,measureType,measureUnit– control how measures are interpreted and displayed.categoryWidth– width of the category column (w5..w50,inf).dataFormat,dataFormatDigitsDecimal,dataFormatDigitsPercent– number formatting.grouped,showGroupTitle– group rows byrowgroupand optionally show group headers.showMeasureScale– toggle measure unit in table header.limit– maximum rows per group; extra rows are cumulated as REST.type– table type (list,sum,opt,sumnototal,optnototal).scenarios– list of scenario measures, orauto. When set toauto, scenarios are detected from the dataset silently. When left blank (and variances are also blank), they are detected with a warning.variances– list of variance definitions of the formd<scenarioB>_<scenarioA>_[pos|neg|neu].barColumns– list of column names to render as inline IBCS-compliant bar charts instead of numbers.barColumnWidth– maximum width of inline bar/pin chart columns in em (w5..w100). Default:w10.unitScaling– pixels per unit for absolute variance bars (d_ prefix columns). Default: 0.01.percentageScaling– pixels per percentage point for relative variance pins (dr_ prefix columns). Default: 0.5.scale– proportional scaling of the entire table (font size, em-based spacing, SVG bar charts, pins, patterns). All visual dimensions scale together.- not set or
""– auto-scale to fit the parent width; emits anAUTO_scalewarning with the applied factor. "none"– no scaling; render at the base font size regardless of available space."auto"– auto-scale to fit the parent width silently (no warning).- A positive number (
"0.5","1.2", …) – fixed factor applied to the base font size.
- not set or
thereof,partof,columnthereof– drilldown configuration.
Example: Grouped table with drilldown
Section titled “Example: Grouped table with drilldown”---
apiVersion: bino.bi/v1alpha1
kind: Table
metadata:
name: revenue_grouped_table
spec:
dataset: revenue_detail
tableTitle: "Revenue by segment and product"
measureScale: M
measureType: currency
measureUnit: "EUR"
grouped: true
showGroupTitle: true
categoryWidth: w25
type: list
limit: 5
scenarios: ["ac1", "py1"]
variances: ["dpy1_ac1_pos"]
thereof:
- rowGroup: "Revenue"
category: "Applications"
subCategory: "Applications-A"
partof:
- rowGroup: "Revenue"
category: "Applications"
columnthereof:
- scenario: "ac1"
name: "DE"
subGroups: ["Berlin", "Hamburg"]Inline bar chart columns
Section titled “Inline bar chart columns”Render variance and scenario columns as inline IBCS-compliant bar charts using barColumns:
---
apiVersion: bino.bi/v1alpha1
kind: Table
metadata:
name: revenue_with_bars
spec:
dataset: revenue_by_segment
tableTitle: "Revenue variance analysis"
measureScale: M
measureUnit: "EUR"
scenarios: ["ac1", "pp1"]
variances: ["dac1_pp1_pos", "drac1_pp1_pos"]
barColumns: ["dac1_pp1_pos", "drac1_pp1_pos"]
unitScaling: 0.02
percentageScaling: 1Bar chart types
Section titled “Bar chart types”| Column prefix | Visualization | Description |
|---|---|---|
d_ (absolute variance) | Horizontal bar | Bar extends left (negative) or right (positive) from center axis. Green for positive-good, red for negative-bad. |
dr_ (relative variance) | Pin/dot chart | Thin colored line from axis with dot at end. Arrow for extreme values (>100%). Italic percentage label. |
ac, pp, fc, pl (scenarios) | IBCS grayscale bars | AC: dark gray solid, PP: light gray solid, FC: dark gray hatched, PL: dark gray outlined. |
Example: Scenario columns as bar charts
Section titled “Example: Scenario columns as bar charts”---
apiVersion: bino.bi/v1alpha1
kind: Table
metadata:
name: scenario_bars
spec:
dataset: quarterly_data
tableTitle: "Quarterly comparison"
scenarios: ["ac1", "pp1", "fc1"]
barColumns: ["ac1", "pp1", "fc1"]Scaling
Section titled “Scaling”Use scale to shrink or grow the entire table proportionally.
Font size, em-based padding, border widths, SVG bar charts, pin lengths,
dot radii, and hatch patterns all scale together.
---
apiVersion: bino.bi/v1alpha1
kind: Table
metadata:
name: scaled_table
spec:
dataset: revenue_by_segment
tableTitle: "Revenue (auto-fit)"
scenarios: ["ac1", "pp1"]
scale: auto # shrink to fit the available card widthScale modes
Section titled “Scale modes”| Value | Behaviour |
|---|---|
not set / "" | Auto-scale to fit the parent width. Emits an AUTO_scale warning with the applied factor. |
none | No scaling. The table renders at its base font size regardless of available space. |
auto | Auto-scale to fit the parent width silently (no warning). |
0.5, 1.2, … | Fixed factor applied to the base font size. All dimensions scale proportionally. |
Attribute Reference
Section titled “Attribute Reference”Common Metadata
Section titled “Common Metadata”| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
apiVersion | string | yes | — | Must be bino.bi/v1alpha1. |
kind | string | yes | — | Must be Table. |
metadata.name | string | yes | — | Unique identifier. |
metadata.labels | object | no | — | Key-value pairs for categorization and constraint matching. |
metadata.annotations | object | no | — | Arbitrary key-value metadata, not used by the system. |
metadata.description | string | no | — | Free-form description. |
metadata.constraints | array | no | — | Conditional inclusion rules. See Constraints. |
Spec Attributes
Section titled “Spec Attributes”| Attribute | Type | Required | Default | Description | Sample |
|---|---|---|---|---|---|
spec.dataset | string or object | yes | — | Dataset reference (name or inline definition). Provided by the withDataset mixin in the template engine. | dataset: revenue_by_customer |
spec.tableTitle | string | no | "" | Descriptive title displayed above the table. | tableTitle: "Top customers" |
spec.filter | string | no | "" | AlaSQL WHERE clause fragment to filter rows before rendering. | filter: "region = 'DE'" |
spec.order | string | no | category | Sort key. Values: category, categoryindex, rowgroup, rowgroupindex, ac1–ac4, fc1–fc4, pp1–pp4, pl1–pl4, auto. | order: ac1 |
spec.orderDirection | string | no | asc | Sort direction. Values: asc, desc. | orderDirection: desc |
spec.measureScale | string | no | greatest | SI prefix for measure scaling. Values: _, k, M, G, T, P, E, Z, Y, m, μ, n, p, f, a, z, y, GREATEST, LEAST. | measureScale: M |
spec.measureType | string | no | volume | Measure interpretation. Values: volume, currency. | measureType: currency |
spec.measureUnit | string | no | "" | Unit string displayed in headers. | measureUnit: "EUR" |
spec.categoryWidth | string | no | w15 | Width of the category column. Values: w5, w10, w15, w20, w25, w50, inf. | categoryWidth: w25 |
spec.dataFormat | string | no | decimal | Number formatting. Values: percent, decimal. | dataFormat: decimal |
spec.dataFormatDigitsDecimal | integer | no | 1 | Number of decimal digits in table cells. | dataFormatDigitsDecimal: 2 |
spec.dataFormatDigitsPercent | integer | no | 2 | Number of percent digits in table cells. | dataFormatDigitsPercent: 1 |
spec.grouped | boolean | no | false | Group rows by rowGroup dimension. | grouped: true |
spec.showGroupTitle | boolean | no | true | Show group header rows when grouped. | showGroupTitle: true |
spec.showMeasureScale | boolean | no | false | Toggle measure unit in table header. | showMeasureScale: true |
spec.limit | integer | no | 0 | Maximum rows per group. Extra rows are cumulated as REST. 0 means unlimited. | limit: 10 |
spec.type | string | no | list | Table type. Values: list, sum, opt, sumnototal, optnototal. | type: sum |
spec.scenarios | string or array | no | — | Scenario measures to display. Values: ac1–ac4, fc1–fc4, pp1–pp4, pl1–pl4, or auto. | scenarios: ["ac1", "py1"] |
spec.variances | string or array | no | — | Variance definitions. Pattern: d<scenarioB>_<scenarioA>_[pos|neg|neu]. | variances: ["dpy1_ac1_pos"] |
spec.barColumns | string or array | no | — | Column names to render as inline IBCS-compliant bar/pin charts. | barColumns: ["dac1_pp1_pos"] |
spec.barColumnWidth | string | no | w10 | Maximum width of inline bar chart columns. Values: w5, w10, w15, w20, w25, w30, w40, w60, w80, w100. | barColumnWidth: w20 |
spec.unitScaling | number | no | 0.01 | Pixels per unit for absolute variance bars (d_ prefix columns). | unitScaling: 0.02 |
spec.percentageScaling | number | no | 0.5 | Pixels per percentage point for relative variance pins (dr_ prefix columns). | percentageScaling: 1 |
spec.scale | string or number | no | auto-scale with warning | Proportional scaling of the entire table. "" or omitted: auto-scale with warning. "none": no scaling. "auto": auto-scale silently. Positive number: fixed factor. | scale: auto |
spec.internationalisation | string | no | — | i18n namespace for the table. Maps to the internationalisation HTML attribute. | internationalisation: "_system" |
spec.internationalisationMode | string | no | — | i18n mode. Maps to the internationalisation-mode HTML attribute. | internationalisationMode: "default" |
spec.translation | string | no | — | Translation key prefix for table labels. | translation: "table.revenue" |
spec.thereof | string or array | no | [] | Drilldown rows (subCategory level). | see below |
spec.partof | string or array | no | [] | Part-of groupings (category level). | see below |
spec.columnthereof | string, array, or null | no | null | Column-level drilldown configuration. | see below |
Thereof (drilldown rows)
Section titled “Thereof (drilldown rows)”spec:
thereof:
- rowGroup: "Revenue"
category: "Applications"
subCategory: "Applications-A"Partof (category groupings)
Section titled “Partof (category groupings)”spec:
partof:
- rowGroup: "Revenue"
category: "Applications"Columnthereof (column drilldown)
Section titled “Columnthereof (column drilldown)”spec:
columnthereof:
- scenario: "ac1"
name: "DE"
subGroups: ["Berlin", "Hamburg"]