View underlying data
This is a Beta feature. The documentation and feature may change rapidly.
Introduction
View Underlying Data helps you quickly see “what makes up this number” at the most detailed level. By examining the details behind every data point, you can make more informed, data-driven decisions.
Holistics' View Underlying Data requires zero setup and lets you flexibly tailor the underlying data table to your needs.
Supported visualizations
- Line, column, bar, area and combination charts
- Pie, donut, pyramid and funnel charts
- KPI
- Table
- Pivot table
- Gauge chart
Who has access to this feature
Users with permission to explore the associated dataset can view underlying data in a dashboard — typically those with the Explorer, Analyst, or Admin roles.
This feature is not available to users accessing visualizations via shareable links, as they are limited to Viewer role.
To customize the underlying views or disable the feature, you must have either the Analyst or Admin role.
Customize the underlying views
When viewing underlying data, the default table shown may not always be relevant to users' needs. Holistics enables you to customize different views of the underlying data.
For example, when examining the underlying data for the Revenue metric, users can select from different views, such as orders, users, or products.
You can set up the underlying views at dataset level or visualization level. Each view is attached to a metric. A metric can contain multiple views.
In dataset
In Development, open your dataset definition, and add your view definition under: dataset > context > analysis > underlying_data > metric > view
Currently, only dimensions are allowed. Metrics or model measures are not supported in view
Dataset ecommerce {
models: [users, orders]
relationships: [
relationship(orders.user_id > users.id, true)
]
metric revenue {...}
context {
analysis {
underlying_data {
metric revenue {
view list_of_orders {
label: 'List of Orders'
description: ''
fields: [
r(orders.id),
r(orders.created_date),
r(orders.quantity),
r(orders.price),
r(orders.status),
r(users.full_name),
r(products.name),
]
}
view list_of_users {
label: 'List of Users'
description: ''
fields: [
r(users.id),
r(users.sign_up_date),
r(users.full_name),
r(users.gender),
r(users.age),
r(countries.name),
r(cities.name),
r(users.email),
]
}
}
}
}
}
}
In visualization
In Development, open your dashboard definition, and add your view definition under: dashboard > VizBlock > analysis > underlying_data > metric > view
Note that this will override any configuration defined at the dataset level.
block v23: VizBlock {
label: 'AOV overtime'
viz: LineChart {
dataset: ecommerce
calculation aov {
label: 'Average Order Value'
formula: @aql revenue/order_count;;
}
x_axis: VizFieldFull {
ref: r(order_created_date)
}
y_axis {
series {
field: VizFieldFull {
ref: 'aov'
}
}
}
context {
analysis {
underlying_data {
metric aov {
view aov_details {
label: 'Order details'
fields: [
r(order_master.order_id),
r(order_master.order_created_date),
r(order_master.status),
r(order_master.quantity),
r(order_master.price),
]
}
}
}
}
}
}
}
Best practices
- Assign a clear and intuitive
label
to each view to improve the end-user experience. - Arrange fields in the
view
according to the preferred order, as this will determine how they appear in the underlying table. - Use
const
(AML Constant) to define a reusable field list for theview
. It can be utilized across various metrics and visualizations, enhancing consistency and efficiency. See example below:
const order_details = [
r(orders.id),
r(orders.created_date),
r(orders.quantity),
r(orders.price),
r(orders.status),
r(users.full_name),
r(products.name),
]
Dataset ecommerce {
models: [users, orders]
relationships: [
relationship(orders.user_id > users.id, true)
]
metric revenue {...}
context {
analysis {
underlying_data {
metric revenue {
view list_of_orders {
label: 'List of Orders'
description: ''
fields: order_details
}
}
}
}
}
}
Disable the feature
In Development, you can disable the feature for an entire dataset or a specific visualization as follow:
Dataset ecommerce {
models: [...]
relationships: [...]
metric {...}
settings {
analysis_interactions {
view_underlying_data {
enabled: false
}
}
}
}
Note that the most restrictive configuration applies. In other words, for "View underlying data" to be available in a visualization, it must be enabled at both the dataset and visualization levels.
Underlying views as context for AI
Holistics AI uses context
to enhance its capabilities. We encourage you to configure the underlying views, as this benefits both end users and the AI, rather than relying on the default settings. Learn more about Context for AI.