Skip to content
GitHub

Table

Table manifests describe tables bound to datasets. They control formatting, grouping, scenarios, and optional drilldown views.

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: null
  • dataset – required dataset reference.
  • tableTitle – optional human-readable title.
  • filter – optional filter expression.
  • order – sort key; using scenario names requires them to appear in scenarios. Set to auto to detect from the dataset silently. Default: category.
  • orderDirection – sort direction (asc or desc).
  • 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 by rowgroup and 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, or auto. When set to auto, 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 form d<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 an AUTO_scale warning 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.
  • thereof, partof, columnthereof – drilldown configuration.
---
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"]

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: 1
Column prefixVisualizationDescription
d_ (absolute variance)Horizontal barBar extends left (negative) or right (positive) from center axis. Green for positive-good, red for negative-bad.
dr_ (relative variance)Pin/dot chartThin colored line from axis with dot at end. Arrow for extreme values (>100%). Italic percentage label.
ac, pp, fc, pl (scenarios)IBCS grayscale barsAC: dark gray solid, PP: light gray solid, FC: dark gray hatched, PL: dark gray outlined.
---
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"]

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 width
ValueBehaviour
not set / ""Auto-scale to fit the parent width. Emits an AUTO_scale warning with the applied factor.
noneNo scaling. The table renders at its base font size regardless of available space.
autoAuto-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.
AttributeTypeRequiredDefaultDescription
apiVersionstringyesMust be bino.bi/v1alpha1.
kindstringyesMust be Table.
metadata.namestringyesUnique identifier.
metadata.labelsobjectnoKey-value pairs for categorization and constraint matching.
metadata.annotationsobjectnoArbitrary key-value metadata, not used by the system.
metadata.descriptionstringnoFree-form description.
metadata.constraintsarraynoConditional inclusion rules. See Constraints.
AttributeTypeRequiredDefaultDescriptionSample
spec.datasetstring or objectyesDataset reference (name or inline definition). Provided by the withDataset mixin in the template engine.dataset: revenue_by_customer
spec.tableTitlestringno""Descriptive title displayed above the table.tableTitle: "Top customers"
spec.filterstringno""AlaSQL WHERE clause fragment to filter rows before rendering.filter: "region = 'DE'"
spec.orderstringnocategorySort key. Values: category, categoryindex, rowgroup, rowgroupindex, ac1ac4, fc1fc4, pp1pp4, pl1pl4, auto.order: ac1
spec.orderDirectionstringnoascSort direction. Values: asc, desc.orderDirection: desc
spec.measureScalestringnogreatestSI 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.measureTypestringnovolumeMeasure interpretation. Values: volume, currency.measureType: currency
spec.measureUnitstringno""Unit string displayed in headers.measureUnit: "EUR"
spec.categoryWidthstringnow15Width of the category column. Values: w5, w10, w15, w20, w25, w50, inf.categoryWidth: w25
spec.dataFormatstringnodecimalNumber formatting. Values: percent, decimal.dataFormat: decimal
spec.dataFormatDigitsDecimalintegerno1Number of decimal digits in table cells.dataFormatDigitsDecimal: 2
spec.dataFormatDigitsPercentintegerno2Number of percent digits in table cells.dataFormatDigitsPercent: 1
spec.groupedbooleannofalseGroup rows by rowGroup dimension.grouped: true
spec.showGroupTitlebooleannotrueShow group header rows when grouped.showGroupTitle: true
spec.showMeasureScalebooleannofalseToggle measure unit in table header.showMeasureScale: true
spec.limitintegerno0Maximum rows per group. Extra rows are cumulated as REST. 0 means unlimited.limit: 10
spec.typestringnolistTable type. Values: list, sum, opt, sumnototal, optnototal.type: sum
spec.scenariosstring or arraynoScenario measures to display. Values: ac1ac4, fc1fc4, pp1pp4, pl1pl4, or auto.scenarios: ["ac1", "py1"]
spec.variancesstring or arraynoVariance definitions. Pattern: d<scenarioB>_<scenarioA>_[pos|neg|neu].variances: ["dpy1_ac1_pos"]
spec.barColumnsstring or arraynoColumn names to render as inline IBCS-compliant bar/pin charts.barColumns: ["dac1_pp1_pos"]
spec.barColumnWidthstringnow10Maximum width of inline bar chart columns. Values: w5, w10, w15, w20, w25, w30, w40, w60, w80, w100.barColumnWidth: w20
spec.unitScalingnumberno0.01Pixels per unit for absolute variance bars (d_ prefix columns).unitScaling: 0.02
spec.percentageScalingnumberno0.5Pixels per percentage point for relative variance pins (dr_ prefix columns).percentageScaling: 1
spec.scalestring or numbernoauto-scale with warningProportional 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.internationalisationstringnoi18n namespace for the table. Maps to the internationalisation HTML attribute.internationalisation: "_system"
spec.internationalisationModestringnoi18n mode. Maps to the internationalisation-mode HTML attribute.internationalisationMode: "default"
spec.translationstringnoTranslation key prefix for table labels.translation: "table.revenue"
spec.thereofstring or arrayno[]Drilldown rows (subCategory level).see below
spec.partofstring or arrayno[]Part-of groupings (category level).see below
spec.columnthereofstring, array, or nullnonullColumn-level drilldown configuration.see below
spec:
  thereof:
    - rowGroup: "Revenue"
      category: "Applications"
      subCategory: "Applications-A"
spec:
  partof:
    - rowGroup: "Revenue"
      category: "Applications"
spec:
  columnthereof:
    - scenario: "ac1"
      name: "DE"
      subGroups: ["Berlin", "Hamburg"]