Overview

A Custom Script combines one or more datasets into a reusable data artifact through Join, Aggregate, and Filter operations on a visual canvas. Saved Custom Scripts become consumable data sources in the Chart Designer — Reports built on Custom Scripts behave the same as Reports built on raw Datasources, but with the script’s combined / aggregated / filtered output as the data source.

Note: Custom Script is the current platform-wide term. Earlier interface versions and some legacy documentation refer to this same feature as “Data Cube.” The terms refer to the same artifact; product documentation uses “Custom Script” exclusively.

Custom Scripts are authored from Lens → Design → Custom Script and consumed from the Custom Script panel in the Chart Designer. The authoring canvas exposes three operations on the lines between sheet nodes (Join, Aggregate, Filter), each with their own configuration popup. A terminal Result node controls the column names and display names exposed to consuming Reports.

When to use it

  • Combining data from multiple datasets (Joins) before charting — Reports built directly on raw datasets can only work within a single dataset.
  • Pre-aggregating data for Reports that need summary-level granularity rather than row-level detail — speeds up chart rendering and centralizes the aggregation logic.
  • Pre-filtering data so that Reports always see a constrained subset (e.g., active records only, current quarter, specific region) without configuring the filter in every Report.
  • Centralizing complex data preparation that multiple Reports share — change the Custom Script once, all consuming Reports update.

Authoring canvas

The canvas combines source datasets (sheet nodes) through operations (line nodes) into a final Result. Operations compose linearly along the path from each sheet to the Result.

Sheet nodeA dataset from a configured Datasource. Multiple sheets can be added; each becomes an input to subsequent operations.
LineA connection between two nodes. The line carries the Settings icon for adding an operation on the line.
Operation nodeA Join, Aggregate, or Filter node placed on the line. Operations compose — multiple operations can sit along the path from sheets to Result.
Result nodeTerminal node where the Custom Script’s final output schema is configured — column names and display names exposed to Reports.

Operations

Join — combine two datasets

The Join operation combines two sheet nodes (or upstream operation outputs) into a single output by matching rows on a join column. Joins support five types.

Inner JoinReturns only rows where the join column matches in both tables.When only matched records matter — e.g., customers who placed orders.
Left JoinReturns all rows from the left table; matching rows from the right table, NULL otherwise.When the left table is the primary entity and right-table data is supplementary — e.g., all customers, with order data where it exists.
Right JoinReturns all rows from the right table; matching rows from the left table, NULL otherwise.Mirror of Left Join, with the right table as the primary entity.
Cross JoinReturns the Cartesian product — every row from the left table paired with every row from the right.When all combinations are needed — e.g., generating a calendar × product grid.
Full Outer JoinReturns all rows from both tables; matches where the join column matches, NULL otherwise.When data from both tables matters whether or not it has a match — e.g., reconciling two sources to find what’s in one but not the other.

Aggregate — group and summarize

The Aggregate operation groups rows by selected columns and computes summary functions on others.

Column namesColumns to group by and columns to aggregate.
Aggregate positionsThe aggregate function per aggregated column.

Filter — constrain rows

The Filter operation reduces the row set by applying logical conditions.

Logical operatorCombines multiple filter conditions.
ColumnsThe columns the filter operates on.
Filter operatorComparison operator per condition.
ValuesComparison value(s) per condition.
ActionsPer-row actions on the filter rule list.

Result node

The terminal Result node defines the schema of the Custom Script as seen by consuming Reports.

Column NameThe source column from the upstream operation output.
Display NameThe name shown to Designers when consuming the Custom Script in the Chart Designer. Often a more user-friendly name than the raw column name.

Toolbar actions

The canvas toolbar exposes actions that operate on the Custom Script as a whole.

SaveSaves the Custom Script. First save prompts for a name and folder; subsequent saves persist changes.
Save AsCreates a copy of the current Custom Script under a new name. The original is unchanged; the copy appears as a separate item in the project list.
ResetClears all unsaved changes on the canvas. Requires confirmation. Cannot be undone.
RefreshUpdates the data on the canvas with the latest from the source Datasources.
Show PreviewDisplays the Result data based on the current canvas configuration.
ShareShares the Custom Script with other users at a specified role.
EditOpens an existing Custom Script for modification (from the project list).
DeleteRemoves the Custom Script from the project list. Requires confirmation.

Security Tags on Custom Script columns

Custom Script columns can carry Security Tags applied via the Edit Columns popup on a dataset. Designers apply tags that an Account Admin previously configured. Designers cannot create new tags here.

  
User Defined Column TypeCategorization for the column.
Security TagsTags applied to the column. Available tags are those configured by an Account Admin. Tags govern column-level visibility per Maskbits policy.

Custom Script in the Chart Designer

A Custom Script can be created and is consumable in the Chart Designer’s Custom Script panel. The flow is parallel to using a raw Datasource.

Open the Chart Designer’s Custom Script panelThe left side navigator exposes a Custom Script panel alongside the Datasource panel.
Select a Custom ScriptThe dropdown lists previously saved Custom Scripts. The chart can also create a new Custom Script from this surface.
Use columns in Dimension and Measure slotsCustom Script columns drop into Dimension and Measure slots the same way regular Datasource columns do.
Pick a chart typeVisualization icons in the Chart Properties panel choose the chart type, identical to a chart built on a Datasource.

Drill Down with Custom Script charts

Drill Down passes a filter value from a clicked element on the main chart to a filter on the destination chart. When the destination chart is built on a Custom Script, the filter must be wired explicitly because Custom Script columns don’t auto-bind to the main chart’s filter context.

1. Add hidden filterDestination Drill Down chartDrag the column to be filtered into the Filter box. Set the filter to Hidden. Save.
2. Clear stale Drill Down wiringMain (source) chartOn the Columns tab, click the Report or Chart for Drill down dropdown and select None.
3. Re-select destinationMain chartClick the dropdown again and select the Drill Down destination chart.
4. Enable filter on clickMain chartToggle on Apply Filter on Click and select the fields the filter applies to.
5. SaveMain chartThe Drill Down now passes the filter value to the Custom Script’s hidden filter on the destination chart.

The Select None → re-select pattern ensures any stale wiring from previous configurations is cleared. This is the documented workaround for Drill Down filters not working correctly on Custom Script destination charts.

Key behaviors

Operations compose linearly. Multiple operations can sit along the path from a sheet node to the Result. A Join can feed an Aggregate, which can feed a Filter — the canvas supports chained operations. The order is determined by the canvas layout and the connections between nodes.

Cross Join produces Cartesian explosion. Cross Join multiplies row counts (left rows × right rows). For two 10,000-row tables, the result is 100,000,000 rows. Cross Join is rarely the right choice for analytical purposes; when in doubt, use Inner Join.

Refresh ≠ Save. Refresh updates the data shown on the canvas with the latest from source Datasources but doesn’t save any configuration changes. Configuration changes (operations added, join types changed, filters configured) require Save to persist.

Reset is destructive and unrecoverable. Reset clears all unsaved canvas changes with no undo. Save frequently. For experimenting without risk, use Save As to create a working copy.

Custom Script terminology supersedes Data Cube. “Data Cube” is the legacy term for this same artifact. Some interface elements, legacy documentation, and exported metadata may still use “Data Cube”.Security Tags apply at the column level. Security Tags applied here propagate to consuming Reports — a Designer or Viewer who isn’t authorized for a tag won’t see the tagged column in any Report built on the Custom Script. This makes Custom Scripts the right place to enforce column-level visibility centrally rather than per-Report.