# Context Setting
Source: https://docs.explo.co/ai-features/context-setting
Use Context Setting to apply additional contexts for your AI Assistant on a per Report Builder basis.
## Step 1:
Create Context Settings in **Explo Settings > AI Settings > Context**
Dashboard AI is coming soon!
## Step 2:
Create a new context and follow the suggested prompts. These will be passed to your AI Assistant at the start of each conversation, resulting in a tailored conversation with higher quality interactions for your end user.
## Step 3:
Choose this context on a per Report Builder basis using the Report Builder AI Settings.
# Customer Endpoints
Source: https://docs.explo.co/api-reference/customer-api
Collection of endpoints to manage customers
List all of your Customers
Get or create a new Customer
Update an existing Customer.
Delete an existing Customer.
Refresh a Customer token
Permission Customers to the Customer Portal
# Configure Customer Portal
Source: https://docs.explo.co/api-reference/customer-api/configure-portal
POST /api/configure_customer_portal/
This endpoint lets you programmatically permission customer emails to the Customer Portal.
### Body
This is the embed\_id of the dashboard that will be used in the portal.
This is the ID you use to identify this customer in your database that you
provided to explo.
This is a list of strings, where each string is an email allowed to
authenticate in the portal to see the respective dashboard.
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/configure_customer_portal/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"dashboard_embed_id": "Ab123CdefG",
"provided_id": "test_id_1",
"emails": ["apple@explo.co", "orange@explo.co"]
}'
```
```json Response theme={null}
{
"success": 1
}
```
# [Deprecated] Get all customers (v1)
Source: https://docs.explo.co/api-reference/customer-api/customers
GET /api/customers/
This endpoint gets all of your customers. This list will be filtered to the customers your API token has access to.
Filters customers to those with specified parent provided id.
Filters customers to those within the specified hierarchy level.
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
The contents of each customer
The customer token (customerToken or CUSTOMER\_TOKEN) that will be used to identify which customer
is viewing the dashboard. You should save this on your end to use when rendering an embedded
dashboard by passing this token into the web component or iframe. Example usage
[here](/embedding-documentation/dashboard/option-1-web-component/).
The display name you provided for your customer in Explo.
The ID you use to identify this customer in your database that you provided. This is also the ID
you will use to reference your customer in Explo queries or access your customer via the API. For
more information on example usage, check out [this section](/creating-dashboards/variables/tips).
An array of email addresses you provided for your customer.
An array of group tag names that have been assigned to this customer.
The name of the assigned hierarchy level.
If present, the name of the assigned data visibility group.
True if this customer is a demo customer, which means that data panels will include a demo
watermark for the customer. Demo customers do not count towards paid customers.
A set of key-value pairs assigned to this customer. These will be accessible through variables in
the dashboards and SQL editor. More information on properties can be found in [this
section](/creating-dashboards/variables/passing-in-variables).
A properties object based on the provided properties of this customer and any inherited properties
from parent customers.
A set of key-values pairs that map a schema id to the data source that this customer loads data
from. For more information on schemas and data sources, check out [this
section](/database-setup/data-sources-and-schema/).
A schema datasource mapping object based on the parent\_schema\_datasource\_mapping of the customer
and any inherited parent\_schema\_datasource\_mapping from parent customers.
```bash Example Request theme={null}
curl --location --request GET 'https://api.explo.co/api/customers/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token '
```
```json Response theme={null}
{
"success": 1,
"new_customer": true,
"customers": [{
"token": "",
"name": "Example 1",
"provided_id": "example_1",
"is_demo_group": false,
"emails": ["example@example.com"],
"group_tags": ["designers", "engineers"],
"properties": { "filterValue": "value" },
"computed_properties": { "filterValue": "value" },
"access_group": "Development",
"parent_schema_datasource_mapping": {"40": "213": "134": "386"},
"computed_parent_schema_datasource_mapping": {"40": "213": "134": "386"},
"hierarchy_level": "Level 1"
}, {
"token": "",
"name": "Example 2",
"provided_id": "example_2",
"is_demo_group": false,
"emails": ["example2@example.com"],
"group_tags": [],
"properties": { "filterValue": "value" },
"computed_properties": { "filterValue": "value" },
"access_group": "Production",
"parent_schema_datasource_mapping": {"40": "213": "134": "386"},
"computed_parent_schema_datasource_mapping": {"40": "213": "134": "386"},
"hierarchy_level": "Level 2"
}]
}
```
# Get all customers (v2)
Source: https://docs.explo.co/api-reference/customer-api/customers-v2
GET /v2/api/customers/
This endpoint gets all of your customers. This list will be filtered to the customers your API token has access to.
Filters customers to those with specified parent provided id.
Filters customers to those within the specified hierarchy level.
The result page number to request. Defaults to 1.
The result page size. Defaults to 20. The max is 1000
### Response
The total number of results possible.
Response wrapper object. Contains the customers response field.
The contents of each customer
The customer token (customerToken or CUSTOMER\_TOKEN) that will be used to identify which customer
is viewing the dashboard. You should save this on your end to use when rendering an embedded
dashboard by passing this token into the web component or iframe. Example usage
[here](/embedding-documentation/dashboard/option-1-web-component/).
The display name you provided for your customer in Explo.
The ID you use to identify this customer in your database that you provided. This is also the ID
you will use to reference your customer in Explo queries or access your customer via the API. For
more information on example usage, check out [this section](/creating-dashboards/variables/tips).
An array of email addresses you provided for your customer.
An array of group tag names that have been assigned to this customer.
The name of the assigned hierarchy level.
If present, the name of the assigned data visibility group.
True if this customer is a demo customer, which means that data panels will include a demo
watermark for the customer. Demo customers do not count towards paid customers.
A set of key-value pairs assigned to this customer. These will be accessible through variables in
the dashboards and SQL editor. More information on properties can be found in [this
section](/creating-dashboards/variables/passing-in-variables).
A properties object based on the provided properties of this customer and any inherited properties
from parent customers.
A set of key-values pairs that map a schema id to the data source that this customer loads data
from. For more information on schemas and data sources, check out [this
section](/database-setup/data-sources-and-schema/).
A schema datasource mapping object based on the parent\_schema\_datasource\_mapping of the customer
and any inherited parent\_schema\_datasource\_mapping from parent customers.
```bash Example Request theme={null}
curl --location --request GET 'https://api.explo.co/v2/api/customers/?pageSize=2&page=1' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token '
```
```json Response theme={null}
{
"total_count": 10,
"results": {
"customers": [
{
"token": "",
"name": "Example 1",
"provided_id": "example_1",
"is_demo_group": false,
"emails": ["example@example.com"],
"group_tags": ["designers", "engineers"],
"properties": { "filter_value": "value" },
"computed_properties": { "filter_value": "value" },
"access_group": "Development",
"parent_schema_datasource_mapping": { "40": "213", "134": "386" },
"computed_parent_schema_datasource_mapping": { "40": "213", "134": "386" },
"hierarchy_level": "Level 1"
},
{
"token": "",
"name": "Example 2",
"provided_id": "example_2",
"is_demo_group": false,
"emails": ["example2@example.com"],
"group_tags": [],
"properties": { "filter_value": "value" },
"computed_properties": { "filter_value": "value" },
"access_group": "Production",
"parent_schema_datasource_mapping": { "40": "213", "134": "386" },
"computed_parent_schema_datasource_mapping": { "40": "213", "134": "386" },
"hierarchy_level": "Level 2"
}
]
}
}
```
# Delete Customer
Source: https://docs.explo.co/api-reference/customer-api/delete
DELETE /api/delete_customer/
This endpoint deletes an existing Customer. You cannot delete a customer that has children. You must either delete the child customers first or remove the parent relationship from each child.
### Body
This is the current Customer token you have for the Customer you want to
delete
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
```bash Example Request theme={null}
curl --location --request DELETE 'https://api.explo.co/api/delete_customer/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"current_token": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}'
```
```json Response theme={null}
{
"success": 1
}
```
# Generate Embed JWT
Source: https://docs.explo.co/api-reference/customer-api/generate-jwt
POST /api/generate_jwt/
This endpoint generates a JWT (JSON Web Token) with the provided customer id and embed id encoded in it.
This token expires at the provided time, default is 24 hours after creation.
### Body
This is the id you've provided Explo for the customer you'd like to encode in this JWT.
This is the id of the dashboard or report builder you're embedding.
This is the id of the key you'd like to use to encrypt your JWT. This ID can be taken from the
`Data Visibility Groups` section of the settings page. If no key id is provided, Explo will
generate one.
This is the date time that you want your JWT to expire at, in [ISO08601 duration
format](https://en.wikipedia.org/wiki/ISO_8601#Durations). If not provided, this will be set to 24
hours after creation.
If embedding a single chart, provide the id of the chart here. This feature must be enabled by
Explo.
Controls what functionality end users can access in report builders. If `null` or `["*"]`, all
functionality will be allowed. Learn more about configuring read-only report builders
[here](/report-builder-features/read-only).
An optional argument that disables your end user from editing the editable section at the bottom
of the dashboard if enabled.
The domain of the embed, which ensures that the JWT is only valid from that origin.
An optional argument for increased security.
### Response
The JWT you requested. You can use this immediately in your embed.
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/generate_jwt/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"provided_id": "customer_1",
"embed_id": "abcde",
"expiration": "PT1H",
"key_id":"aa111111-1a11-111a-aa11-1aaaa11a1a11",
"rb_allowed_features": ["flt", "srt"],
"disable_editable_section_editing": true,
"embed_origin": "https://your-domain.com/"
}'
```
```json Response theme={null}
{
"success": 1,
"jwt": ""
}
```
# Get Customer
Source: https://docs.explo.co/api-reference/customer-api/get
POST /api/get_customer/
This endpoint gets an existing customer.
### Body
The ID you use to identify this customer in your database. This is also the ID
you use to reference your customer in Explo queries or access your customer
via the API. For more information on example usage, check out [this
section](/creating-dashboards/variables/tips).
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
The contents of the customer
The customer token (customerToken or CUSTOMER\_TOKEN) that will be used to
identify which customer is viewing the dashboard. You should save this on your
end to use when rendering an embedded dashboard by passing this token into the
web component or iframe. Example usage
[here](/embedding-documentation/dashboard/option-1-web-component/).
The display name you provided for your customer in Explo.
The ID you use to identify this customer in your database that you provided.
This is also the ID you will use to reference your customer in Explo queries
or access your customer via the API. For more information on example usage,
check out [this section](/creating-dashboards/variables/tips).
An array of email addresses you provided for your customer.
An array of group tag names that have been assigned to this customer.
The name of the assigned hierarchy level.
If present, the name of the assigned data visibility group.
True if this customer is a demo customer, which means that data panels will
include a demo watermark for the customer. Demo customers do not count towards
paid customers.
A set of key-value pairs assigned to this customer. These will be accessible
through variables in the dashboards and SQL editor. More information on
properties can be found in [this
section](/creating-dashboards/variables/passing-in-variables).
A properties object based on the provided properties of this customer and any
inherited properties from parent customers.
A set of key-values pairs that map a schema id to the data source that this
customer loads data from. For more information on schemas and data sources,
check out [this section](/data-sources/data-sources-and-schema/).
A schema datasource mapping object based on the
parent\_schema\_datasource\_mapping of the customer and any inherited
parent\_schema\_datasource\_mapping from parent customers.
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/get_customer/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"provided_id": "example_1"
}'
```
```json Response theme={null}
{
"success": 1,
"customer": {
"token": "",
"name": "Example 1",
"provided_id": "example_1",
"is_demo_group": false,
"emails": ["example@example.com"],
"group_tags": ["sales"],
"properties": { "filterValue": "value" },
"computed_properties": { "filterValue": "value" },
"access_group": "Production",
"parent_schema_datasource_mapping": {"40": "213": "134": 386"},
"computed_parent_schema_datasource_mapping": {"40": "213": "134": 386"},
"hierarchy_level": "Customer"
}
}
```
# Get or Create Customer
Source: https://docs.explo.co/api-reference/customer-api/get-or-create
POST /api/create_customer/
This endpoint gets or creates a new customer. If a customer with the given provided\_id does not exist, a new customer will be created. The response contains the created or already-existing customer and a flag denoting whether a new customer was created.
### Body
The display name of your customer in Explo.
The ID you use to identify this customer in your database. This is also the ID you will use to
reference your customer in Explo queries or access your customer via the API. For more information
on example usage, check out [this section](/creating-dashboards/variables/tips).
A set of key-values pairs that map a schema id to the data source that this customer loads data
from. For more information on schemas and data sources, check out [this
section](/data-sources/data-sources-and-schema/).
A boolean representing whether this customer is a "demo customer." Setting this to true will make
data panels include a demo watermark for the customer. Demo customers do not count towards paid
customers. Default value is false.
An array of email addresses to add to the customer.
An array of group tag names to assign to the customer. Group tag names must be of existing group
tags, and these can be created with the create\_group\_tag endpoint.
The name of the hierarchy level to assign to the customer. Must be an existing hierarchy level. If
no level is specified, the created customer will be assigned to the root (highest) level of the
hierarchy. If you do not have a hierarchy set up and would like one, reach out to customer
support.
An identifier for a parent customer matching the parent's `provided_id`. If provided, the customer
will be set as a child of the parent customer, and will have its `computed_properties` and
`computed_parent_schema_datasource_mapping` fields inherit values from the parent customer.
Parents must belong to the same data visibility group as their children. Parents must also be at a
strictly higher hierarchy level than their children, so you'll need to explicitly set the
`hierarchy_level_name` to be at a level below the parent's level. You can contact customer support
to set up a hierarchy for your customers.
A set of key-value pairs assigned to this customer. These will be accessible through variables in
the dashboards and SQL editor. More information on properties can be found in [this
section](/creating-dashboards/variables/passing-in-variables).
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
Indicates whether a new customer was created.
The contents of the customer
The customer token (customerToken or CUSTOMER\_TOKEN) that will be used to identify which customer
is viewing the dashboard. You should save this on your end to use when rendering an embedded
dashboard by passing this token into the web component or iframe. Example usage
[here](/embedding-documentation/dashboard/option-1-web-component/).
The display name you provided for your customer in Explo.
The ID you use to identify this customer in your database that you provided. This is also the ID
you will use to reference your customer in Explo queries or access your customer via the API. For
more information on example usage, check out [this section](/creating-dashboards/variables/tips).
An array of email addresses you provided for your customer.
An array of group tag names that have been assigned to this customer.
The name of the assigned hierarchy level.
If present, the name of the assigned data visibility group.
True if this customer is a demo customer, which means that data panels will include a demo
watermark for the customer. Demo customers do not count towards paid customers.
A set of key-value pairs assigned to this customer. These will be accessible through variables in
the dashboards and SQL editor. More information on properties can be found in [this
section](/creating-dashboards/variables/passing-in-variables).
A properties object based on the provided properties of this customer and any inherited properties
from parent customers.
A set of key-values pairs that map a schema id to the data source that this customer loads data
from. For more information on schemas and data sources, check out [this
section](/data-sources/data-sources-and-schema/).
A schema datasource mapping object based on the parent\_schema\_datasource\_mapping of the customer
and any inherited parent\_schema\_datasource\_mapping from parent customers.
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/create_customer/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"provided_id": "example_1",
"name": "Example 1",
"mapping": {"40": "213", "134": "386"},
"properties": {"filterValue": "value"},
"emails": ["example@example.com"],
"group_tags" : ["sales"],
"hierarchy_level_name": "Customer"
}'
```
```json Response theme={null}
{
"success": 1,
"new_customer": true,
"customer": {
"token": "",
"name": "Example 1",
"provided_id": "example_1",
"is_demo_group": false,
"emails": ["example@example.com"],
"group_tags": ["sales"],
"properties": { "filterValue": "value" },
"computed_properties": { "filterValue": "value" },
"access_group": "Production",
"parent_schema_datasource_mapping": {"40": "213": "134": 386"},
"computed_parent_schema_datasource_mapping": {"40": "213": "134": 386"},
"hierarchy_level": "Customer"
}
}
```
# Refresh Customer Token
Source: https://docs.explo.co/api-reference/customer-api/refresh-token
POST /api/refresh_customer_token/
This endpoint refreshes a customer token. This is useful when you want to force a customer token to rotate because an existing one may be compromised.
### Body
This is the current customer token you have for the customer that you want to
rotate.
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
The contents of the customer
The customer token (customerToken or CUSTOMER\_TOKEN) that will be used to
identify which customer is viewing the dashboard. You should save this on your
end to use when rendering an embedded dashboard by passing this token into the
web component or iframe. Example usage
[here](/embedding-documentation/dashboard/option-1-web-component/).
The display name you provided for your customer in Explo.
The ID you use to identify this customer in your database that you provided.
This is also the ID you will use to reference your customer in Explo queries
or access your customer via the API. For more information on example usage,
check out [this section](/creating-dashboards/variables/tips).
An array of email addresses you provided for your customer.
True if this customer is a demo customer, which means that data panels will
include a demo watermark for the customer. Demo customers do not count towards
paid customers.
A set of key-value pairs assigned to this customer. These will be accessible
through variables in the dashboards and SQL editor. More information on
properties can be found in [this
section](/creating-dashboards/variables/passing-in-variables).
A properties object based on the provided properties of this customer and any
inherited properties from parent customers.
A set of key-values pairs that map a schema id to the data source that this
customer loads data from. For more information on schemas and data sources,
check out [this section](/database-setup/data-sources-and-schema/).
A schema datasource mapping object based on the
parent\_schema\_datasource\_mapping of the customer and any inherited
parent\_schema\_datasource\_mapping from parent customers.
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/update_customer/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"current_token": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}'
```
```json Response theme={null}
{
"success": 1,
"customer": {
"token": "",
"name": "Example 1",
"provided_id": "example_1",
"is_demo_group": false,
"emails": ["new_email@example.com"],
"properties": { "filterValue": "new_value" },
"computed_properties": { "filterValue": "new_value" },
"parent_schema_datasource_mapping": {"40": "213": "134": 386"},
"computed_parent_schema_datasource_mapping": {"40": "213": "134": 386"}
}
}
```
# Update Customer
Source: https://docs.explo.co/api-reference/customer-api/update
POST /api/update_customer/
This endpoint updates an existing customer. Provided\_id is required to request a customer, and only the other provided fields will be updated.
### Body
This is the ID you use to identify this customer in your database.
Set this field if you'd like to change the ID used to identify the customer in the database. This
will replace the current `provided_id`.
This is the name of the customer.
This is a JSON mapping of schema id to either the data source that this user group should be
associated with.
Set this boolean parameter to true to make data panels include a demo watermark for the customer.
Demo customers do not count towards paid user groups. Default value is false.
This is a JSON object for properties assigned to this customer. These will be accessible through
variables in the dashboards and SQL editor
This is an array of email addresses to add to the customer.
An array of group tag names to assign to the customer. This will override previous group tag
assignment if specified. Supplying the empty array will remove all group tags. Group tag names
must be of existing group tags, and these can be created with the create\_group\_tag endpoint.
The name of the hierarchy level to assign to the customer. Must be an existing hierarchy level.
This will override previous assignment. If you do not have a hierarchy set up and would like one,
reach out to customer support.
This is an identifier for a parent customer matching the parent's `provided_id`. If provided, the
customer will be set as a child of the parent customer, and will have its `computed_properties`
and `computed_parent_schema_datasource_mapping` fields inherit values from the parent customer.
Note that parents must be at a strictly higher hierarchy level than their children. You can
contact customer support to set up a hierarchy for your customers.
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
The contents of the customer
The customer token (customerToken or CUSTOMER\_TOKEN) that will be used to identify which customer
is viewing the dashboard. You should save this on your end to use when rendering an embedded
dashboard by passing this token into the web component or iframe. Example usage
[here](/embedding-documentation/dashboard/option-1-web-component/).
The display name you provided for your customer in Explo.
The ID you use to identify this customer in your database that you provided. This is also the ID
you will use to reference your customer in Explo queries or access your customer via the API. For
more information on example usage, check out [this section](/creating-dashboards/variables/tips).
An array of email addresses you provided for your customer.
An array of updated group tag names that have been assigned to this customer
The name of the assigned hierarchy level.
If present, the name of the assigned data visibility group.
True if this customer is a demo customer, which means that data panels will include a demo
watermark for the customer. Demo customers do not count towards paid customers.
A set of key-value pairs assigned to this customer. These will be accessible through variables in
the dashboards and SQL editor. More information on properties can be found in [this
section](/creating-dashboards/variables/passing-in-variables).
A properties object based on the provided properties of this customer and any inherited properties
from parent customers.
A set of key-values pairs that map a schema id to the data source that this customer loads data
from. For more information on schemas and data sources, check out [this
section](/database-setup/data-sources-and-schema/).
A schema datasource mapping object based on the parent\_schema\_datasource\_mapping of the customer
and any inherited parent\_schema\_datasource\_mapping from parent customers.
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/update_customer/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"provided_id": "example_1",
"properties": {"filterValue": "new_value"},
"emails": ["new_email@example.com"],
"group_tags": ["engineers", "sales"],
"hierarchy_level_name": "Level 1"
}'
```
```json Response theme={null}
{
"success": 1,
"customer": {
"token": "",
"name": "Example 1",
"provided_id": "example_1",
"is_demo_group": false,
"emails": ["new_email@example.com"],
"group_tags": ["engineers", "sales"],
"properties": { "filterValue": "new_value" },
"computed_properties": { "filterValue": "new_value" },
"access_group": "Production",
"parent_schema_datasource_mapping": {"40": "213": "134": 386"},
"computed_parent_schema_datasource_mapping": {"40": "213": "134": 386"},
"hierarchy_level": "Level 1"
}
}
```
# End User Endpoints
Source: https://docs.explo.co/api-reference/end-user-api
Collection of endpoints to manage end users
The End User API is now deprecated and has been replaced by the Customer API.
Get or create a new user
Update an existing end user.
Delete an existing end user.
# Delete End User
Source: https://docs.explo.co/api-reference/end-user-api/delete
DELETE https://api.explo.co/api/delete_end_user/
The End User API is now deprecated and has been replaced by the Customer API.
### Body
The ID of the end user you provided in creation
The ID of the end user group the end user belongs to
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
```bash Example Request theme={null}
curl --location --request DELETE 'https://api.explo.co/api/delete_end_user/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"provided_id": "example_1"
"customer_id": 123
}'
```
```json Response theme={null}
{
"success": 1
}
```
# Get or Create End User
Source: https://docs.explo.co/api-reference/end-user-api/get-or-create
POST https://api.explo.co/api/create_end_user/
The End User API is now deprecated and has been replaced by the Customer API.
This endpoint gets or creates an end user. If the provided\_id does not exist for the provided `customer_id`, a new end user will be created and information about the user will be sent back. If the provided\_id does exist for the `customer_id`, the existing user will be returned.
### Body
The ID you use to identify this end user in your database
The email adress of your end user
The ID of the end user group the new user should belong to
A json mapping of key values you can use to load user-specific data into your
dashboards. Any key value is valid, but header and footer are reserved keys
that you can use to load html to display in the header and footer of your
email
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
The data of the end user
This was the provided\_id provided in the request body
This was the email provided in the request body
This was the set of attributes provided in the request body
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/create_end_user/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"provided_id": "example_1",
"email": "example@explo.co",
"customer_id": 123
}'
```
```json Response theme={null}
{
"success": 1,
"end_user": {
"provided_id": 3,
"email": "example@explo.co",
"attributes": "{'name': 'Example', 'header': ''"
}
}
```
# Update End User
Source: https://docs.explo.co/api-reference/end-user-api/update
POST https://api.explo.co/api/update_end_user/
The End User API is now deprecated and has been replaced by the Customer API.
### Body
The ID of the end user you provided in creation
The ID of the end user group the end user belongs to
A new email to associate the end user with
A new set of attributes to associate the end user with
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
The data of the end user
This was the provided\_id provided in the request body
This was the email provided in the request body
This was the set of attributes provided in the request body
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/update_end_user/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"provided_id": "example_1",
"email": "example@explo.co",
"customer_id": 123
}'
```
```json Response theme={null}
{
"success": 1,
"end_user": {
"provided_id": 3,
"email": "example@explo.co",
"attributes": "{'name': 'Example', 'header': ''"
}
}
```
# End User Group Endpoints
Source: https://docs.explo.co/api-reference/end-user-group-api
Collection of endpoints to manage end user groups
The End User Group API is now deprecated and has been replaced by the Customer
API. Each End User Group entity corresponds to a Customer entity, with its
`user_group_id` corresponding to a Customer `customer_id`.
Get or create a new user group
Update an existing user group.
Delete an existing user group.
Refresh a user group token
# Delete User Group
Source: https://docs.explo.co/api-reference/end-user-group-api/delete
DELETE /api/delete_user_group/
The End User Group API is now deprecated and has been replaced by the Customer
API. Each End User Group entity corresponds to a Customer entity, with its
`user_group_id` corresponding to a Customer `customer_id`.
This API method has been replaced by Delete Customer.
This endpoint deletes an existing user group.
### Body
This is the current user group token you have for the user group you want to
delete
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
```bash Example Request theme={null}
curl --location --request DELETE 'https://api.explo.co/api/delete_user_group/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"current_token": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}'
```
```json Response theme={null}
{
"success": 1
}
```
# Get or Create User Group
Source: https://docs.explo.co/api-reference/end-user-group-api/get-or-create
POST /api/create_user_group/
The End User Group API is now deprecated and has been replaced by the Customer
API. Each End User Group entity corresponds to a Customer entity, with its
`user_group_id` corresponding to a Customer `customer_id`.
This API method has been replaced by Get or Create Customer.
This endpoint gets or creates a new user group. If the user\_group\_id does not exist, a new user group will be created and information about the group will be sent back. If the user\_group\_id exists, no action will be taken but the same information about the group will be sent back. There will be a flag in the response indicating if a new user group was created.
### Body
This is the name of the user group.
This is the ID you use to identify this user group in your database.
This is a JSON mapping of schema id to either the data source that this user
group should be associated with or id of the datasource you provided when
creating it.
Set this boolean parameter to true to make data panels include a demo
watermark for the user group. Demo user groups do not count towards paid user
groups. Default value is false.
This is a JSON object for properties assigned to this user group. These will
be accessible through variables in the dashboards and SQL editor
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
Indicates whether a new user group was created.
The contents of the user group
This is Explo's internal ID for this user group. You don't need to record this
information, since you will not need to use it.
This is the user group token (customerToken or CUSTOMER\_TOKEN) that will be
used to identify which user group is viewing the dashboard. You should save
this on your end to use when rendering an embedded dashboard.
This is the name of the user group provided in the request body.
This is the user\_group\_id provided in the request body.
If set to true, data panels displayed for the user group will include a demo
watermark.
This is the properties object if it was provided in the request body
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/create_user_group/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"user_group_id": "example_1",
"name": "Example 1",
"mapping": {"40": "213", "134": "386"},
"properties": {"filterValue": "value"}
}'
```
```json Response theme={null}
{
"success": 1,
"new_user_group": true,
"user_group": {
"team_id": 3,
"token": "",
"name": "Example 1",
"provided_id": "example_1",
"is_demo_group": false
}
}
```
# Refresh User Group Token
Source: https://docs.explo.co/api-reference/end-user-group-api/refresh-token
POST /api/refresh_user_group_token/
The End User Group API is now deprecated and has been replaced by the Customer
API. Each End User Group entity corresponds to a Customer entity, with its
`user_group_id` corresponding to a Customer `customer_id`.
This API method has been replaced by Refresh Customer Token.
This endpoint refreshes a user group token. This is useful when you want to force a user group token to rotate because an existing one may be compromised.
### Body
This is the current user group token you have for the user group that you want
to rotate.
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
The contents of the user group
This is Explo's internal ID for this user group. You don't need to record this
information, since you will not need to use it.
This is the user group token (customerToken or CUSTOMER\_TOKEN) that will be
used to identify which user group is viewing the dashboard. You should save
this on your end to use when rendering an embedded dashboard.
This is the name of the user group provided in the request body.
This is the user\_group\_id provided in the request body.
This is the environment tag of the user group. Possible values are 'Customer'
and 'Testing'. User group id's must be unique to each environment, so you can
not create multiple user groups with with same id. If you have a production
customer and a test user group with the same id, you will be required to label
one as 'Customer' and another as 'Testing'
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/refresh_user_group_token/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"current_token": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}'
```
```json Response theme={null}
{
"success": 1,
"user_group": {
"team_id": 3,
"token": "",
"name": "Example 1",
"provided_id": "example_1"
}
}
```
# Update User Group
Source: https://docs.explo.co/api-reference/end-user-group-api/update
POST /api/update_user_group/
The End User Group API is now deprecated and has been replaced by the Customer
API. Each End User Group entity corresponds to a Customer entity, with its
`user_group_id` corresponding to a Customer `customer_id`.
This API method has been replaced by Update Customer.
This endpoint updates an existing user group.
### Body
This is the name of the user group.
This is the ID you use to identify this user group in your database.
This is a JSON mapping of schema id to either the data source that this user
group should be associated with or id of the datasource you provided when
creating it.
Set this boolean parameter to true to make data panels include a demo
watermark for the user group. Demo user groups do not count towards paid user
groups. Default value is false.
This is a JSON object for properties assigned to this user group. These will
be accessible through variables in the dashboards and SQL editor
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
The contents of the user group
Indicates whether a new user group was created.
This is the user group token (customerToken or CUSTOMER\_TOKEN) that will be
used to identify which user group is viewing the dashboard. You should save
this on your end to use when rendering an embedded dashboard.
This is the name of the user group provided in the request body.
This is the user\_group\_id provided in the request body.
If set to true, data panels displayed for the user group will include a demo
watermark.
This is the properties object if it was provided in the request body
This is the environment tag of the user group. Possible values are 'Customer'
and 'Testing'
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/update_user_group/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"user_group_id": "example_1",
"name": "Example 1",
"mapping": {"40": "213", "134": "386"},
"properties": {"filterValue": "value"}
}'
```
```json Response theme={null}
{
"success": 1,
"user_group": {
"team_id": 113,
"token": "",
"name": "Example 1",
"provided_id": "example_1",
"is_demo_group": false
}
}
```
# Explo's Authentication
Source: https://docs.explo.co/api-reference/explos-authentication
Explo utilizes token-based authentication. To correctly make a call to the API,
you must include the Explo-Authorization header with a valid team token. Below
is an example of what the header would look like, replacing with a valid token.
```bash theme={null}
'Explo-Authorization': 'Token '
```
## API Tokens
You can create multiple API tokens with different levels of permissions and
access. On your team settings page, you can generate new tokens, refresh a
current token value, delete tokens, and edit these permissions.
The API Token you authenticate your request with is associated with a [Data Visibility Group](/managing-permissions/visibility-groups). When creating an customer, the token used will determine which visibility group the customer is added to. When otherwise getting or modifying customers, only groups in the associated visibility group will be accessible.
### Permissions
Currently Explo supports two types of API Token permissions, read-only and
read-write. Granting a token read-write permissions will allow it to create,
delete, and edit any customer in its visibility group, while granting a token
read-only permissions will only allow it to pull those customers.
For more information about how API tokens interact with their visibility group, see
[the visibility groups documentation](/managing-permissions/visibility-groups).
# Group Tag Endpoints
Source: https://docs.explo.co/api-reference/group-tag-api
Collection of endpoints to manage group tags
List all of your Group Tags
Create a new group tag
Rename an existing group tag
Delete an existing group tag
# Create Group Tag
Source: https://docs.explo.co/api-reference/group-tag-api/create
POST /api/create_group_tag/
This endpoint creates a new group tag. If a group tag with the given name already exists, an error will occur.
The group tag will belong to the team associated with your Authorization Token.
### Body
The display name of your group tag in Explo.
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
The contents of the Group Tag.
The group tag's display name.
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/create_group_tag/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"name": "tag"
}'
```
```json Response theme={null}
{
"success": 1,
"group_tag": {
"name": "tag"
}
}
```
# Delete Group Tag
Source: https://docs.explo.co/api-reference/group-tag-api/delete
POST /api/delete_group_tag/
This endpoint deletes an existing Group Tag.
### Body
This is the display name of the group tag to delete. An error will be thrown
if the group tag does not exist.
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/delete_group_tag/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"name": "tag"
}'
```
```json Response theme={null}
{
"success": 1
}
```
# Get all group tags
Source: https://docs.explo.co/api-reference/group-tag-api/group-tags
GET /api/group_tags/
This endpoint gets all of your group tags. This list will be filtered to the group tags your API token has access to.
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
The contents of each group tag object
The group tag's display name.
```bash Example Request theme={null}
curl --location --request GET 'https://api.explo.co/api/group_tags/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token '
```
```json Response theme={null}
{
"success": 1,
"group_tags": [
{
"name": "marketing"
},
{
"name": "designer"
},
{
"name": "engineers"
},
{
"name": "sales"
}
]
}
```
# Rename Group Tag
Source: https://docs.explo.co/api-reference/group-tag-api/rename
POST /api/rename_group_tag/
This endpoint renames a group tag.
### Body
The current display name of the group tag you'd like to rename.
The new display name of the group tag.
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
The contents of the Group Tag.
The group tag's new display name.
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/rename_group_tag/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"name": "tag",
"new_name": "new tag"
}'
```
```json Response theme={null}
{
"success": 1,
"group_tag": {
"name": "new tag"
}
}
```
# Overview
Source: https://docs.explo.co/api-reference/overview
For all api requests, you must have a trailing slash (/) at the end of your
request. Otherwise, your request will be rejected as 'Method not allowed'
## API Endpoints
### Customer API
Use the Customer API to programmatically pull customers when embedding your dashboards. This allows you to use Explo without necessarily storing any of our tokens in your database, keeping your integration more clean and flexible. You'll reference your customer both in the API and in your Explo queries using a provided\_id, which is the id you give us when creating a customer. Usually, this is the id of your customer in your own database.
The API Token you authenticate your request with is associated with a [Data Visibility Group](/managing-permissions/visibility-groups). Only customers in that visibility group will be pulled.
### Export Dashboard API
Use the Export Dashboard API to programmatically pull PDF or image screenshots of your dashboards.
### Resource API
The Resource API was formerly referred to as the Dashboard API.
Use the Resource API to pull a list of all your Explo resources and their various attributes.
### Partners API
To get set up with the Partners API, reach out to Explo Sales.
Use the Partners API to allow your customers to easily create accounts in Explo with your data sources connected.
### End User Group API
The End User Group API is now deprecated and has been replaced by the Customer
API. Each End User Group entity corresponds to a Customer entity, with its
`user_group_id` corresponding to a Customer `customer_id`.
Use the End User Group API to programmatically pull end user groups when embedding your dashboards. This allows you to use Explo without necessarily storing any of our tokens in your database, keeping your integration more clean and flexible.
The API Token you authenticate your request with is associated with a [Data Visibility Group](/managing-permissions/visibility-groups). Only end user groups in that visibility group will be pulled.
### End User API
The End User API is now deprecated and has been replaced by the Customer API.
Use the End User API to programmatically manage individual end users information.
# Partners Endpoints
Source: https://docs.explo.co/api-reference/partners-api
Endpoints to allow your users to easily create accounts with your databases in Explo
To get access to the Partners API, reach out to Explo Sales.
Create a team in Explo and automatically connect a data source to that
workspace
# Connect to Explo
Source: https://docs.explo.co/api-reference/partners-api/connect
POST /api/partners/connect
### Body
The email of your user. When the team is created, they'll get an email
inviting them to Explo.
The name of the team to create.
A JSON representing credentials that Explo will use to create the data source
for the new team. For typings corresponding to your database, reach out to
Explo Support.
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/partners/connect' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"email": "customer@site.com",
"team_name": "Customer Team",
"connection_info": "{\"@type\": \"database_type\", \"configuration\": {}}"
}'
```
```json Response theme={null}
{
"success": 1
}
```
# Resource Endpoints
Source: https://docs.explo.co/api-reference/resource-api
Collection of endpoints to manage resources
Get all dashboards belonging to the team
Get all report builders belonging to the team
Publish a dashboard or report builder to an environment
Email a screenshot of your dashboard
Email a dashboard report, configured in Explo
Copy an editable dashboard section’s metadata from one customer to another
# Email Dashboard Report
Source: https://docs.explo.co/api-reference/resource-api/email-report
POST /api/dashboard/report
This endpoint sends a formatted email that contains the dashboard screenshot in the email itself. The email format is configured in the Explo application. This endpoint is rate limited based on the corresponding docs [here](/security/security-faqs#do-explos-api-endpoints-have-a-rate-limit).
If a dashboard version is tagged with an `email` environment tag, that version
will be used for the emails. Otherwise, the version tagged with `production`
will be used. If both do not exist, then it will use the most recent version or draft.
### Body
This is your id for your customer that you'd like to screenshot for. This controls what data the
dashboard loads with in the screenshot.
This is the token you use to embed your dashboard in your site. You can find this on the
Dashboards page in Explo.
The email you'd like this screenshot to be send to.
Set subject for report email. By default this set to Dashboard Email Report.
Set variables for your report. These will function the same way as variables you provide in your
embed.
A custom url for the screenshot to link to. If not provided, it will use Explo's share link.
### Response
Indicates whether the call was successful initiated. 1 if successful, 0 if not.
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/dashboard/report' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"provided_id": "123",
"dashboard_embed_id": "abc123",
"email": "customer@site.com",
"subject": "Dashboard Email Report",
"variables": {
"url": "https://google.com",
"date_range":{"startDate": "2024-04-09","endDate": "2024-04-12"}
},
"custom_url": "https://google.com"
}'
```
```json Response theme={null}
{
"success": 1
}
```
# List Team Dashboards
Source: https://docs.explo.co/api-reference/resource-api/get-dashboard
GET /api/dashboard
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
The list of dashboards in your team's workspace
Your team ID
Name of dashboard
ID of the dashboard for embedding
Attribute values assigned to dashboard
The name of the attribute
The value assigned for the attribute
```bash Example Request theme={null}
curl --location --request GET 'https://api.explo.co/api/dashboard/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token '
```
```json Response theme={null}
{
"success": 1,
"dashboards": [
{
"team_id": 1,
"name": "Example Dashboard",
"embed_id": "vcjTgL2wdX",
"attributes": [
{
"attribute": "Team",
"value": "Engineering"
}
],
"is_drilldown": false
},
{
"team_id": 1,
"name": "Production Dashboard",
"embed_id": "JQvCTLT76V",
"attributes": [
{
"attribute": "Status",
"value": "Ready"
},
{
"attribute": "Team",
"value": "Marketing"
}
],
"is_drilldown": true
}
]
}
```
# List Team Report Builders
Source: https://docs.explo.co/api-reference/resource-api/list-report-builders
GET /api/reports
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
The list of report builders in your team's workspace
Name of report builder
ID of the report builder for embedding
```bash Example Request theme={null}
curl --location --request GET 'https://api.explo.co/api/reports/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token '
```
```json Response theme={null}
{
"success": 1,
"reports": [
{
"name": "Example Report",
"embed_id": "vcjTgL2wdX"
},
{
"name": "Production Report",
"embed_id": "JQvCTLT76V"
}
]
}
```
# Publish to Environment
Source: https://docs.explo.co/api-reference/resource-api/publish-resource
POST /api/publish
### Body
The embed id of your resource.
The type of resource you're publishing - must be either "dashboard" or
"report"
The name of the environment you're publishing to.
The version number of the resource that you want to publish.
### Response
Indicates whether the call was successful. 1 if successful, 0 if not.
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/publish/' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token '
--data-raw '{
"embed_id": "123",
"resource_type": "report",
"environment": "production",
"version_number": 15
}'
```
```json Response theme={null}
{
"success": 1
}
```
# Email Dashboard Screenshot as Attachment
Source: https://docs.explo.co/api-reference/resource-api/screenshot-dashboard
POST /api/dashboard/screenshot
This endpoint takes a screenshot of the dashboard and emails it as an attachment. This endpoint is rate limited based on the corresponding docs [here](/security/security-faqs#do-explos-api-endpoints-have-a-rate-limit).
This API will send the most recent version or draft of this dashboard.
### Body
This is your id for your customer that you'd like to screenshot for. This
controls what data the dashboard loads with in the screenshot.
This is the token you use to embed your dashboard in your site. You can find
this on the Dashboards page in Explo.
The email you'd like this screenshot to be send to. If this is not provided,
then a short-lived download link to your screenshot will be returned instead.
The name you'd like the file to be called in the download. By default, this is
set to dashboard\_screenshot\_download.\{png | pdf}.
The file type for the screenshot. Must be "image" (for a png) or "pdf" (for a
pdf). By default, this is "image."
Set subject for screenshot email. By default this is set to Requested Data
Export:
\{download\_file\_name} \{export\_type}.
Set variables for your screenshot. These will function the same way as
variables you provide in your embed.
Width in pixels for the screenshot. Must be greater than 0
### Response
Indicates whether the call was successfully initiated. 1 if successful, 0 if not.
If an email is not provided, this will be the download url for your
screenshot.
```bash Example Request theme={null}
curl --location --request POST 'https://api.explo.co/api/dashboard/screenshot' \
--header 'Content-Type: application/json' \
--header 'Explo-Authorization: Token ' \
--data-raw '{
"provided_id": "123",
"dashboard_embed_id": "abc123",
"email": "customer@site.com",
"download_file_name": "your_dashboard_screenshot",
"export_type": "image",
"subject": "Requested Data Export: your_dashboard_screenshot image",
"variables": {"example_var": 123}
}'
```
```json Response theme={null}
{
"success": 1
}
```
# Dataset Editor
Source: https://docs.explo.co/creating-dashboards/dataset-editor
The dataset editor has recently been revamped. The old version looked like this:
The updated dataset editor is now on the left configuration panel. You can navigate to it by clicking on the "Datasets" Tab.
## Dataset Management
You can perform the following actions from the datasets panel:
* Add a dataset (and select its schema)
* Edit a dataset's name
* Delete a dataset
* A dataset can only be deleted if it is not tied to any charts or filters
* Select a dataset to open up the editor
## Dataset Editor
Once a dataset has been selected, you can use the editor to create, edit, execute, and save a query.
You can also format the data generated.
## Query
### Raw Query
This is where you write your raw SQL query to be executed.
You can perform the following actions on the query:
* Revert draft: Undo the most recent changes.
* Format query: Apply syntax formatting to the query.
* Preview query: Run the query without saving it.
* Save & Run: Run and save the query. All charts and/or filter elements that use this query will be affected.
### Executed Query
Once a query has been run, you can see the executed version of it. Read more about how to use the executed query for debugging [here](/creating-dashboards/debugger-panel).
### Output
This section shows a data table with the result of the executed query. If there are errors with your query, they will be displayed here.
If you have `AI` enabled for your account, you can get error resolution suggestions here as well.
### Schema
This section shows the available columns in each of the tables present in the selected schema. You can also swap schemas here, but doing so may cause your charts to load different data.
### Variables
This section displays the variables that are available for use in the query. Read more about how to use variables [here](/creating-dashboards/variables).
## Formatting
Once the query has been executed, you can use the formatting tab to modify and style the table shown in the underlying data modal.
Read more about exposing the underlying data on your charts [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# Debugger Panel
Source: https://docs.explo.co/creating-dashboards/debugger-panel
Explo offers a dashboard debugger and also dataset debugger to help with your dashboard building experience. To access the debugger panel, select the right panel button at the top of the dashboard editor or choose the debugger view for the dataset editor.
## Query
* Connection time: time it took to connect to your database, before the query itself is run
* If this is too much time, you should consider performance improvements like increasing the number of available connections to your database. Reach out to Explo support for suggestions and help.
* Querying time: time it took to run the query in your database
* If this is too much time, you should consider looking at your datasets in Explo to see if they can be optimized. If AI is enabled for your account, you can also use it for help with query optimization.
* Processing time: time it took for Explo to read the results of the query
* Total runtime: total runtime it took to run and return the query
* `cache miss` or `cache hit`: If cache is missed, the query will run in your database and the metrics above will be returned. If cache is hit, the metrics above are not shown as the resulting data is pulled directly from the cache.
**Dataset Debugger** \
The same debugger view is available on the dataset editor's query tab in the "Executed Query" section. This view will show you the query that was run with variables inserted and the same statistics as above.
## Data
This tab shows the data returned from the query or cache. The data tab is a great way to double check if the results that are returned are expected. Most of the time, these are the same values that will be reflected on your visualization, but there are certain cases where some light calculations are computed on the frontend after the data is returned.
# Overview
Source: https://docs.explo.co/creating-dashboards/drilldowns
Drilldowns are useful interactions in dashboards that allow your customers to click into visualizations to further understand their data.
In Explo we offer two types of drilldown interactions:
1. **Underlying data drilldowns**: expose the underlying data powering visualizations. This option let’s your users dive deeper into their data by providing additional details on data points.
2. **Filter drilldowns**: use visualizations as filters for other components. This option gives your users the ability to interact with charts and graphs as opposed to just control components.
3. **Dashboard drilldowns**: enable viewers to dive deeper into a chart's data by bringing them to an additional dashboard view focused on the selected data from that chart.
# Dashboard Drilldowns
Source: https://docs.explo.co/creating-dashboards/drilldowns/dashboard-drilldowns
Dashboard Drilldowns enable viewers to dive deeper into a chart's data by bringing them to an additional Dashboard View focused on the selected data from that chart.
## Demo Video
To see a Dashboard Drilldowns demo, check out this Loom [here](https://www.loom.com/share/2b2588d9fd2848baa99740b2d785d313).
## Getting Started with Dashboard Drilldowns
Here’s a few steps to start using Dashboard Drilldowns
**Step 1: Choose a Dashboard**
Navigate to the Edit view of a Dashboard that you’d like to create a Dashboard Drilldown View for.
**Step 2: Navigate to the new Views section of the Edit modal**
You’ll find a new tab on the right side of the Edit modal, allowing you to view Layers for your Dashboard.
**Step 3: Create a new Dashboard Drilldown View**
Click the plus sign to add a new View to your dashboard. When creating a new View, you’ll be asked to choose a Chart and Source Column for your Dashboard Drilldown to reference.
Once you have created a new View, you’ll find that the reference Chart now has additional Actions while edited that are focused on Dashboard Drilldowns.
**Step 4: Build out your Dashboard**
Build out your new Dashboard as you would any other dashboard. You’ll find all datasets that have been imported previously are available for use in your Dashboard Drilldown.
**Step 5: Save and Publish your new Dashboard Drilldown View**
Saving and publishing processes remain the same with added Dashboard Views. Use Explo’s preview function to test out your new Dashboard Views!
## FAQ
**Dashboard Drilldowns are currently in Early Release. What does Early Release mean?**
Dashboard Drilldowns are available to be used in production environments, but you need to reach out to [support@explo.co](mailto:support@explo.co) in order to have it enabled for your account.
**Which Charts does Dashboard Drilldowns work with today?**
Today, Dashboard Drilldowns are available for two dimensional charts. In the future, you’ll find additional chart types added to this functionality.
**How many Dashboard Views are able to be created for a dashboard?**
In early release, Dashboards are able to have up to three levels of views to drill into.
# Overview
Source: https://docs.explo.co/creating-dashboards/drilldowns/filter-drilldowns
Filter drilldowns allow you to filter charts based on selections made on other charts. For example you can select a row on table to further filter down a bar chart to only show orders based on the row selected.
## Using filter drilldowns
Filter drilldowns can be linked to other visualizations the same way as control components. You have the option of configuring them in filter section or using the variables directly in the dataset editor.
## Charts that support drilldowns
* Bar Charts
* Tables
# Bar Charts
Source: https://docs.explo.co/creating-dashboards/drilldowns/filter-drilldowns/bar-charts
Here's how to enable drilldowns for bar charts
### Enable Drilldowns
The first step to setting up the drilldown is to enable it in the bar chart
itself. In the config you can enable category selection in the drilldown menu.
Select the option to turn on the drilldown.
### Variables
When drilldown is turned on for that bar chart, a variable will be created for
that chart. The underlying value will be assigned to a variable with the format
`chart_id.category` as shown below.
You can then use the new variable as you would any other variable generated from
a filter or dropdown in the SQL editor or in the filter config for individual
charts.
For more information on how to use variables, you can reference the docs
[here](/creating-dashboards/variables/using-variables).
If the bar chart is grouped then two variables will be set once a value is
selected like below.
# Data Tables
Source: https://docs.explo.co/creating-dashboards/drilldowns/filter-drilldowns/data-tables
Here's how to enable drilldowns for data tables
### Enable Drilldowns
In the config menu turn on drilldowns and then select a column from the table.
The value for that column in the row you have selected will be set as the
variable.
### Variables
Once a row has been selected the value of the column set will be set as a
variable with the key being the id of the table as seen below.
# Underlying Data Drilldowns
Source: https://docs.explo.co/creating-dashboards/drilldowns/underlying-data-drilldowns
Easily expose the data powering different visualizations on your dashboard.
Turn on underlying data drilldowns, go to the `actions` tab and enable the option “**Open a modal with a table of the underlying data**”.
To open the drilldown modal, users can do one of the following:
1. Select the option in the triple dot menu on the top right of each component.
2. Click on a data point (bar, slice, point, etc.). This will create a table view of only data for that specific slice of the data.
Once the modal has been opened the underlying data table can be treated as
standard data tables. All filtering and exporting options are available on the
drilldown tables.
# Overview
Source: https://docs.explo.co/creating-dashboards/ui-elements
Explo offers a number of UI Elements you can add onto your dashboards.
These elements are defined in 3 categories: Controls, Export, and Display.
* Drag and drop these UI Elements onto your dashboard to use them.
* To edit a UI element, **double-click on the component** and the editor will
appear in the left side panel.
## Adding a new UI Element
Adding new components is easy! Simply drag the component onto the canvas to get
started. You will see a hovering shadow, indicating where the component will go
when you drop it.
## Filtering
You can now filter charts directly from the UI elements.
Scroll down to the bottom of the `Setup` page to see the configuration options. With the setup process, you will setup the following relationship:
`Selected Field` `Operator` `UI Element Value`
Some concrete examples:
`ecommerce_order_shipment_date` `is between` `date range`
`category_field` `is in` `multiselect dropdown values`
And so on...
The configuration process is below.
First, select your operator.
At this point, the charts on the dashboard will tell you that you need to Select a Field that the operator applies to.
You can now select the field and which charts you want the filter to apply to.
You will then get the message from the chart that the filter is configured.
And now you have a filter configured for the charts!
# Apply Filter Button
Source: https://docs.explo.co/creating-dashboards/ui-elements/controls/apply-filter-button
An apply filter button is used to enable your customers to trigger a refresh of the dashboard once certain filters have been changed.
## What it does
The apply filter button is used to:
* prevent the dashboard from reloading when configured filters are modified
* instead allow your users to trigger the reload when they are done changing the
filters
## Configuration
### Basic Configuration
| Configuration Option | Description |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Button Text | This is the text displayed on the button on the dashboard. It defaults to "Apply Filters" |
| Show Icon | When toggled on, a filter icon is shown on the left side of the text in the button. It defaults to on. |
| Show number of filters blocked | When toggled on, whenever a user changes a filter that is being controlled by the apply filter button, a number appears to the right of the button text indicating how many filters are currently stale and would be updated if the user clicks the button. |
| Input Selection | This section shows you all the inputs you have on your dashboard (represented by the element ID). You then check the boxes for all inputs you would like to be linked to this button. Any options selected will not refresh the dashboard automatically when changed. The values for the filter are only applied once the apply button is pressed |
# Date
Source: https://docs.explo.co/creating-dashboards/ui-elements/controls/date
Date pickers allows your customers to filter the dashboard to a specific slice of data in time.
## What it does
This component allows you to create a date picker input which your users can use
to filter data. The data picker can be a single date, or a date range.
When the element is added to the dashboard, it looks like:
### Single Date
### Date Range
## Configuration
#### Single Date
### Single Date Basic Configuration
| Configuration Option | Description |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Include Time Selection | Toggle to allow users to select a time with the date |
| Selectable Range | Define from which range users can select the single date value from. You can input exact dates (such as April 1 - April 20) or relative ranges (such as the last month). |
| Default Value | Define the default value on dashboard loads. |
| Label | Define the label of the component in the dashboard. |
| Enable clearing selection | Allow users to clear the input with an X mark. |
| Enable Dependency Selection | When enabled, you may create a dependency between this element and other elements on the dashboard. When this element is dependent on an element selected, it will be disabled until a value is selected by the user. |
#### Date Range
### Date Range Basic Configuration
| Configuration Option | Description |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Selection UI | Allow your users to select from a preset list of options (such as previous quarter), allow a custom range they define, or both. |
| Default Value | Define the default value on dashboard loads. |
| Label | Define the label of the component in the dashboard. |
| Enable clearing selection | Allow users to clear the input with an X mark. |
| Set end date to end of day | This toggle allows you to select the end date in the range to refer to the end of the day, which is useful for SQL queries. Otherwise, it will refer to the beginning of the day. |
| Use portal for popover | This toggle makes it so that the dropdown or multiselect components, when the dropdown portion is opened, won't be cutoff when extending beyond a container or the embed frame. |
| Enable Dependency Selection | When enabled, you may create a dependency between this element and other elements on the dashboard. When this element is dependent on an element selected, it will be disabled until a value is selected by the user. |
### Customizable Date Range Presets
If the pre-defined date ranges are insufficient (e.g. Today, Yesterday, Last 7 Days, etc.), you can create custom date range presets.
Date range presets appear in the dropdown alongside the pre-defined date ranges.
#### Usage
Configuration for Start Date / End Date:
* Now - Today's Date
* Plus - Add to today's date (for future dates)
* Minus - Subtract from today's date (for past dates)
* StartOf - Sets the time to 00:00:00
* EndOf - Sets the time to 23:59:59
A preview of the current date range is shown to help you understand the range you are creating.
Example of the Last 10 Days:
Example of previous week:
Example of last 12 completed months:
## Variable Usage
To access the elements in the SQL editor, use the following syntax:
For users connected to a BigQuery warehouse, you will need to cast the data
variable to the correct data type using the code below.
#### Single Date
```sql Typical Usage theme={null}
WHERE 1=1 [[AND date_field >= {{datepicker1}}]]
[[AND date_field <= {{datepicker2}}]]
[[AND DATE(date_field) = {{datepicker3}}]]
```
```sql Casting to Date Type theme={null}
WHERE 1=1 [[AND date_field >= DATE({{datepicker1}})]]
[[AND date_field <= DATE({{datepicker2}})]]
[[AND DATE(date_field) = DATE({{datepicker3}})]]
```
```sql Casting to Timestamp Type theme={null}
WHERE 1=1 [[AND date_time >= TIMESTAMP({{datepicker1}})]]
[[AND date_time <= TIMESTAMP({{datepicker2}})]]
[[AND TIMESTAMP(date_time) = TIMESTAMP({{datepicker3}})]]
```
#### Date Range
Date range pickers have two variables, `startDate` and `endDate`.
All date ranges are updated when the dashboard is loaded or refreshed, filters are re-applied, or the date range is changed.
These variables can be used in SQL queries like so:
```
--to reference the first date
{{date_range_picker.startDate}}
--to reference the second date
{{date_range_picker.endDate}}
--example
WHERE 1=1
[[AND date_field >= {{date_range_picker.startDate}}]]
[[AND date_field <= {{date_range_picker.endDate}}]]
```
## Filtering
UI Elements can filter charts, see [the overview page filtering section](/creating-dashboards/ui-elements#filtering).
# Date Group Toggle
Source: https://docs.explo.co/creating-dashboards/ui-elements/controls/date-group-toggle
Date Group Toggles can be used to allow your users to group charts by selected time intervals
A Date Group Toggle can be linked to charts to configure which time interval the
chart is grouped by. This allows your users to select daily, weekly, monthly, or
yearly views of their data.
The date group toggle can only be linked to certain charts such as bar charts
and line charts. It also requires a the data to be grouped by a date field.
To configure a date group toggle, first drag the component onto the dashboard.
Next, select the chart you want to link, and click on the arrow beside the date
field to group on. Select Date Group Toggle under user inputs.
Select the correct component from the dropdown below.
Your chart will now be configured to change based on the data group selected.
## Configuration
#### Setup
#### Preferences
### Basic Configuration
Available by accessing the `Setup` and `Preferences` tabs
| Configuration Option | Description |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Filter Type | Choose whether your users can access the filter value via a dropdown or toggle element |
| Set the filter values | Choose which filter values your users will have available to them |
| Set the default value | Set the default selected value on dashboard load |
| Label | Set the label for the Time Dropdown your users will see |
| Group Labels | Change the labels of the dropdown options that your users see |
| Enable Dependency Selection | When enabled, you may create a dependency between this element and other elements on the dashboard. When this element is dependent on an element selected, it will be disabled until a value is selected by the user. |
## Filtering
You can now filter directly your charts in the UI elements themselves. For more information on this process, see the [filtering section of the overview page](/creating-dashboards/ui-elements#filtering).
# Dropdown
Source: https://docs.explo.co/creating-dashboards/ui-elements/controls/dropdown
Dropdowns allow your customers to dynamically change the dashboard based on options they select.
## What it does
This component allows you to create a select input that your users can
interact with to filter and group data on the dashboard.
There are three different configuration options:
### Dropdown
Allows for a user to select a single value from a dropdown
### Multiselect
Allows for a user to select multiple values from a dropdown
### Toggle
Allows for a user to select a single value from a toggle view
## Configuration
Setup
Preferences
### Basic Config
| Configuration Option | Description |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Label | This text is the label given to the dropdown select on the dashboard. The label is placed above the dropdown. This field can be empty. |
| Descriptive tooltip | Enable this element and use the textfield that pops up to give a tooltip element to your users to hover over to understand what the dropdown/multiselect/toggle does. |
| Placeholder | This is the message shown in the dropdown when no option has been selected by the user yet (this option is not available for the toggle) |
| Enable Filtering | This toggle controls whether or not the dropdown options menu is filterable. By default, the menu is filterable. When filterable, a search input appears above the options that allows users to type text and filter down the options. This is recommended when your dropdown has a long list of options (this option is not available for the toggle). |
| Disable dropdown if there are no items | This toggle allows for you to disable the dropdown if no options are present for selection (this option is not available for the toggle). |
| Enable clearing selection | This toggle controls whether or not the user can click the "x" button to clear the selected option. By default, this feature is enabled, meaning that users can clear out the selected option in a dropdown. Disabled clearing selections in order to ensure that the dropdown will always have a value. |
| Use Portal for Popover | This toggle makes it so that the dropdown or multiselect components, when the dropdown portion is opened, won't be cutoff when extending beyond a container or the embed frame. |
| Enable Dependency Selection | When enabled, you may create a dependency between this element and other elements on the dashboard. When this element is dependent on an element selected, it will be disabled until a value is selected by the user. |
### Manual vs. Query
There are two ways to supply options to the dropdown. **Manual** dropdowns allow
you to provide hardcoded values. **Query** dropdowns allow you to specify the
options based on a dataset defined on the dashboard. This is useful for when you
want to dynamically populate the dropdown with options from you database
### Manual Config
Manual dropdowns are powered by hardcoded lists of strings or numbers. You may
provide only a `Values` list, in which case the values will be use to display
the options.
The Values, Displays, and Default Value fields all take in inputs as javascript.
This means that you must put quotes around strings. For example:
**Invalid**: `[option-1, option-2, option-3]`
**Valid**: `["option-1", "option-2", "option-3"]`
| Configuration Option | Description |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Values | This option takes in a list of strings and numbers. When a user selects an option from the dropdown, the associated value is what will be used in the SQL query to filter or group the data. This list is defined as javascript and so you must use quotes on strings. |
| Displays | This option takes in a list of strings and numbers. This will define what the dropdown options look like when a user opens the dropdown. When the user selects an option, the value used in the SQL query will be the corresponding `Value` option. The `Displays` list should have the same number of elements as the `Values` list. |
| Default Value | This option takes in a string or number. This defines what option the dropdown will start with when the page loads. Use this option, in tandem with the disabling clearing selections, to ensure that the dropdown always has a value present. |
| Enable Dependency Selection | When enabled, you may create a dependency between this element and other elements on the dashboard. When this element is dependent on an element selected, it will be disabled until a value is selected by the user. |
## Query Config
Query dropdowns use a dataset to power the contents of the dropdown. You must
define the dataset to power the dropdown using the SQL editor on the dashboard
editing page.
| Configuration Option | Description |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Dataset | This is a dataset defined on the dashboard which will be used to populate values for the dropdown |
| Values Field | From the selected dataset, the columns on the table are available to select for the values field. This field represents what value will be used when the dropdown is selected. If no display field is selected, this will also be used to display the options |
| Displays Field | Also from the selected dataset, the columns on the table are available to select for the display field. The associated display will be shown in the dropdown. If the user selects that option, the value is what will be used in the [variable](/creating-dashboards/variables). |
| Default to first option | If you would like to make your dropdown start with a default value, you can select this option. We will then pick the first value from the dataset when we query it and load the dashboard with that value. |
| Sort Options | Pick from amongst the sort options to pick how you would like the dataset sorted in the dropdown or multiselect (not available for the toggle). |
Use the DISTINCT statement in SQL to only pull a distinct list of options for
the dropdown options
## Variable Usage
In the SQL query, when using dropdown or toggle, use the following
```sql theme={null}
--- basic usage:
WHERE 1=1
[[AND column_1 = {{name_of_dropdown_or_toggle}}]]
```
In the SQL query, when using multiselect, use the following
```sql theme={null}
--- basic usage:
WHERE 1=1
[[AND column_1 in {{name_of_multiselect}}]]
```
## Filtering
You can now filter directly your charts in the UI elements themselves. For more information on this process, see the [filtering section of the overview page](/creating-dashboards/ui-elements#filtering).
# JS Event Button
Source: https://docs.explo.co/creating-dashboards/ui-elements/controls/js-event-button
The JavaScript Event Button enables users to trigger custom JavaScript events.
## What it does
The Javascript Event Button emits a custom JavaScript event, facilitating the execution of additional scripts in response.
## Configuration
### Basic Configuration
| Configuration Option | Description |
| -------------------- | ----------------------------------------------------------------------------------------------------------- |
| Button Text | This is the text displayed on the button on the dashboard. It defaults to "JS Event" |
| JS Event Name | Specifies the custom JavaScript event name to emit. Note: Leaving this field blank will disable the button. |
The detail body that is passed with the javascript event contains the `customerName` and the `customerProvidedId` for the customer who clicked the button.
### Example Code
```
```
# Refresh Dashboard Button
Source: https://docs.explo.co/creating-dashboards/ui-elements/controls/refresh-dashboard-button
A refresh dashboard button is used to enable your customers to trigger a refresh of the dashboard manually.
This component may cause undesired behavior if the cache is enabled. For more
information, visit [this
page.](/dashboard-features/dashboard-caching#how-dashboard-caching-works-in-practice)
## What it does
The refresh dashboard button is used to manually refresh all of the data panels on the dashboard to ensure they have the most up-to-date data
## Configuration
### Basic Configuration
| Configuration Option | Description |
| -------------------- | ------------------------------------------------------------------------------------------------------- |
| Button Text | This is the text displayed on the button on the dashboard. It defaults to "Refresh Dashboard" |
| Show Icon | When toggled on, a refresh icon is shown on the left side of the text in the button. It defaults to on. |
# Slider
Source: https://docs.explo.co/creating-dashboards/ui-elements/controls/slider
Sliders allow your customers to be able to select values within a range.
## What it does
This component allows your customers to select values within a range. These values
can be used to filter the data.
## Configuration
### Basic Configuration
| Configuration Option | Description |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Label | The is the label that appears on the left side of the slider. It defaults to "Slider". The toggle allows you to choose whether or not to display this label. |
| Descriptive Tooltip | This can be configured to display a helpful popover to the customer. The toggle allows you to choose whether or not to display the tooltip. |
| Show thumb labels | This allows you to show or hide value labels below each thumb on the slider. |
| Set Default Value | Specify the default values for the thumbs. |
| Enable Dependency Selection | When enabled, you may create a dependency between this element and other elements on the dashboard. When this element is dependent on an element selected, it will be disabled until a value is selected by the user. |
| Minimum value | The minimum (leftmost) value of the slider. |
| Maximum value | The maximum (rightmost) value of the slider. |
| Number of thumbs | The number of thumbs on the slider. |
| Step size | How much each thumb jumps between values. The minimum step size is 1. |
## Variable Usage
Each thumb on the slider has a corresponding variable. The leftmost thumb is
`thumb_1`, the second (from the left) thumb is `thumb_2`, etc.
In the SQL query, use the following syntax
```sql theme={null}
--- basic usage:
WHERE 1=1
[[AND column_1 > {{slider_1.thumb_1}} AND column_1 < {{slider_1.thumb_2}}]]
```
## Filtering
You can now filter directly your charts in the UI elements themselves. For more information on this process, see the [filtering section of the overview page](/creating-dashboards/ui-elements#filtering).
# Switch
Source: https://docs.explo.co/creating-dashboards/ui-elements/controls/switch
Switches allow your customers to be able to move between two configured states of your dashboard.
## What it does
This component allows you to configure your dashboard so your customer can shift
between two different states.
## Configuration
### Basic Configuration
| Configuration Option | Description |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Label | The is the label that appears on the left side of the switch. It defaults to "Switch". The toggle allows you to choose whether or not to display this label. |
| Descriptive Tooltip | This can be configured to display a helpful popover to the customer. The toggle allows you to choose whether or not to display the tooltip. |
| On/Off Label | This is the label that appears on the right side of the switch, and it denotes the status of the switch. The toggle allows you to choose whether or not to display this label. |
| On/Off Value | This allows you to configure the value of the corresponding variable for this element. The default values are `true` for On and `false` for Off. |
| Set Default Value | Specify if default should be on or off |
| Enable Dependency Selection | When enabled, you may create a dependency between this element and other elements on the dashboard. When this element is dependent on an element selected, it will be disabled until a value is selected by the user. |
## Variable Usage
In the SQL query, use the following syntax
```sql theme={null}
--- basic usage:
WHERE 1=1
[[AND column_1 = {{switch1}}]]
--- filter a chart based on a column if switch is on, do nothing if switch is off
WHERE [[(({{switch1}} = 'true' AND column_1 = true) OR ({{switch1}} = 'false'))]]
```
## Filtering
You can now filter directly your charts in the UI elements themselves. For more information on this process, see the [filtering section of the overview page](/creating-dashboards/ui-elements#filtering).
# Text Input
Source: https://docs.explo.co/creating-dashboards/ui-elements/controls/text-input
The text input element allows you to process user inputted text on your dashboard.
## What it does
The text input allows you to capture a users text input and configure the
dashboard to respond to the inputted text.
## Configuration
### Basic Configuration
Available by accessing the `Setup` and `Preferences` tabs
| Configuration Option | Description |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Allowable entries | Select between whether a user can input all characters, or just numbers in the textfield |
| Default Value | Set a default value for the text input available on load |
| Label | This label appears above the text input and can be configured to describe how the text input should be used. |
| Placeholder Text | This is the message shown in the text input when no input has been written by the user yet. |
| Search Icon | This icon can be toggled on if the text input is being used as a search bar. |
| Enable Dependency Selection | When enabled, you may create a dependency between this element and other elements on the dashboard. When this element is dependent on an element selected, it will be disabled until a value is selected by the user. |
## Variable Usage
In the SQL query, use the following syntax
```sql theme={null}
--- search bar usage: If you wish to use this text input element as a search bar for,
--- a data table, you can configure the SQL editor like this, and the user will be
--- able to search the table based on column_1
WHERE 1=1
[[AND column_1 = {{text_input1}}]]
```
## Filtering
You can now filter directly your charts in the UI elements themselves. For more information on this process, see the [filtering section of the overview page](/creating-dashboards/ui-elements#filtering).
# Time Dropdown
Source: https://docs.explo.co/creating-dashboards/ui-elements/controls/time-dropdown
Time Dropdown allows your users to select time periods in your dashboards.
## What it does
This element allows your users to select time periods in your dashboards.
## Configuration
### Basic Configuration
Available by accessing the `Setup` and `Preferences` tabs
| Configuration Option | Description |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Set Filter Values | In this section, you can add and reorder options your users can select from. You choose the name of the value (ex. Last 7 days) and the minutes that represents (ex. 10,080). |
| Default Value | Set the default selection for the Time Dropdown |
| Label | Set the label your users see for the dropdown |
| Enable Filtering | Allow your users to search within the dropdown for values |
| Enable Clearing Selection | Allow your users to clear the dropdown with an X |
| Use Portal for Popover | When enabled, prevents the dropdown options from being hidden when overflowing. Applicable to both overflow from a container and the embed component itself. |
| Enable Dependency Selection | When enabled, you may create a dependency between this element and other elements on the dashboard. When this element is dependent on an element selected, it will be disabled until a value is selected by the user. |
## Variable Usage
In the SQL query, use the following syntax
```sql theme={null}
WHERE 1=1
[[AND DATE_DIFF(CURRENT_TIMESTAMP(), timestamp, MINUTE) < {{time_period_dropdown_1}}]]
```
## Filtering
You can now filter directly your charts in the UI elements themselves. For more information on this process, see the [filtering section of the overview page](/creating-dashboards/ui-elements#filtering).
# Toggle
Source: https://docs.explo.co/creating-dashboards/ui-elements/controls/toggle
The Toggle element allows you to create a single select toggle in your dashboard.
## What it does
The toggle element allows for you to create a single select element to pick from.
This view is also configurable from the Dropdown component. For more on the Toggle element, see the [Dropdown Section](/creating-dashboards/ui-elements/controls/dropdown).
# Container
Source: https://docs.explo.co/creating-dashboards/ui-elements/display/container
Containers can be used to group other components together and organize your dashboard.
## What it does
This component allows you to group elements together on your dashboard. For
example:
## Adding elements
To add an element to a container, drag it in over the container.
# IFrame
Source: https://docs.explo.co/creating-dashboards/ui-elements/display/iframe
IFrames can be used to insert another html document within your dashboard
## What it does
This component allows you to insert another html document within your dashboard.
## Configuration
| Configuration Option | Description |
| -------------------- | ---------------------------------------------------------------------- |
| IFrame URL | This is the url of the web page you want to insert into your dashboard |
# Image
Source: https://docs.explo.co/creating-dashboards/ui-elements/display/image
Images can be added to your dashboard via this UI element.
## What it does
This component allows you to add an image to your dashboard.
## Configuration
| Configuration Option | Description |
| ------------------------------------ | ------------------------------------------------------------------------------------------------ |
| Image URL | This is the url of the image you want to add. |
| Fit entire image in container toggle | Sets if the image should auto fill the size of the container or be the default size of the image |
# Text
Source: https://docs.explo.co/creating-dashboards/ui-elements/display/text
Text elements allow you to communicate information in markdown to your customers.
## What it does
This component allows you to add a block of text to your dashboard. Use this
component for any labeling and providing additional information for your user.
The **Text Component** supports Markdown to give you the flexibility to
configure the style and sizing of your text. You can reference the article
[here](https://www.markdownguide.org/basic-syntax/) for Markdown.
You can also utilize variables in your text component by using the
`{{element#}}`notation. This is great for adding company names into your
dashboards or dynamically describing charts and graphs.
## Configuration
| Configuration Option | Description |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Text | This is a text area that allows you to type in free form text. Our text elements understand markdown, enabling you to make complex text views in your dashboards. |
| Text Size | This allows you to manage the size of the text that appears on the dashboard. There are three options: • Normal (default) • Large • Extra Large |
| Alignment | Alignment defines the horizontal & vertical placement of the text inside of the container on the dashboard. There are 3 options in the horizontal direction: • Left aligned (default) • Center aligned • Right aligned There are 3 options in the vertical direction: • Top aligned (default) • Center aligned • Bottom aligned |
## Markdown formatting
The text element uses markdown formatting to format the text onto the page. This
gives you access to powerful text formatting.
Please reference a markdown guide, such as
[this one](https://www.markdownguide.org/basic-syntax/), for more information on
the specific syntax available.
## Dynamically Generated Values
You may use dynamically generated values in your text elements by using the
`{{ }}` notation, similar to the dataset SQL editor. These values can either be
generated from custom variables or through data queried against your Explo
datasets.
### Using Variables
The variables you have access to are all the variables in the page defined by
user inputs, the customers, and passed in from the embedded component.
For example, in the above dashboard we are using the `customer_name` variable
to make the text shown on the screen be dynamic.
### Using Datasets
For dynamic values from datasets, you need to supply both the table name and the
column you would like read from. Explo will select the first row of whatever
column and table you specify, so you will likely want to make a specific dataset
that aggregates a value and then pass that dataset to the text component.
For example, in the above dashboard we are using the *customers* column from
*dataset1* to make the text shown on screen to be dynamic.
# Share Button
Source: https://docs.explo.co/creating-dashboards/ui-elements/export/share-button
Share Button allows for you to create sharing and export options for your users on your dashboard.
## What it does
This element allows for you to create sharing and export options for your users on your dashboard.
When the element is added to the dashboard, it looks like:
## Configuration
### Basic Configuration
| Configuration Option | Description |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| Button Label | Specify the label of the share button users will see |
| Popover Title | Specify the title when someone selects "Share to Web" |
| Popover Subtitle | Specify the subtitle when someone selects "Share to Web" |
| Share Link Toggle | Specify whether users can "Share to Web" |
| Share Page Title | Specify the title of the webpage users with the share link see in their browser tab when visiting the page |
| Share Link Expiration | Specify the amount of time a share link is active before it expires[ISO08601 duration format](https://en.wikipedia.org/wiki/ISO_8601#Durations) |
| Enable Password Protection | Specify a password is required to see the share link page |
| Enable Username Protection | Specify a username is required to see the share link page |
| Enable Image Download | Specify whether users can download an image via the share link |
| Enable PDF Export | Specify whether users can download a PDF |
| Download file name | Specify the filename users will see when downloaded |
# Overview
Source: https://docs.explo.co/creating-dashboards/variables
Variables are used to filter and manipulate queries throughout dashboards and reports. Variables can be used to segment data depending on the viewer to ensure they only see their own data as well as provide interactions for your viewers.
## What are Variables?
Variables are created by default for every dashboard or report you build. You can also create variables by adding any control component or creating custom variables that you can pass in.
Learn more about the different types of variables [here](/creating-dashboards/variables/types-of-variables).
You can find all the variables you have access to by selecting the `{}` icon at the top of the left hand side configuration tab.
Create and manage custom embedded variables in the variables panel by selecting "Variables" and "Add an embed variable".
# Passing in Variables
Source: https://docs.explo.co/creating-dashboards/variables/passing-in-variables
### Embedded Component
When you embed an Explo Dashboard using an embedded component, you can pass in variables directly which are then available anywhere in the dashboard that accepts variables.
```html theme={null}
```
As demonstrated above, you can pass in a set of key value pairs that define new variables that you can use in your dashboard. Full documentation for the embedded component can be found [here](/embedding-documentation/dashboard/option-1-web-component).
### URL Parameters
On any page that loads an Explo dashboard, such as with the embedded component, an IFrame URL, or the share URL, Explo looks at the URL to see if any variables are defined there.
Here are some example IFrame `src`'s showing how to embed variables:
```html theme={null}
src='https://app.explo.co/iframe/[JWT]/?var_1="hello"'
src='https://app.explo.co/iframe/[JWT]/?var_2=%22hello%22'
src='https://app.explo.co/iframe/[JWT]/?var_3=["49b11f75-15ad-446f-836c-29d0028ac3b7","d621e24b-4af3-4218-a47e-88bfc4e99b25"]'
src='https://app.explo.co/iframe/[JWT]/?var_4=%5B%2249b11f75-15ad-446f-836c-29d0028ac3b7%22%2C%22d621e24b-4af3-4218-a47e-88bfc4e99b25%22%5D'
src='https://app.explo.co/iframe/[JWT]/?var_5="{\"result\":[{\"dateChanged\":\"2010-10-10T10:10:10.000Z\",\"stores\":[\"All\"]}]}"'
```
The Explo dashboard will take the value set to `var_1`, `var_2`, etc as a variable and use the associated value.
To test the variables that may be passed in via URL, look at the Variables tab. When passing in a variable via the URL, it must be URL encoded. Below is an example dashboard and the associated variables that may be passed in via URL:
# Tips
Source: https://docs.explo.co/creating-dashboards/variables/tips
### Segmenting customer data
`{{customer_id}}`
* The customer variable is a default variable that's already created in every dashboard.
* It is important to use this variable in every dataset that a panel is built off of if you want it to be customer specific. To configure this, select the field that has your customer's ID and set it equal to `{{customer_id}}`
```sql Example theme={null}
SELECT *
FROM table_1
[[WHERE user_id = {{customer_id}}]]
```
### Additional operators
Variables can be used with other operators as well to achieve different filtering needs
```sql theme={null}
--use the in operator when configuring a multi-select component
[[WHERE field1 in {{element1}}]]
--filter for similar values using like
[[WHERE field_3 LIKE '%' || {{element3}} || '%']]
--relative date and number operators
[[WHERE field_3 >= {{element3}}]]
```
### Improving query speed by filtering before joining
In general, it is best to filter tables before joining to other tables, by doing so, you can significantly cut down the calculation and query time needed to compute the entire query.
```sql Example theme={null}
--Original Query
SELECT *
FROM models_operation
INNER JOIN models_flow
ON models_flow.resource_ptr_id = models_operation.flow_id
INNER JOIN models_datasource
ON models_datasource.id = models_operation.data_source_id
[[WHERE models_datasource.team_id = {{customer_id }}]];
--Improved Query
SELECT *
FROM models_operation
INNER JOIN models_flow
ON models_flow.resource_ptr_id = models_operation.flow_id
INNER JOIN (SELECT *
FROM models_datasource
[[WHERE models_datasource.team_id = {{customer_id }}]]
) AS ds
ON ds.id = models_operation.data_source_id;
```
# Overview
Source: https://docs.explo.co/creating-dashboards/variables/types-of-variables
There are a few main ways that variables are introduced into the application:
1. Customer-Specific Varibles
2. Dashboard Elements (Controls)
3. Data Panels (Drilldowns)
4. Embed Variables
5. Dataset Fields
6. Raw Variables
# Customer-Specific Variables
Source: https://docs.explo.co/creating-dashboards/variables/types-of-variables/customer-object
A customer entity is an object representing a customer at any level of the customer hierarchy.
Customer entities can be referenced as a variable in:
* Dataset queries
* Text components
* Chart titles
* Goal lines
* Progress goal totals
Customer entity specific variables that are created on the Customers page or via the API can be referenced.
These variables are all automatically set based on the customer entity viewing the data.
### Archetype Variables
In order to filter down data to a specific customer entity, a few variables are
provided depending on where the customer exists within the hierarchy. We call these archetype variables,
and they must be defined in order to be used in a query. If an archetype variable is referenced in a query
without being defined and it is not explicitly marked as optional, the data panel will error out.
By default, your team will have two hierarchy levels. The top level will be named `Customer` and
the bottom level will be named `User`. You will receive archetype variables that correspond to
these hierarchy level names, and they are detailed in the section below. You can view
and change the hierarchy level and parent configuration for each customer entity on the Customers
page. You can also view customer entity archetype variables on the Customers page.
If you'd like a different hierarchy setup or archetype variable configuration than the default,
please reach out to customer support.
### Default Archetype Variables
If the customer entity belongs to the top-level of the hierarchy (Customer level):
* `customer_id` : This is the given `provided_id` for this customer entity when you
[create a customer](/api-reference/customer-api).
* `customer_name` : This is the `name` provided for this customer entity when the customer is created.
If the customer entity belongs to the bottom-level of the hierarchy (User level):
* `user_id` : This is the given `provided_id` for this customer entity.
* `user_name` : This is the `name` provided for this customer entity.
* **\[inherited]** `customer_id` : If this customer entity has a parent set, this field will be inherited from its parent. So, it
will be the `provided_id` of the parent customer entity. If this customer entity does not have a parent, `customer_id` will be null,
and you will not be able to use it in a query unless you explicitly mark it as `optional`. This means your data panel will error out.
* **\[inherited]** `customer_name` : If this customer entity has a parent set, this field will be inherited from its parent. So, it
will be the `name` of the parent customer entity. If this customer entity does not have a parent, `customer_name` will be null,
and you will not be able to use it in a query unless it is marked as `optional`. This means your data panel will error out.
### Optional Archetype Variables
You may want to be able to use the same query to view as customer entities across hierarchy levels. You can use the explicit `.optional()` syntax to enable this.
When viewing a dashboard as an entity at the higher hierarchy level, there are no lower hierarchy level archetype variables defined. From the default example above,
the archetype variable `user_id` is not defined at the Customer hierarchy level since it only exists on the User level. That means this query would fail:
```
select * in table
where 1=1
[[AND customer_id = {{ customer_id }}]]
[[AND user_id = {{ user_id}}]]
```
To remedy this, we can mark the `user_id` variable as optional. It will now be removed from the query when undefined instead of raising an error.
A dashboard that uses this query can be viewed by customer entities on both the Customer and User hierarchy levels.
```
select * in table
where 1=1
[[AND customer_id = {{ customer_id }}]]
[[AND user_id = {{ user_id.optional() }}]]
```
### Custom Properties
In addition to the archetype variables, you may also add your own, custom properties on the Customers page.
When setting up your own properties, you may not overwrite any of the archetype variables.
Customer entities at any hierarchy level will have access to:
* `properties.*` : All variables passed in the `properties` object when the customer entity
is created are accessed through this format. So for example if you have
a key in the properties object called `filter_value` then you can access that
value by using `properties.filter_value`. This will include any `properties` a customer entity has
inherited from a set parent. You can see which properties have been inherited versus which have been
set on the Customers page when editing a customer entity.
### Summary Table
Here is a summary of which variables are available for a customer entity at each hierarchy level with
the default archetype configuration:
| | Top (Customer) Level | Bottom (User) Level |
| -------------- | -------------------- | -------------------------------------------------------------- |
| customer\_id | available | available if inherited from parent |
| customer\_name | available | available if inherited from parent |
| user\_id | unavailable | available |
| user\_name | unavailable | available |
| properties.\* | available | available (and includes inherited properties if parent is set) |
Customer variable names including `properties` and any of the archetype
variable names are reserved and cannot be used for dashboard elements or
custom variables.
To learn more about how to set these variables when creating the customers, reference
our customer API docs [here](/api-reference/customer-api).
# Dashboard Elements (Controls)
Source: https://docs.explo.co/creating-dashboards/variables/types-of-variables/dashboard-elements-controls
Customer objects can be referenced as a variable in:
* Dataset queries
* Text components
* Chart titles
* Goal lines
* Progress goal totals
**General** \
All controls create variables when they are dragged onto the dashboard.
To use dashboard elements, simply reference the component ID. For instance, in the example above the component ID is `filter_1`.
**Date Range Picker** \
The [date range picker](/creating-dashboards/ui-elements/date-range-picker) creates two variables, one for the start date and another for the end date. Both will be shown on the variables tab in the debugger panel. Assuming, in this example, the component ID for the date range picker is `date_range_picker` these are the two variables created:
* `date_range_picker.startDate`
* `date_range_picker.endDate`
**Default values** \
These variables get set when your users interact with the element and select a
value. When configuring the component, you will also have the option to set
default values so that the dashboard loads preselected with certain options.
# Data Panels (Drilldowns)
Source: https://docs.explo.co/creating-dashboards/variables/types-of-variables/data-panels-drilldowns
Customer objects can be referenced as a variable in:
* Dataset queries
* Text components
* Chart titles
* Goal lines
* Progress goal totals
Data panels can be used as filters when category selection is enabled. To learn more about enabling category selection, reference the docs [here](/creating-dashboards/drilldowns).
* `data_panel.category`: enable on format tab for bar charts and tables
# Dataset Fields
Source: https://docs.explo.co/creating-dashboards/variables/types-of-variables/dataset-fields
Any field in a dataset can be referenced as a variable in different components such as:
* Text components
* Chart titles
* Goal lines
* Progress goal totals
To use a value, use the following syntax. Note that this can only pull the value in the first row of that dataset.
* `dataset_name.field_name`: This is the dataset name and which field you want to reference in that dataset
Dataset fields can only be used in dashboard components and can not be
referenced in other datasets.
# Embed Variables
Source: https://docs.explo.co/creating-dashboards/variables/types-of-variables/embed-variables
Customer objects can be referenced as a variable in:
* Dataset queries
* Text components
* Chart titles
* Goal lines
* Progress goal totals
* Any input field on a chart Format tab that has a `>` by the name.
Embed variables allow users to pass in parameters through the embed code and
not on-dashboard components. Click on `Add an embed variable` on the [variable tab](/creating-dashboards/variables)
to create and delete embed variables.
Embed variables can be created in the Variables panel. These variables are referenced directly with the variable name that you provide.
* `variable_name`: This is the variable name you entered when creating the custom variable
### Using embed variables for axis aggregation
Some axes and chart types support aggregating date-type columns using embed variables.
To use this feature, you must use pass in variables with the following format:
* `DATE_HOUR`: Hour
* `DATE_DAY`: Day
* `DATE_WEEK`: Week
* `DATE_MONTH`: Month
* `DATE_YEAR`: Year
* `DATE_PART_WEEK_DAY`: Day of Week
* `DATE_PART_MONTH_DAY`: Day of Month
* `DATE_PART_MONTH`: Month of Year
* `DATE_PART_HOUR`: Hour of Day
# Raw Variables
Source: https://docs.explo.co/creating-dashboards/variables/types-of-variables/raw-variables
Any field in a dataset can be referenced as a variable in different components such as:
* Dataset queries
Variables in **dataset queries** can be manipulated by adding different suffixes as follows:
* `variable.raw()`: By default, the values that is pasted into queries are surrounded in quotes or formatted based on the variable type. Adding `.raw()` strips away any sort of formatting.
This is often required if you are using a variable as a table name, or using the variable in clauses that don’t require the value to be in quotes.
```
-- use a variable name in the from statement
select *
[[from tablename.{{customer.table_name.raw()}}]]
```
# Using Variables
Source: https://docs.explo.co/creating-dashboards/variables/using-variables
### In Datasets
All variables are contained in double curly brackets `{{ }}`, Explo will
recognize any text in-between curly brackets in your SQL query as a variable.
Double square brackets `[[ ]]` are used for where clauses with variables such
that if there is no variable selected, Explo will ignore the code between the
square brackets.
All variable clauses must be placed inside square brackets.
Example of where clause using a variable in square brackets:
```sql theme={null}
[[WHERE field1 = {{element1}}]]
```
When filtering by 2 different fields, you can use the syntax below to contain
the "and" in the square brackets. The `1 = 1` is required here otherwise there
will be an incomplete clause statement if neither filter is configured.
```sql theme={null}
WHERE 1=1 [[and field1 = {{element1}}]]
[[and field2 = {{element2}}]]
```
### In Data Panels
Instead of writing SQL to filter your datasets, you can filter specific data
panels by variables directly. To do this, drag the field you want to filter into
the Filter section. Then select the Variable option for the filter value input:
You will then have the option to select the variable defined on the page that
you want to filter by. You will only be shown options for variables that are the
correct type. For example, if you are filtering a date field, we will only show
you date-picker variables.
Now when the date picker is used, the data panel will filter down its data to
the selected range!
### In JS Events
Update variables with outgoing JS events. Learn more about outgoing JS events, like `updateExploDashboardVariable` [here](/general-features/custom-js-events#outgoing-events).
### Data Panel Built-In Variables
**KPI Trend**
The following variables can be used in the KPI panel's `Subtitle` field.
| Variable | Description |
| ----------------------- | --------------------------------------------------------------------------------------------------------- |
| `{{current_period}}` | This is the current period of data that will be used as the basis for comparison e.g. Jun 11 - Aug 12 |
| `{{comparison_period}}` | This is the period that the current\_period is compared to for calculating the trend e.g. July 9 - Jun 10 |
### Text Component and Other Fields
Variables can be used to replace static text and values in a variety of components and fields. Reference variables the same way you do in the dataset editor.
* Text components
* Chart titles
* Goal lines
* Progress goal totals
# Area Chart
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/area-chart
Available Area Chart Types: Area and 100% Area Chart
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### X-Axis
This section is for the field you wish to group the area chart by.
#### Y-Axis
This section is for the field you wish to aggregate the area chart on. You can add multiple columns into this section. Each column will appear as a separate line on the chart.
#### Group By
This section is for additional grouping on the area chart. If there is a column in this section,
there will be as many areas on the chart as there are groups in the specified column.
It is also possible to add multiple columns in this section. If multiple columns are selected, the end user will
be able to toggle between the group by options on the chart. More info about this can be found [here](/creating-dashboards/visualizations/format-tab/chart-level-filters).
It is not possible to have multiple aggregations **and** a group by column.
#### Filter
Read about the `Filter` section [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### X-Axis
Read about the `X Axis` section [here](/creating-dashboards/visualizations/format-tab/x-axis).
#### Y-Axis
Read about the `Y Axis` section [here](/creating-dashboards/visualizations/format-tab/y-axis).
#### Enable Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### Tooltip
Read about the `Tooltip` section [here](/creating-dashboards/visualizations/format-tab/overview#tooltip).
#### Goal Line
Read about the `Goal Line` section [here](/creating-dashboards/visualizations/format-tab/goal-lines).
#### Area Chart
* **Line Elasticity:** This section specifies the line elasticity of the line at the top of the area. It can either be curved or straight.
* **Line Width:** This section specifies the width of the line at the top of the area.
* **Show Markers:** This section enables dot markers at each point on the area chart.
* **Include missing dates:** This section will extend the X-Axis to include dates that are not present in the data, but may be specified by the filters.
* **Fill in missing dates with 0s:** This section will add zeros to the chart when there are missing dates in the data, when the X Axis is a timeseries.
* **Fill in missing values with 0s:** This section will add zeros to the chart when there are dates with missing values in the data, when the X Axis is a timeseries.
* **Reverse Group Order** This section will flip the order of the categories on the x axis.
#### Data Labels
Read about the `Data Labels` section [here](/creating-dashboards/visualizations/format-tab/data-labels).
#### Legend
Read about the `Legend` section [here](/creating-dashboards/visualizations/format-tab/legends).
#### Colors
Read about the `Colors` section [here](/creating-dashboards/visualizations/format-tab/overview#colors).
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# Bar Chart
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/bar-chart
Available Bar Chart Types: Vertical, 100%, Grouped, Grouped Stacked, Horizontal, Horizontal 100%, Horizontal Grouped, Horizontal Grouped Stacked
## Data Configuration
### Standard
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### X-Axis
This section is for the field you wish to group the bar chart by.
#### Y-Axis
This section is for the field you wish to aggregate the bar chart on. You can add multiple columns into this section. Depending on the type of bar chart, the additional columns in this section will appear either as stacks on top of each other, or bars next to each other.
For Horizontal bar charts, the X and Y axis sections are swapped.
#### Group By
This section is for additional grouping on the bar chart. The type of bar chart will determine how the grouping is applied.
For vertical bar charts, 100% charts, horizontal bar charts and horizontal 100% bar charts, the grouping will split the bar for each
X-Axis category (Y-Axis for horizontal bar charts) into multiple sections stacked on top of each other. For grouped and horizontal
grouped bar charts, the grouping will create multiple bars next to each other (on top of each other for horizontal bars) for each
X-Axis category (Y-Axis for horizontal bar charts).
It is also possible to add multiple columns in this section. If multiple columns are selected, the end user will
be able to toggle between the group by options on the chart. More info about this can be found [here](/creating-dashboards/visualizations/format-tab/chart-level-filters).
It is not possible to have multiple aggregations **and** a group by column.
#### Filter
Read about the `Filter` section [here](/creating-dashboards/visualizations/data-tab#filter).
### Advanced
#### Clusters
For grouped stacked bar charts, this section will split each bar on the X-Axis (Y-Axis for horizontal grouped stacked bar chart) into multiple sections, all stacked on top of each other in a single bar.
#### Stacks
For grouped stacked bar charts, this section will create multiple bars next to each other (on top of each other for horizontal grouped stacked bar chart) for each group in the specified field.
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### Sorting
Read about the `Sorting` section [here](/creating-dashboards/visualizations/format-tab/sorting).
#### X-Axis
Read about the `X Axis` section [here](/creating-dashboards/visualizations/format-tab/x-axis).
#### Y-Axis
Read about the `Y Axis` section [here](/creating-dashboards/visualizations/format-tab/y-axis).
#### Enable Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### Tooltip
Read about the `Tooltip` section [here](/creating-dashboards/visualizations/format-tab/overview#tooltip).
#### Goal Line
Read about the `Goal Line` section [here](/creating-dashboards/visualizations/format-tab/goal-lines).
#### Bar Chart
* **Include missing dates:** This section will extend the X-Axis to include dates that are not present in the data, but may be specified by the filters.
#### Data Labels
Read about the `Data Labels` section [here](/creating-dashboards/visualizations/format-tab/data-labels).
#### Legend
Read about the `Legend` section [here](/creating-dashboards/visualizations/format-tab/legends).
#### Colors
Read about the `Colors` section [here](/creating-dashboards/visualizations/format-tab/overview#colors).
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# Box Plot
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/box-plot
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type)
#### Grouping
This section is for the field you wish to group chart by. Each group will have a box and whisker plot.
#### Calculation
This section is for the field you wish to calculate the box and whisker values for. These values are: Maximum, Upper Quartile, Median, Lower Quartile, and Minimum.
#### Filter
This section is for filtering the chart based on certain columns. You can read about chart filtering [here](/creating-dashboards/visualizations/data-tab#filter).
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### Y-Axis
Read about the `Y Axis` section [here](/creating-dashboards/visualizations/format-tab/y-axis).
#### X-Axis
Read about the `X Axis` section [here](/creating-dashboards/visualizations/format-tab/x-axis).
#### Enable Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### Box Plot
* **Fill Color:** This specifies the fill color of the boxes and the color of the whiskers.
* **Median Color:** This specifies the color of the line that denotes the median value on the plot.
* **Orientation:** This specifies the orientation of the box plot, either horizontal or vertical.
* **Show Whisker:** This specifies if the whiskers are shown or hidden.
#### Legend
Read about the `Legend` section [here](/creating-dashboards/visualizations/format-tab/legends).
#### Colors
Read about the `Colors` section [here](/creating-dashboards/visualizations/format-tab/overview#colors).
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# Choropleth Map
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/choropleth-map
Build a boundary-based density map in Explo
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### Boundary Column
This section is for the field you wish to use to identify which boundary the column represents.
#### Aggregation Column
This section is for the field you wish to aggregate the map density value on.
#### Filter
Read about the `Filter` section [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### Map Options
* **Boundary Type**: Define the granularity of boundaries. Examples include Country, US State, US Zip Code
* **Boundary Format**: Define the format of the column used for identifying the boundary. Examples are: State Code (CA) and State Name (California)
* **Map Style**: Define the visual style of the map.
* **Minimum Color**: Define the color that will style the minimum color bucket shown on the map. If there is only one color bucket, it will be this color.
* **Maximum Color**: Define the color that will style the maximum color bucket shown on the map.
* **Color Steps**: Define the number of unique color buckets shown on the map. For example, if the value is 3, then three unique colors will be shown on the map and each boundary density will be one of those three colors from the minimum color to the maximum color.
* **Save Initial View**: This configures the position, orientation, and zoom of the map that is shown when the map first loads.
Map Options section must be filled out completely for the map to load.
#### Tooltip
Read about the `Tooltip` section [here](/creating-dashboards/visualizations/format-tab/overview#tooltip).
#### Enable Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### CSV Download
* **Tab Delimited:** This specifies if the CSV download exported from the data table should have values separated
by tabs. If not turned on, the separators will be commas.
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# Collapsible List
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/collapsible-list
This chart is deprecated. Please use the [Pivot Table V2 chart](charts/pivot-table-v2) instead.
## Data Configuration
#### Rows
This section specifies the rows of the collapsible list. This section supports multiple fields.
Additional fields will appear nested beneath the each value in the preceding field.
#### Aggregations
This section specifies the aggregated columns of the collapsible list. This section also supports multiple fields.
Each field in this section will appear as a separate column in the collapsible list. Available aggregations for these
sections include `Count`, `Count Distinct`, and `Sum`.
#### Filter
Read about the `Filter` section [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### Footer
Read about the `Footer` section [here](/creating-dashboards/visualizations/table-footer).
#### Show Categories
This toggle turns on category labels for each row in the first column of the collapsible list. In this section you can edit
what the labels are in order to ensure they are human readable.
#### Category Column Title
This section specifies a column title for the first column header of the collapsible list.
#### Column Names
This section allows edits of the columns headers for the aggregation columns of the collapsible list.
#### Rows
This section contains formatting for the collapsible list categories, the values in the first column.
Formatting for these cells is only available for numerical categories. There will be a carat by any rows
that are numerical and therefore can be formatted.
Read more about numerical formatting options [here](/creating-dashboards/visualizations/format-tab/value-formatting#number).
#### Columns
* **Sorting:** This specifies if sorting is configurable.
If sorting is toggled on, each category will appear in this section, and there will be a dropdown that can
be used to specify which column to use for sorting for that category, as well as the sort order, ascending or descending.
This section also contains formatting for the collapsible list columns. Each column will appear with numerical formatting options.
You can read more about the formatting options [here](/creating-dashboards/visualizations/format-tab/value-formatting#number).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
# Data Table
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/data-table
## Data Configuration
### Columns Included
This section lists the columns that are displayed in the table. By default, all columns will intially be
included in the data table. Click on the `X` to the right of the column to exclude it. This column will now
appear in the section below, `Columns Excluded`.
In this section, you can also specify certains columns to be initially hidden, but allow end users to be
able to unhide these. To do this, enable the `Editing Columns` section in the Format Tab, and then in the
Data Tab, click on the `Eye` icon for columns that you wish to hide initially.
### Columns Excluded
This section lists the columns that are not displayed in the table. By default, this section will be empty.
Click on the `+` icon to the right of columns that have been excluded to add them back to the table.
### Filter
This section is for filtering the chart based on certain columns. You can read about chart filtering
[here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
### Header
* **Title:** This text will appear at the top of the table.
* **Filtering:** This specifies if end users will be able to filter the table. If turned on, a filter
icon will appear at the far right of the header. End users can configure the filte by specifying a
column, operator, and value.
* **Editing Columns:** This specifies if end users have the ability to select and deselect columns they wish
to see in the data table, as well as reorder columns. If toggled on, a gear icon will appear at the right
corner of the header. End users can then select and deselect columns and drag to reorder them.
* **Descriptive Tooltip:** This tooltip will appear to the right of the title.
* **Url Link:** Read about this section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
### Footer
* This includes the total number of results and pagination information.
### Styling
**Columns**
* **Column lines:** This specifies if the table should have lines separating columns. By default, this is turned off.
* **Bold column headers:** This specifies if the column headers should be bolded.
* **Bold first column:** This specifies if the values in the first column should be bolded.
* **Freeze first column:** This specifies if the first column should always be visible if the table scrolls horizontally.
If toggled on, the first column will remain in the same spot when scrolling.
**Rows**
* **Row lines:** This specifies if the table should have lines separating rows. By default, this is turned on.
* **Row height:** This specifies a pixel height for each row. The minimum row height is 30. If cell text is wrapped,
the row height will only impact the header row.
* **Rows per page:** This controls how many rows are loaded each time a user pages through the table. By default,
this value is 50.
* **Group rows visually by first column:** This will group the data by the values in the first column, and then display
each group in a section on the table. If this is turned on, sorting and column editing will be disabled.
### Layout
* **Column Fit:** "Fill" automatically adjusts column widths to fill the table and columns cannot be resized.
"Fit cell" automatically adjusts columns to fit the body cell content so that all the cells' content are visible. Columns can be resized.
"Fit cell" and "Fit cell and header" automatically adjusts columns to fit the header and body cell content. Columns can be resized.
If you would like to manually resize columns, you cannot use "Fill".
"Fit cell" and "Fit cell and header" may only be used when "Wrap text" is turned off.
* **Wrap text**: Wraps text onto multiple lines if the text is too long for the cell.
If turned on, "Column Fit" may only be set to "Fill".
**Warning**: The Data Table is not optimized for wrapping text. Some features may not work as intended when on.
It is strongly recommended to use a fixed row height when on. Applies to header and body cells.
* **Custom Column Widths**: Overrides column widths. Works with any "Column Fit" and "Wrap text" setting.
### Column Formatting
* **Ignore invalid dates:** If you didn't want invalid dates to show up as "Invalid dates".
* **Sorting:** This specifies if sorting is allowed on the table. By default, this is turned on.
* **Sort descending first when clicked**
* **Initial Column Sort:** If sorting is turned on, you can specify an intial column and sort order.
**Columns**
* This section allows for formatting each individual column. The formatting options
will depend on the type of the column
* **Column Heading:** This text will appear as as the column header. By default, this is the name of the column
from the dataset. This can be edited to make the table more readable.
* **Tooltip:** This text will appear to the right of the column header.
* **Format:** Read more about all value formatting options [here](/creating-dashboards/visualizations/format-tab/table-value-formatting).
* **Alignment:** This specifies horizontal alignment for the column. Default alignments are dependent on the column type.
### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
## Actions Tab
### Heading Actions
**Export**
* **Format**
* **Download file name:** This specifies the name of the downloaded file. The default is the data panel name.
**Other**
* **Link to a URL**
### Chart interactions
* **Drilldown:** See more info [here](/creating-dashboards/drilldowns/filter-drilldowns/data-tables)
* **Row Level Actions:** See more info [here](/dashboard-features/row-level-actions)
# Density Heat Map
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/density-heat-map
Build a map that displays in Explo
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### Geospatial Data
* **Latitude Column**: Choose the column that stores latitude data. It must be of float type.
* **Longitude Column**: Choose the column that stores longitude data. It must be of float type.
* **Row Limit**: Restrict the number of rows of data displayed as markers on the map. The map is more performant when there are fewer data points drawn.
The maximum row limit is 5000.
#### Filter
Read about the `Filter` section [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### Map Options
* **Map Style**: Define the visual style of the map.
* **Save Initial View**: Configure the position, orientation, and zoom of the map that is shown when the map first loads.
#### Density
* **Intensity**: A multiplier primarily used to adjust the appearance of the heatmap.
* **Opacity**: Sets the transparency level of the density map layer.
* **Color Zones**: Defines the heatmap's color gradient. Multiple threshold values can be set between 0 and 1.
#### Enable Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### CSV Download
* **Tab Delimited:** This specifies if the CSV download exported from the data table should have values separated
by tabs. If not turned on, the separators will be commas.
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# Funnel Chart
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/funnel-chart
Available Funnel Chart Types: Funnel and Bar Funnel
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### Stages
This section defines which field will map to the x coordinate for each point on the scatter plot.
#### Amount
This section defines which field will map to the y coordinate for each point on the scatter plot.
#### Filter
This section is for filtering the chart based on certain columns. You can read about chart filtering [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### Enable Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### Funnel Chart
* **Vertical Funnel:** This will turn the funnel 90 degrees, creating a vertical funnel.
* **Show Percentage Labels:** This will display the percentage of the given stage size in comparison
to the largest stage on the funnel. This will appear below the total value at a given stage.
* **Show Stage Labels:** This will display the name of the given stage below the total value of that stage.
* **Stage Date Format:** If the stages are dates, the stage labels will format based on the input from this field.
#### Sorting
You can manually sort the stages within a normal funnel. To do this, use the plus sign to add each stage,
and then drag to reorder the stages. The stages not included will be shown at the end of the funnel.
#### Colors
Read about the `Legend` section [here](/creating-dashboards/visualizations/format-tab/overview#colors).
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
## Bar Funnel Specific Formatting Options
#### X-Axis
Read about the `X Axis` section [here](/creating-dashboards/visualizations/format-tab/x-axis).
#### Sorting
* **Sort Type:** The sort type allows you to pick a method of sorting the categories on the X axis of the funnel.
* **Default:** This will sort based on the order returned in the data.
* **Manual:** This will display all of the different stages and allow you to customize the specific order of appearance on the x axis.
* **X Axis:** This will sort based on the names of the stages. You can specify ascending or descending.
* **Y Axis:** This will sort based on the values of the stages. You can specify ascending or descending.
* **Column:** This will sort based on an aggregation of a specific column. You can specify the column and the aggregation as well as ascending or descending.
#### Funnel Chart
* **Cumulative:** This toggle will sum together the value at a certain stage with the
value from each stage to the right of the current stage.
* **Converted Tooltip Label:** The converted number is the value at any given stage, in other words
the percentage amount that progressed from the previous stage in the funnel. This section is for specifying the label for
this percentage in the tooltip.
* **Lost Tooltip Label:** The lost number is the percentage difference between the value at the previous stage and the value
at the current stage, in other works the amount that did not progress from the previous stage in the funnel.
This section is for specifying the label for this percentage in the tooltip.
* **Entity Name:** This is the name of the value that is being aggregated in the funnel chart. This section is for specifying the label
for this value in the tooltip.
* **Min Bar Width:** This is the minimum width of the bars in the funnel. If there is not enough horizontal space based on
the number of bars and minimum width, the bars will scroll.
# Heat Map
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/heat-map
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### X-Axis
This section is for the x axis grouping of the heat map.
#### Aggregation
This section is for the field you wish to aggregate the heat map on.
#### Y-Axis
This section is for the y axis grouping of the heat map.
#### Filter
This section is for filtering the chart based on certain columns. You can read about chart filtering [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### X-Axis
Read about the `X Axis` section [here](/creating-dashboards/visualizations/format-tab/x-axis).
#### Y-Axis
Read about the `Y Axis` section [here](/creating-dashboards/visualizations/format-tab/y-axis).
Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### Heat Map Options
* **Show Chart Values:** If toggled on, the value at each square will be displayed on the square in the heat map.
* **Hide Zeros:** If toggled on, squares that have 0 as a value will not have a number displayed in the square.
#### Gradient
-**Gradient Type:** This section allows you to choose between a linear or diverging color palette for the heap map. -**Colors:** You may choose either 2 (linear) or 3 (diverging) colors, as well as the value thresholds for each color.
Column min/mid/max will pull the minimum, average, and maxiumum values as thresholds for those colors, whereas exact values will
just use the hardcoded values.
#### Data Labels
Read about the `Data Labels` section [here](/creating-dashboards/visualizations/format-tab/data-labels).
#### Legend
Read about the `Legend` section [here](/creating-dashboards/visualizations/format-tab/legends).
#### Colors
Read about the `Colors` section [here](/creating-dashboards/visualizations/format-tab/overview#colors).
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link)
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration)
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# KPI
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/kpi
Available KPI Chart Types: KPI, Progress Bars
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### Aggregation
This is the field displayed in the KPI. SUM or COUNT will be the default aggregation provided, but selecting the aggregation
will list all the possible aggregations to choose from. You can also use custom formulas, read about how to configure those [here](/creating-dashboards/visualizations/format-tab/custom-formulas).
#### Filter
Read about the `Filter` section [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### General
* **Description:** This is a subtitle that will appear below the title of the KPI.
* **Alignment:** This section specifies the alignment options for the KPI. In this section you can select
vertical and horizontal alignment, as well as relative alignment between the title and the value.
#### Value
Read about the `Value` section [here](/creating-dashboards/visualizations/format-tab/kpi-value).
#### Color
* **Format Type:**
* **Constant**
* **Value Text Color:** The color chosen here will always apply to the KPI Value.
* **Apply Color to Goal & Units** This specifies that the `Value Text Color` also applies to any units and progress bars.
* **Conditional**
* **Conditional Trigger Value:** This value will be compared with the KPI value to determine which color to use for the KPI. It is possible to use a variable in this section, such as a value from a dataset.
* **Positive Color** This specifies the color of the KPI value if the value is greater than the Conditional Trigger Value.
* **Negative Color** This specifies the color of the KPI value if the value is less than or equal to the Conditional Trigger Value.
* **Apply Color to Goal & Units** This specifies that the conditional color also applies to any units and progress bars.
#### Progress Bar
* **Progress Goal:** This specifies the goal, or total value of the progress bar that the kpi value is being compared against. This will appear as a denominator on the KPI.
* **Hide Goal:** This specifies if the goal, or denominator, is hidden from the KPI.
* **Show Percent:** This specifies if a percentage should be shown as the KPI value, instead of value / goal.
* **Percent Decimal Places:** If `Show Percent` is toggled on, this specifies the number of decimal places shown in the percentage.
* **Progress Bar Color** This specifies the color of the progress bar.
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# KPI Trend
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/kpi-trend
Look at how your data trends over time.
## Overview
The KPI Trend chart is a visual representation that compares data groupings over a specific time frame with a similar time frame from a prior period. It helps you to visually analyze the percentage increase or decrease in the aggregated data for a particular period as compared to the same grouping of data from a previous period. When you hover over a point on the chart, it will display the data grouping for that time, as well as the same grouping from the previous period, allowing you to compare the two. At the top of the chart, you will find the total aggregated data for both periods and the percentage change between them.
However, the periods on the chart may not always align with the date range selected from a dropdown menu, because the periods are defined differently. For instance, in the provided example, the first period starts on 7/31, as expected, but the comparable period from the previous month starts on 6/26. This discrepancy occurs because the periods are defined as the last Mondays of the months, so 6/26 is the last Monday of June, and 7/31 is the last Monday of July. Similarly, the end date on the chart is 8/28, not 8/30, because the X-axis dates represent the start of a period. So, 8/28 signifies the 'Week of 8/28,' which includes the date 8/30.
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### Aggregation
This section is for the field you wish to aggregate for the KPI Trend.
#### Period Range
This section is for the period over which you wish to view the aggregation. There are a variety of acceptable inputs for this field.
* Preset Values (the examples assume today is 8/15/2023):
* Today
* `8/15 - 8/15`
* Last 7 days
* Goes back 6 days, creating a 7 day period including today
* `8/9 - 8/15`
* Last 4 weeks
* Goes back 27 days, creating a 28 day period including today
* `7/19 - 8/15`
* Last 3 months
* Goes back 3 months
* `5/16 - 8/15`
* Note that this will create a period of \~90 days, but can vary depending on the lengths of months
* If the day 3 months ago doesn’t exist, it uses the end of the month
* 3 months before 5/30 resolves to 2/28
* Last 12 months
* Goes back 12 months
* `8/16/2022 - 8/15/2023`
* If the day that is "last 12 months" ago doesn't exist, it uses the end of the month
* Last 12 months for 2/29 resolves to 2/28 on a non-leap year
* Month to date
* Beginning of month to EOD
* `8/1 - 8/15`
* Year to date
* Beginning of year to EOD
* `1/1 - 8/15`
* Previous month
* Previous completed month
* `7/1 - 7/31`
* Custom Hardcoded Value:
* Custom Range
* You can select a specific start date and end date for this period.
* Custom Range Variables:
* You can specify a set of variables to be used for the start and end date for this period.
* The format of these variables should follow the standard Explo variable syntax, e.g. `{{ start_date }}`
* The date format is ISO 8601, like `2024-04-24T10:30:00.000Z`.
* For custom inputs, we just treat the period as a raw number of days, the nuances around end date above in the `Preset Values` section still apply, and then we just subtract the length to get the period length.
* For time periods, the same rules apply, but the end date of a previous period is the second before the start date. So 12:00-12:30 is compared against 11:29-11:59.
* Dashboard Inputs:
* You can link some UI elements to populate this period,
allowing end users to specify the period they are interested in. These UI elements must have default values in order to be usable as inputs in this section.
* Date Range Input
* Pre-set dropdown options
* The analogous options to the KPI Trend Config Panel's `Preset Values` apply here
* For the below examples, let's assume today is `8/15/2023`
* Week to Date
* Beginning of week (starting on Monday) to EOD
* `8/14 - 8/15`
* Quarter to Date
* Beginning of quarter to EOD
* `7/1 - 8/15`
* Previous Week
* Last completed week, ranging from Monday to EOD Sunday
* `8/7 - 8/13`
* Previous Quarter
* Full quarter
* `4/1 - 6/30`
* Previous Year
* Full year
* `1/1 - 12/31`
* Last 30 Days
* Goes back 29 days, creating a 30 day period including today
* `7/16 - 8/15`
* Last 6 Months
* Goes back 6 months, the same logic as Last 3 Months applies
* `2/16 - 8/15`
* Last 12 Complete Weeks
* `5/22 - 8/13`
* Last 3 Complete Months
* `5/1 - 7/31`
* Last 6 Complete Months
* `2/1 - 7/31`
* Last 12 Complete Months
* `8/1/2022 - 7/31/2023`
* Year to Last Completed Month
* `1/1 - 7/31`
* Time Period Dropdown
* The available options and the date offsets should be clear
#### Comparison Range
This section specifies the comparison period that will be displayed as a line in a secondary color on the trend chart.
Selecting `Previous Period` will apply a range based on the length of the Period Range. For example, if the Previous
Range is `Last 12 months`, the comparison range will be 12 months. The date ranges at the top right and top left corners
of the chart should differ by the length specified in the comparison range.
The length of the comparison range will ALWAYS be the same as the length of the current range. The main behavior to note is how the end date of the comparison period is calculated:
* Previous Period - always one day before the current period start date
* The start date is then calculated as end date minus the period length
* Previous Month - the same numerical day, but offset a month. In cases where the comparison month is shorter, take the last day of the month
* e.g. March 31, 30, 29, and 28 compared to previous month all resolve to 2/28 (on a non leap year)
* Previous Year - the same numerical day, but offset a year
* For 2/29 on a non leap year, this resolves to 2/28
The beginning of the week starts on Monday.
**Examples**
Assume today is `8/15/2023`.
Period Range:
* Today - `8/15 - 8/15`
* Previous Period - `8/14 - 8/14`
* Previous Month - `7/15 - 7/15`
* Previous Year - `8/15/2022 - 8/15/2022`
* Last 7 days - `8/9 - 8/15`
* Previous Period - `8/2 - 8/8`
* Previous Month - `7/9 - 7/15`
* Previous Year - `8/9/2022 - 8/15/2022`
* Last 4 weeks - `7/19 - 8/15`
* Previous Period - `6/21 - 7/18`
* Previous Month - `6/18 - 7/15`
* Previous Year - `7/19/2022 - 8/15/2022`
* Last 3 months - `5/16 - 8/15`
* Previous Period - `2/13 - 5/15`
* Previous Month - `4/15 - 7/15`
* Previous Year - `5/16/2022 - 8/15/2022`
* Last 12 months - `8/16/2022 - 8/15/2023`
* Previous Period - `8/16/2021 - 8/15/2022`
* Previous Month - `7/16/2022 - 7/15/2023`
* Previous Year - `8/16/2021 - 8/15/2022`
* Month to date - `8/1 - 8/15`
* Previous Period - `7/17 - 7/31`
* Previous Month - `7/1 - 7/15`
* Previous Year - `8/1/2022 - 8/15/2022`
* Year to date - 1/1 - 8/15
* Previous Period - `5/19/2022 - 12/31/2022`
* Previous Month - `12/1/2022 - 7/15/2023`
* Previous Year - `1/1/2022 - 8/15/2022`
* Previous month - `7/1 - 7/31`
* Previous Period - `5/31 - 6/30`
* Previous Month - `5/31 - 6/30`
* Previous Year - `7/1/2022 - 7/31/2022`
#### Grouping
This section specifies the length of the groups on the X Axis. The aggregation will be calculated based on the group.
The options for this section are: Hourly, Daily, Weekly, Monthy, Yearly.
#### Filter
Read about the `Filter` section [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### General
This section only applies when `Hide Trend Lines` is toggled on.
* **Subtitle:** This subtitle will appear below the title of the KPI.
* **Title Alignment:** This section specifies horizontal alignment for the title of this KPI.
#### Value
Read about the `Value` section [here](/creating-dashboards/visualizations/format-tab/kpi-value).
#### Trend
* **Hide Trend Lines:** Hiding the trend lines will turn this visualization into a simplified metric with no line graph.
This metric will be similar to a normal KPI, but there will be trend change value below the KPI.
* **Main Trend Color:** This specifies the color of the line corresponding to the aggregation values in the `Period Range`.
* **Comparison Trend Color:** This specifies the color of the comparison line.
* **Trend Decimal Places (trend lines hidden):** This specifies the number of decimal places in the KPI value.
* **Show Absolute Trend Change (trend lines hidden):** This specifies if the trend change is a percentage or absolute number.
By default, the trend change will be a percentage.
* **Use Trend Tag Format (trend lines hidden):** This specifies that the trend change value will have a background color
matching the trend change color. By default, this is turned off.
* **Reverse Trend Label Colors:** This switches the trend change tag colors. Positive changes will be red and negative changes
will be green.
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# Line Chart
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/line-chart
Available Line Chart Types: Line and Combo
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### X-Axis
This section is for the field you wish to group by for the line chart.
#### Y-Axis
This section is for the field you wish to aggregate for the line chart. You can add multiple columns into thissection. Each column will appear as a separate line on the chart.
#### Group By
This section is for additional grouping on the line chart. If there is a column in this section,
there will be as many lines on the chart as there are groups in the specified column.
It is also possible to add multiple columns in this section. If multiple columns are selected, the end user will
be able to toggle between the group by options on the chart. More info about this can be found [here](/creating-dashboards/visualizations/format-tab/chart-level-filters).
It is not possible to have multiple aggregations **and** a group by column.
#### Filter
Read about the `Filter` section [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### X-Axis
Read about the `X Axis` section [here](/creating-dashboards/visualizations/format-tab/x-axis).
#### Y-Axis
Read about the `Y Axis` section [here](/creating-dashboards/visualizations/format-tab/y-axis).
#### Enable Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### Tooltip
Read about the `Tooltip` section [here](/creating-dashboards/visualizations/format-tab/overview#tooltip).
#### Goal Line
Read about the `Goal Line` section [here](/creating-dashboards/visualizations/format-tab/goal-lines).
#### Line Chart
* **Line Elasticity:** This section specifies the line elasticity of the line. It can either be curved or straight.
* **Line Width:** This section specifies the width of the line.
* **Show Markers:** This section enables dot markers at each point on the line.
* **Include missing dates:** This section will extend the X-Axis to include dates that are not present in the data, but may be specified by the filters.
* **Fill in missing dates with 0s:** This section will add zeros to the chart when there are missing dates in the data, when the X Axis is a timeseries.
* **Fill in missing values with 0s:** This section will add zeros to the chart when there are dates with missing values in the data, when the X Axis is a timeseries.
#### Data Labels
Read about the `Data Labels` section [here](/creating-dashboards/visualizations/format-tab/data-labels).
#### Legend
Read about the `Legend` section [here](/creating-dashboards/visualizations/format-tab/legends).
#### Colors
Read about the `Colors` section [here](/creating-dashboards/visualizations/format-tab/overview#colors).
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# Location Marker Map
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/location-marker-map
Build a map with markers in Explo
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### Geospatial Data
The section configures the data that will be used to draw markers on the map.
* **Latitude Column**: Choose the column that stores latitude data. It must be of float type.
* **Longitude Column**: Choose the column that stores longitude data. It must be of float type.
* **Row Limit**: Restrict the number of rows of data displayed as markers on the map. The map is more performant when there are fewer markers drawn.
The maximum row limit is 5000.
#### Tooltip Data
Select any columns that you'd like to appear as metadata in the tooltip that pops up when a marker is clicked. The columns will be listed in the tooltip in the order you select them.
#### Filter
Read about the `Filter` section [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### Map Options
* **Map Style**: Define the visual style of the map.
* **Save Initial View**: Configure the position, orientation, and zoom of the map that is shown when the map first loads.
#### Marker
* **Fill**: Define the color of the markers.
* **Size**: Define the height and width of the markers. The minimum is 10px and the maximum is 50 px.
* **Outline Color**: Define the color of the outline of the marker. You can set this to the same color as the marker for no outline.
* **Outline Width**: Defined the width of the outline. The minimum is 0px and the maximum is 30px. You can also set this to 0px to hide the outline.
#### Tooltip
You may choose to show or hide a header to the tooltip. The header displays the latitude and longitude values at that marker.
You also can further format numeric columns. Read about how to format these columns in this `Tooltip` section [here](/creating-dashboards/visualizations/format-tab/overview#tooltip).
If you are interested in more formatting options for the tooltip, please reach
out to the Explo team.
#### Enable Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### CSV Download
* **Tab Delimited:** This specifies if the CSV download exported from the data table should have values separated
by tabs. If not turned on, the separators will be commas.
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# Pie Chart
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/pie-chart
Available Pie Chart Types: Pie and Donut
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### Categories
This section is for the field you wish to group the pie or donut donut chart by.
#### Values
This section is for the field you wish to aggregate the pie or donut chart on.
It is not possible to have multiple aggregations **and** a group by column.
#### Filter
Read about the `Filter` section [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### Enable Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### Pie Chart
* **Show Value Labels:** This section will display the value of each slice of the pie.
* **Value Format:** This section will specify the format of the value label, either a number or percentage.
* **Label Decimal Places:** This section will specify the number of decimal places on this value label.
* **Show Catgeory Names:** This section will display the category names of each slice of the pie.
* **Max Catgeories:** This section will limit the number of slices appear on the pie. If there are more slices in
the data than the number specified here, the rest of the data not included in the max category number will
create an additional slice, labeled "Other".
* **Category Date Format:** This section will specify the date format of the category names, if the categories are a date type.
#### Interactive Tooltip
Read about the `Tooltip` section [here](/creating-dashboards/visualizations/format-tab/overview#tooltip).
#### Data Labels
Read about the `Data Labels` section [here](/creating-dashboards/visualizations/format-tab/data-labels).
#### Legend
Read about the `Legend` section [here](/creating-dashboards/visualizations/format-tab/legends).
#### Colors
Read about the `Colors` section [here](/creating-dashboards/visualizations/format-tab/overview#colors).
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# Pivot Table
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/pivot-table
## Data Configuration
#### Columns
The field in this section will populate the column headers of the pivot table.
#### Rows
The field in this section will populate the first column of the pivot table.
#### Pivot Value
This section is for the field you wish to aggregate the pivot table on, as well as the type of aggregation.
The default aggregation is `Sum` for numerical values or `Count` for all other values.
#### Join with another dataset
This section allows you to select another table entirely to generate the column names for your
table. Select "Join with another dataset" and choose a dataset and column to
configure this behavior.
#### Filter
Read about the `Filter` section [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
Most of the formatting options for pivot tables are shared with the data table visualization. Read more about these options
[here](/creating-dashboards/visualizations/charts/data-table#formatting). Below are the formatting options
specific to pivot tables.
#### Rows
* **Display Sum Row:** This will create a row at the top of the pivot table aggregating all the values in each column.
* **Sum Row Label:** This is the label for the sum row, in the first row of the first column of the pivot table.
* **Bold Sum Row:** This option bolds all of the values in the sum row.
* **Sum Row Background Color:** This option sets a background color for the sum row. By default, this is white.
#### Columns
## Column Names
* **String Format:** This section can be used to specify a format for the column headers.
* **Remove Underscores:** This section can be used to remove underscores from the column headers.
* **First Column Name:** This section can be used to edit the header of the first column.
# Pivot Table V2
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/pivot-table-v2
Create complex pivot and collapsible list implementations
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### Rows
Define what Values are aggregated on. When multiple rows are specified, a collapsible list dropdown is automatically applied. An example input here could be 'Salesperson Name', which would create a row for each salesperson. Multiple rows could be 'Region' followed by 'Salesperson Name', which would create a collapsible list of regions and the salespeople within them.
#### Values
The values aggregated by Rows and Columns. An example input here could be 'Sum' on 'Contract Value'.
#### Columns
Defines an additional parameter to calculate the Values on that shows up as columns in the table. For example, this could be 'Month' on 'Contract Date' to get columns for each month. For example, we could calculate total sales by salesperson by month by putting a 'Month' aggregation on 'Contract Date' in the columns section, 'Salesperson Name' in the rows, and 'Sum' on 'Contract Value' in the Values section.
It is possible to have multiple rows and multiple values
#### Filter
Read about the `Filter` section [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
### Column Formatting
You can set the title of the aggregation for each Value.
Additionally, you may format the values. Read about the `Value Formatting` section [here](/creating-dashboards/visualizations/format-tab/value-formatting).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Enable Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### Summary Configuration
Summary configuration will render an additional column at the end of the table, displaying the summary of each row's aggregation data over its pivot column values. For example, if you have an aggregation in your table, a summary would show the average across all pivoted groups.
Note that this is only available on the [new data connector (called FIDO)](/data-sources/new-data-connector-fido) and requires rows, values, and aggregations to be defined in your chart configuration.
## Pivot Table Cell Limits
To maximize performance, the pivot table has a limit to render 1750 populated cells in the table. If you need your pivot to have more cells, reach out to Explo Support.
# Sankey Chart
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/sankey
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### From
Define the node from which values are flowing. For example, if \$100 flows from Subsidiary A to Parent Company B, then the From field would be Subsidiary A.
#### To
Define the node to which values are flowing. For example, if \$100 flows from Subsidiary A to Parent Company B, then the To field would be Parent Company B.
#### Aggregation
Define the amount that is flowing from Point A to Point B. For example, if $100 flows from Subsidiary A to Parent Company B, then the Aggregation field would be the $100 value.
#### Filter
This section is for filtering the chart based on certain columns. You can read about chart filtering [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### Show Values
Toggle to default show values on the chart, or only on hover.
#### Value Format
Read about the `Value Formatting` section [here](/creating-dashboards/visualizations/format-tab/value-formatting).
#### Enable Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### Data Labels
Read about the `Data Labels` section [here](/creating-dashboards/visualizations/format-tab/data-labels).
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# Scatter Plot
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/scatter-plot
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### X-Axis
This section defines which field will map to the x coordinate for each point on the scatter plot.
#### Y-Axis
This section defines which field will map to the y coordinate for each point on the scatter plot.
#### Group By
This section is for grouping on the scatter plot. If there is a column in this section, each point
will be colored based on the value in this column for that point.
Grouping is only available when the type of the `X Axis` field is numerical.
#### Filter
This section is for filtering the chart based on certain columns. You can read about chart filtering [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### X-Axis
Read about the `X Axis` section [here](/creating-dashboards/visualizations/format-tab/x-axis).
#### Y-Axis
Read about the `Y Axis` section [here](/creating-dashboards/visualizations/format-tab/y-axis).
#### Enable Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### Scatter Plot Chart
* **Marker Radius:** This will specify the size of the points on the scatter plot.
* **Label:** This will specify the title at the top of the tooltip when hovering over a point on the scatter plot.
* **Use Jitter to Spread Points:** This section will spread points out while still being clustered within a group if the X Axis is categorical.
#### Data Labels
Read about the `Data Labels` section [here](/creating-dashboards/visualizations/format-tab/data-labels).
#### Legend
Read about the `Legend` section [here](/creating-dashboards/visualizations/format-tab/legends).
#### Colors
Read about the `Colors` section [here](/creating-dashboards/visualizations/format-tab/overview#colors).
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# Spider Chart
Source: https://docs.explo.co/creating-dashboards/visualizations/charts/spider-chart
## Data Configuration
#### Chart Type
You can read about this section [here](/creating-dashboards/visualizations/data-tab#chart-type).
#### Categories
This section is for the field you wish to group the spider chart by.
#### Aggregation
This section is for the field you wish to aggregate the spider chart on.
#### Group By
This section is for additional grouping on the spider chart. If there is a column in this section,
there will be as many lines on the chart as there are groups in the specified column.
#### Filter
This section is for filtering the chart based on certain columns. You can read about chart filtering [here](/creating-dashboards/visualizations/data-tab#filter).
## Formatting
#### Header
Read about the `Header` section [here](/creating-dashboards/visualizations/format-tab/overview#header).
#### X-Axis
Read about the `X Axis` section [here](/creating-dashboards/visualizations/format-tab/x-axis).
#### Y-Axis
Read about the `Y Axis` section [here](/creating-dashboards/visualizations/format-tab/y-axis).
#### Enable Download
Read about the `Enable Download` section [here](/creating-dashboards/visualizations/format-tab/overview#enable-download).
#### Spider Chart
* **Grid Shape:** This section specifies the shape of the skeleton of the spider, either round or polygon.
* **Line Width:** This section specifies the width of the line.
#### Data Labels
Read about the `Data Labels` section [here](/creating-dashboards/visualizations/format-tab/data-labels).
#### Legend
Read about the `Legend` section [here](/creating-dashboards/visualizations/format-tab/legends).
#### Colors
Read about the `Colors` section [here](/creating-dashboards/visualizations/format-tab/overview#colors).
#### URL Link
Read about the `URL Link` section [here](/creating-dashboards/visualizations/format-tab/overview#url-link).
#### No Data Configuration
Read about the `No Data Configuration` section [here](/creating-dashboards/visualizations/format-tab/overview#no-data-configuration).
#### Expose Underlying Data
Read about the `Expose Underlying Data` section [here](/creating-dashboards/drilldowns/underlying-data-drilldowns).
# Data Tab
Source: https://docs.explo.co/creating-dashboards/visualizations/data-tab
The data tab is used to configure the visualization type and aggregations shown on the data panel. Choose between the different visualizations we offer below, select which fields to display, and set any data filters.
### Shared Data Tab Options Across Chart Types
The following are shared section across most charts. For a full list of data options for a specific chart, navigate to the page for that chart type.
#### Chart Type
This section contains the variations of each chart type, and from here, you can change the chart type of the current chart that is being editted.
For example, if in the dashboard edit mode you pull a bar chart onto the dashboard, this section of the data tab will allow you to select a specific
type of bar chart, grouped, horizontal, etc.
When swapping between chart types, if the data configuration is compatible with the new chart type, the data configuration will be transfered.
Otherwise, it will be cleared, and the chart will need to be built again from scratch.
For tables (data, pivot, and collapsible list), it is not possible to switch chart types, so this section will not appear on the data tab.
#### Filter
This section allows for filtering a single chart. In this section, you select a `column` from the dataset that you would
like to filter the chart on, as well as an `operator` and a `value` to compare against the column.
The `operator` type will depend on the type of selected column, e.g. numerical column will allow operators such as `>`, `<`, etc. The `value` section
can be a manual input, such as a hardcoded string or number, or it can take in a variable input, such as a field from a dropdown on the dashboard.
The variable input option will only be enabled if there is a UI element on the dashboard that has a compatible type.
# Chart Level Filters
Source: https://docs.explo.co/creating-dashboards/visualizations/format-tab/chart-level-filters
Chart level filters allow you to choose the categories that customers will be able to pick from to view charts.
## Adding the Chart Level Filter
In a chart that supports color categorization, you can drag multiple columns
into the color category. If more than one color exists, a dropdown will appear
on the respective chart that the customer can use to switch between views.
You can also format the dropdown to appear either in the top right corner or
below the title of the chart. The default placement is top right corner.
## Variable Usage
The selected item in the dropdown will be saved in a variable and can be used
like any other variables across the dashboard.
In the SQL query, use the following syntax
```sql theme={null}
WHERE 1=1
[[AND column_1 = {{.EXPLO_COLOR_CATEGORY}}]]
```
# Custom Formulas
Source: https://docs.explo.co/creating-dashboards/visualizations/format-tab/custom-formulas
Custom Formulas allow you to visualize custom aggregations on charts.
## Adding a Custom Formula
### Supported charts
Custom Formulas can be used on the following charts:
* KPIs
* Bar Charts
* Line Charts
* Combo Charts
* Area Charts
* Pie Charts
* Heat Maps
* Funnels
* Spider Charts
### Use a Custom Formula
To use a custom formula, go to the Data tab and click on the "fx" button
to the right of the aggregation configuration section.
In the input field, write your formula using SQL aggregation functions.
Here are some examples of custom formulas:
`SUM(price)`
`SUM(revenue) - SUM(cost)`
### Edit or Remove a Custom Formula
You can edit the formula by clicking on the icon to the left,
and you can delete the formula by clicking on the icon to the right
### Rename the Formula
You can rename the label that appears in tooltips and legends in the Data Labels section of the Format tab
# Data Labels
Source: https://docs.explo.co/creating-dashboards/visualizations/format-tab/data-labels
Data labels are the text in the legends and interactive tooltips on all non table charts. They are populated from values in the dataset, and this section in the Format Tab allows you to edit them.
### Supported charts
Data Labels can be edited for all of the following charts:
* Bar Charts (grouped, stacked, and 100%)
* Line Charts (line and combo)
* Area Charts
* Pie Charts
* Heat Maps
* Spider Charts
### Editing a Data Label
This section will contain an input field for each field that will appear in the legend or tooltip.
The default value for these will be the name of the column, but they can be edited to be more readable.
# Goal Lines
Source: https://docs.explo.co/creating-dashboards/visualizations/format-tab/goal-lines
Goal lines allow you to enhance your graphs and provide information on targets for the data.
## Adding a Goal
### Supported charts
Goals can be added to charts that display data on the two-dimensional axis.
Specifically:
* Bar Charts (grouped, stacked, and 100%)
* Line Charts
* Combo Charts
* Area Charts
### Create a Goal
To create a goal, go to the Format tab and click the "+" button for the "Goal
Line" section.
## Goal Line
### Example
### Configuration
## Goal Band
### Example
### Configuration
## Multiple Goals
You can add more than one goal. To add multiple goals, simply click the "+"
button for each new line or band.
# KPI Value
Source: https://docs.explo.co/creating-dashboards/visualizations/format-tab/kpi-values
### Supported charts
* KPI
* KPI Progress
* KPI Trend
* KPI Trend Text Panel
### Options
#### Format
This specifies the format of the KPI value. The options are: number, number with significant digits, dollar, percentage, and time (days, hours, etc).
#### Smart Number Abbreviation
This specifies if the KPI value should be abbreviated using smart number abbreviation. It truncates to 2 decimal places thousands (k), millions (M), billions (B), and trillions (T). This toggle is turned off and disabled automatically when selecting the abbreviation option from the Format toggles.
#### Decimal Places
This specifies the number of decimal places on the KPI value.
#### Significant Digits
This specifies the number of significant digits that should be used, in the case that the format is `Abbr`.
#### Time Format
Specifies the time format for KPI values. Options:
* **Standard**: Formats as `DD days HH:mm:ss` (see [date format options](https://moment.github.io/luxon/#/formatting?id=table-of-tokens))
* **Abbreviated**: Shows largest nonzero value of days, hours, minutes, or seconds.
* **Custom Time Format**: Formats using your custom format (see [date format options](https://moment.github.io/luxon/#/formatting?id=table-of-tokens)).
* **Custom Total Duration**: Treats input as a Duration and uses your custom format (see [duration format options](https://moment.github.io/luxon/api-docs/index.html#durationtoformat)). To add additional text, wrap it in single quotes, e.g., `dd 'days' hh 'hours'`.
#### Multiplier
This specifies a numerical multiplier for the KPI value.
#### Unit
This specifies a unit for the KPI value, e.g. hours, people, etc.
#### Include Unit Padding
This specifies if there is space between the KPI value and the unit. For something like `g` for grams, this should be toggled off. But for something like `hours`, it may make sense to have padding.
#### Text Format
This specifies if additional formatting should be applied to the KPI value, either bold or italics.
#### Image to Display Next to Value (only for KPI/KPI Progress)
An image can be displayed next to the KPI value by inputting an image URL in this section.
#### Value Alignment (only for KPI Trend Text Panel)
This specifies the horizontal alignment of the KPI Trend value when trend lines are hidden.
# Legends
Source: https://docs.explo.co/creating-dashboards/visualizations/format-tab/legends
Legends can provide additional information to make visualizations easier to read.
### Supported Charts
Legends are supported on the following charts:
* Area Charts
* Bar Charts
* Box Plots
* Heat Maps
* Line Charts
* Pie Charts
* Scatter Plots
* Spider Charts
### Configuring a Legend
The legend is an optional component on the chart. Toggle it on and off using the switch to the right of the section header.
#### Title
The title is optional, but when turned on, it will appear above the legend. By default, the title is turned off.
#### Position
The legend can be positioned on any side chart. This section allows you to specify the positioning. The default position is
to the right of the chart.
# Overview
Source: https://docs.explo.co/creating-dashboards/visualizations/format-tab/overview
The format tab allows you to set specific formatting parameters for your visualization including labels, legends, axis settings, colors, and more. Note that the format tab will be different depending on the visualization that you choose.
#### Shared Format Tab Options Across Visualizations
The following are shared sections across most visualizations. For a full list of formatting options for a specific chart, navigate to the page for that chart type.
#### Header
* **Title**: This is the text that will appear at the top of the chart.
* **Tooltip**: This tooltip will appear to the right of the title. It can be used to add a description to the chart.
#### Enable Download
You can choose to enable downloading for all charts, except KPIs. The toggle to the right of this section header is used to control this.
* **Download file name**: The name of the file that is downloaded can be configured in this section. The default name is the name of the data panel.
#### Tooltip
This tooltip appears when hovering over a section of a chart, e.g. a bar in a bar chart. The tooltip gives details of the bar at the hover point.
* **Show percentage values:** This option adds the percentage breakdown of the bar or line for each y axis value at the given x axis value.
#### Colors
* **Color Palette**: The color palette for a specific chart can be specified with this section here. You can select a palette from the list of pre-populated palettes, as well as edit these palettes or create new palettes from scratch.
#### URL Link
This section, if toggled on, will display a button at the top right corner of the chart that links to another url.
* **URL:** This is the external url that the chart will navigate to. This link must be prefaced with `https://`.
* **Open in New Tab:** This toggle will determine if the link that is opened when the button is clicked opens in the same tab or in a new tab.
#### No Data Configuration
This is the text that will appear in a panel if there is no data returned for a specific chart. This section will allow you to configure what the panel looks like in this state.
* **Hide Chart Icon**: This toggle can be used to show or hide the chart icon on the empty panel.
* **No Data Text:** This is the text that will appear on a panel that has no data. The default is "No Data".
* **Text Size:** This section will allow you to specify the text size of the **No Data Text**.
# Table Value Formatting
Source: https://docs.explo.co/creating-dashboards/visualizations/format-tab/value-formatting
The values in a table on a dashboard can be formatted, and they each have a set of formatting options, dependent on the value type. This page details all the possible formatting options for each value type.
## Number
#### Format
These are the number formatting options that can be selected. The full list is: no format, number,
abbreviated number, dollar, percentage, and time (days, hours, etc).
#### Decimal Places
This specifies the number of decimal places on the value.
#### Significant Digits
This specifies the number of significant digits that should be used, in the case that the format is `Abbr`.
#### Time Format
Specifies the time format for numeric values. Options:
* **Standard**: Formats as `DD days HH:mm:ss` (see [date format options](https://moment.github.io/luxon/#/formatting?id=table-of-tokens))
* **Abbreviated**: Shows largest nonzero value of days, hours, minutes, or seconds.
* **Custom Time Format**: Formats using your custom format (see [date format options](https://moment.github.io/luxon/#/formatting?id=table-of-tokens)).
* **Custom Total Duration**: Treats input as a Duration and uses your custom format (see [duration format options](https://moment.github.io/luxon/api-docs/index.html#durationtoformat)). To add additional text, wrap it in single quotes, e.g., `dd 'days' hh 'hours'`.
#### Include thousands-separators
This specifies if separators (depending on internationalization) should be used for values over 999.
#### Multiplier
This specifies a numerical multiplier for the value.
#### Unit
This specifies a unit for the value, e.g. hours, orders, etc.
## String
The following are the formatting options available for strings in tables.
#### Normal
This is the default string format. No modifications are made, the string will appear exactly as it is in the dataset.
#### Category
Each unique string will be tagged with a different color, the default color palette will appear below the format section,
and the color for each category can be updated.
#### Link
Cells formatted as links will allow users to navigate to other pages from a row in a table. Choosing `Label` allow
you to specify custom text that will appear in each row for that column as the display for the underlying link. `Column`
will allow to pick another column within the dataset as the display for the underlying link.
#### Image
Cells that have image urls can be formatted to display the image in the table with this format option. You can also select
the shape of the image, either circle or square.
## Date
Dates within tables are also fully customizable. Choose either a preset date format option, or choose `Custom` and
input a date format. Read more about date format options [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens)
The beginning of the week starts on Monday.
# X Axis
Source: https://docs.explo.co/creating-dashboards/visualizations/format-tab/x-axis
### Supported Charts
* Area Charts
* Bar Charts
* Box Plots
* Bar Funnel Charts
* Heat Maps
* Line Charts
* Scatter Plots
* Spider Charts
### Configuring the X Axis
#### Axis Title
This text will go below the X Axis (or above if the axis is placed on the top of the chart).
#### Axis Placement
This specifies the placement of the X Axis - either Bottom or Top. The default placement is Bottom.
#### Date Format
This specifies the format of the dates on the X axis. Learn more about date formats [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).
#### Axis Line
This specifies if the X Axis appears at all. By default, this is turned on. If turned off, the labels, ticks, and title
will not appear.
#### Axis Ticks
This specifies if the ticks pointing down from the X Axis at each category on the axis are present. By default,
this is turned on.
#### Axis Labels
This specifies if the labels for each category of the X Axis are present. By default, this is turned on.
#### Reverse Axis
This allows you to flip the order of the categories on the X Axis.
#### Show Total Values (area, bar, line, spider chart only)
This specifies if values at each point on the chart are displayed. If the chart is too small
to display all values, some will be omitted so the chart remains readable.
#### Max Categories (bar, line, and spider chart only)
This section limits the number of categories that are displayed on the X Axis.
#### Show Bar Values (bar chart only)
This specifies if the values for each bar are displayed on the bar. These values will appear
directly on the bar rather than above the bar, which can be achieved by turning on `Show Total Values`.
#### Bar Corner Radius (bar chart only)
This specifies the roundedness of the corners of the bars in a bar chart.
#### Enable Scroll Bar (bar chart only)
This specifies if a scroll bar should be enabled when the number of categories on the X axis is too big.
#### Hide Data From Latest Period (bar, line, area chart only)
In the case of timeseries data on the X Axis, this specifies if data from the most recent period should
be excluded from the chart, potentially because the most recent period is incomplete.
# Y Axis
Source: https://docs.explo.co/creating-dashboards/visualizations/format-tab/y-axis
### Supported Charts
* Area Charts
* Bar Charts
* Box Plots
* Bar Funnel Charts
* Heat Maps
* Line Charts
* Scatter Plots
* Spider Charts
### Configuring the X Axis
#### Axis Title
This text will go on the left of the y Axis (or to the right if the Y axis is flipped)
#### Value Format
This specifies the formatting of the numbers on the y axis either as numbers, dollar amounts, or percentages.
#### Show Axis Decimals
This specifies the number of decimal places displayed on the y Axis values.
#### Use Logarithmic Scale
This specifies if the scale for the y axis should be linear, or logarithmic. By default, this is turned off, and the scale used is linear.
#### Minimum Value
This specifies the minimum value for the y axis, or the value at the bottom of the axis.
#### Maximum Value
This specifies the maximum value for the y axis, or the value at the top of the axis.
#### Axis Labels
This specifies if y axis values are present. By default, this is turned on.
#### Grid Lines
This specifies if the horizontal grid lines behind the chart are present. By default, this is turned on.
#### Reverse Axis
This allows you to flip the direction of the y axis, with zero at the top and the biggest
number at the bottom.
# Built In Reports
Source: https://docs.explo.co/creating-report-builders/built-in-reports
Built In Reports are pre created reports that your team will create that can serve as a template or jumping off point for end users using Report Builder.
## Permissions
You can specify permissions on built in reports to allow access to some or all of your customers. This can be specified at the customer level or the group tag level. Read more about group tags [here](/getting-started/group-tags#filtering-on-the-frontend-by-group-tag). You can configure this by clicking on the triple dot menu by the built in report name on the left side.
## Configuring a Built In Report
Built in reports have all the same functionality as new reports. You can configure filters and sorts, add groupings and aggregations, and create multiple views and visualizations all within one report.
## Built In Report Usage
End users that have access to built in reports will not be able to make direct edits to the built in report itself, but they will be able to make edits and then save their edits as a copy of the original report.
# Datasets
Source: https://docs.explo.co/creating-report-builders/datasets
A Report Builder dataset is a table of data that your end users will be able explore and use to build reports and visualizations.
## Defining a dataset
A dataset is defined using SQL. The SQL can be as simple or complex as needed. It may be pulling an entire table from a datasource using a `select *`, or it may contain business logic including calculated columns, joins and filters.
You will also need to use the dynamic customer variables to make sure the data is filtered by the customer entity. Read more about this [here](/creating-dashboards/variables/types-of-variables/customer-object)
## Permissions
You can specify permissions on datasets to allow access to some or all of your customers. This can be specified at the customer level or the group tag level. Read more about group tags [here](/getting-started/group-tags#filtering-on-the-frontend-by-group-tag)
## Column Selection and Formatting
Once the dataset is defined with SQL, you can use the column selection and formatting sections to clean up and style the data.
In the column selection section, you can specify column visibility and default filters. Default filters will appear initially on new reports using that dataset, but they will be empty.
In the column formatting section, you can rename columns, add descriptions, and format the values based on column type.
## Custom Aggregations
You can define formulas for aggregating data that your team and your end users can use in reports. Read more about these [here](/report-builder-features/custom-aggregations).
# Customer Hierarchy
Source: https://docs.explo.co/customers/customer-hierarchy
Facilitate a hierarchical structure with parent-child relationships among your customers.
## Feature Motivation
We at Explo have observed that our clients frequently have a natural parent-child hierarchy among their customer entities that they wish to depict in the Explo Customers tab.
For instance, a client may have customers that are sports leagues, with each league comprising various teams, and each team having multiple players.
This scenario presents a natural three-tier hierarchy: `League`, `Team`, and `Player`. Similarly, many of our clients work with companies that have individual users,
resulting in a natural two-tier hierarchy of `Customer` and `User`. Explo can accommodate up to three layers of any desired hierarchy.
## Configurable Dashboard Sections and Customer Hierarchy
In most scenarios, we anticipate that customers will employ a two-tier `Customer` and `User` hierarchy when activating Configurable Dashboard Sections.
This is primarily because you may want the dashboards to have data populated from the `Customer` level, but have special state saved for each entity at the `User` level.
For instance, if you want Alice and Bob, users within Generic Company, to have their own individually configured dashboards, you must designate Generic Company as the parent customer and
Alice and Bob as the children. Subsequently, in your dashboard queries, you should reference the variables from the Customer level. When embedding, it should be done at
the User level so Alice and Bob can have their own unique views.
## Filtering on the Frontend by Hierarchy Level
On the frontend interface, selecting a customer will filter the customer page accordingly.
You can set the hierarchy level and any parent-child relationships on this customer page as well.
## Feature Functionality
The customer hierarchy feature currently provides two key functionalities:
1. Referencing any ancestor customer entity in a query by utilizing the inherited archetype variables. You can read more about those [here](/creating-dashboards/variables/types-of-variables/customer-object#archetype-variables).
2. Automatically inheriting properties from the parent. For example, in a three-tier hierarchy of sports leagues, if the `conference` property is assigned as `Eastern` at the top level,
each child and grandchild ('Team' and 'Player') could reference `properties.conference`, which would yield `Eastern` for each level of the hierarchy.
## Example Usage in Queries
The following examples will show how you can control which level in the hierarchy provides the data in your queries.
Understanding customer-specific variables is a prerequesite for writing these types of queries, and you can read more about those [here](/creating-dashboards/variables/types-of-variables/customer-object).
Let's say we have some customer entities with the following setup:
| Name | Provided Id | Hierarchy Level | Parent Provided ID | Available Archetype Variables |
| ------------ | ------------- | --------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| NBA | nba | League | None | `league_id: nba`, `league_name: NBA` |
| Lakers | lakers | Team | NBA | `league_id: nba`, `league_name: NBA`, `team_id: lakers` , `team_name: Lakers` |
| LeBron James | lebron\_james | Player | lakers | `league_id: nba`, `league_name: NBA`, `team_id: lakers` , `team_name: Lakers`, `player_id: lebron_james`, `player_name: LeBron James` |
| Rockets | rockets | Team | NBA | `league_id: nba`, `league_name: NBA`, `team_id: rockets` , `team_name: Rockets` |
| Jalen Green | jalen\_green | Player | rockets | `league_id: nba`, `league_name: NBA`, `team_id: rockets` , `team_name: Rockets`, `player_id: jalen_green`, `player_name: Jalen Green` |
If we wanted to show league-level data,
```sql theme={null}
SELECT *
FROM Table_1
WHERE 1=1
[[AND league_column = {{ league_id }}]]
```
For the query above, if you viewed an Explo dashboard as any of the customer entities in the table,
you'd be able to see all of the NBA data since all of the listed customer entities have NBA as an ancestor.
If we wanted to show team-level data,
```sql theme={null}
SELECT *
FROM Table_1
WHERE 1=1
[[AND league_column = {{ league_id }}]]
[[AND team_column = {{ team_id }}]]
```
For the query above, if you viewed an Explo dashboard as `Lakers` you'd be able to see all of the Lakers data. If you
viewed the dashboard as `LeBron James`, you'd also be able to see the all Lakers data because LeBron is a member of the Lakers team.
If we wanted to show player-level data,
```sql theme={null}
SELECT *
FROM Table_1
WHERE 1=1
[[AND league_column = {{ league_id }}]]
[[AND team_column = {{ team_id }}]]
[[AND player_column = {{ player_id }}]]
```
If you viewed the dashboard as `LeBron James`, you'd be able to see all of LeBron's data. If you viewed the
dashboard as `Jalen Green`, you'd only be able to see Jalen's data.
Referencing an inherited property
```sql theme={null}
SELECT *
FROM Table_1
WHERE 1=1
[[AND column = {{properties.inherited_property}}]]
```
# Group Tags
Source: https://docs.explo.co/customers/group-tags
Group customer entities and control their access to different products.
## Feature Motivation
Group Tags are customizable tags that you can assign to your customer entities to control their access to different products, like Reports in Report Builder, Shares in Data Share, or Report Builder AI.
This way, you can set the visibility of a report to an entire group of customer entities at once instead of having to add them individually.
You can also use group tags to organize customer entities on the Customer Page.
## Create, Edit, and Delete Group Tags
In the Group Tags section of the Settings page, you can create, edit, and delete the group tags for your team.
## Customer Group Tag Assignment
You can change a customer entity's group tag assignment on the Customer Page. Note that group tags
are an inherited field, so child customers inherit the group tags assigned to their parents.
When editing a customer,
inherited group tags are shown in gray and non-inherited group tags are shown in blue.
In the table, all group tags (both inherited and non-inherited) are listed.
## Filtering on the Frontend by Group Tag
On the frontend interface, selecting a group tag will filter the customer page accordingly.
## Group Tags and Report Builder Visibility
You can assign report visibility to entire group tags in place of or addition to individual customers.
# Overview
Source: https://docs.explo.co/customers/overview
An overview of the concept of customer groups and their implementation.
## What are customer groups
A customer group is a security group that can only see and access their set of data. This can be a company, a user at a company, a location, a region, etc.
## Creating customer groups
This process can be managed via the UI by navigating to the Customers tab and selecting Create Customer in the top left corner.
The fields that will be required here are `Name` and `Provided ID`.
If you are supporting a single tenant data model, there's a section at the bottom of that panel for database assignment where you can choose which database this particular customer has access to within a schema.
Or you can leverage our [API endpoint](/api-reference/customer-api/get-or-create) to programmatically create them.
## Using customer groups
You are always viewing a dashboard in the context of a customer. When you create a dataset, you are able to pass in variables associated to that customer into the query. You can open the variables section in the dataset editor to see what you can access.
When using variables they need to get wrapped in `{{}}` and all statement that have variables need to get wrapped in `[[]]`.
If you have a multi-tenant data model this may look something like
`WHERE 1=1`
`[[AND fieldFromDB = {{customer_id}}]]`
Whereas if you have a single tenant data model you can instead pass in the variable into the table name.
`[[FROM {{customer_id}}]]`
This will ensure that your end users will only have access to their data.
# Custom Map Boundaries
Source: https://docs.explo.co/dashboard-features/custom-map-boundaries
The Custom Map Boundaries feature allows you to use custom Mapbox configurations for your choropleth maps, enabling support for specialized boundary types.
## Prerequisites
Before using custom map configurations, you'll need:
* A Mapbox API key with access to your custom tilesets
* Knowledge of your boundary configuration details:
* Source layer name
* Tileset ID
* Boundary format (column name for matching)
## Setting Up Your Mapbox API Key
1. Navigate to your team settings
2. Locate the "Custom Map Boundaries Configuration" section
3. Enter your Mapbox API key
4. Save the configuration
## Configuring Custom Boundaries
When creating or editing a choropleth map:
1. Select "Custom" as the boundary type
2. Configure the following settings:
* **Custom Boundary Source Layer**: The name of your source layer (e.g., "custom-regions")
* **Custom Boundary Tileset**: Your Mapbox tileset ID (e.g., "mapbox://your-tileset-id")
* **Custom Boundary Format**: The column name in your tileset that contains the matching values (e.g., "postcode")
## Default Behavior
If any custom settings are left unspecified:
* Source Layer: Defaults to the standard states layer
* Tileset: Uses the default Explo engineering tileset
* Boundary Format: Uses standard state format (STUSPS)
## Troubleshooting
If your custom map configuration isn't working:
* Verify your Mapbox API key has access to the specified tileset
* Ensure the boundary format matches exactly with your data column names
* Check that your source layer name matches the one in your Mapbox tileset
# Custom Menu
Source: https://docs.explo.co/dashboard-features/custom-menu
The Custom Menu option allows you add a menu option to a chart that then fires off a javascript event when clicked on by the end user.
## Configuration
The configuration for this custom menu option can be found in the Action tab for the following charts:
* Bar Chart
* Line Chart
* Area Chart
* Pie Chart
* Heat Map
* Boxplot
Once toggled on, you’ll need to specify the name of the menu option under Menu Option Name.
This is what will show up when a certain bar, point, slice, etc. is clicked. Then you will
specify the javascript event name under Customer JS Event Name. This will be the name that
is passed into the event listener in your frontend code that will then trigger the desired action.
The detail body that is passed with the javascript event contains the `category` value and `color` value.
# Overview
Source: https://docs.explo.co/dashboard-features/dashboard-attributes
Categorize your dashboards using attributes
## Creating Attributes
On the settings page, there is an Attributes section under Developer. There you
can create a new attribute or create a new value for an attribute. You can
choose a color for a new value that can easily help distinguish values chosen
for a dashboard when assigning them.
# Assigning Values
Source: https://docs.explo.co/dashboard-features/dashboard-attributes/assigning-values
Once you have created attributes and values you can start assigning them to your dashboards. There are two places that this can be done.
### Dashboard List Page
On the dashboard page you can assign them by clicking on the menu button and
choosing the value you want assigned for that dashboard.
### Dashboard Edit Page
When viewing or editing a dashboard you can click on the down arrow next to the
dashboard name to open up the menu where you can assign values to the dashboard.
# Using Assigned Values
Source: https://docs.explo.co/dashboard-features/dashboard-attributes/using-assigned-values
Now that dashboards have been assigned certain values for attributes how you can you use them
### Labeling for Team Purposes
You can use dashboard attributes as a way to let your teammates know what the
status, purpose, or any other attribute of that dashboard you have created or
worked on.
### Filter Through API for Embedding
If you want some logic to control which dashboards are embedded you can use our
dashboard API to get a list of all your team's dashboard and their attributes.
This way you can get more information on which dashboard you should be choosing
to embed on your app.
# Dashboard Caching
Source: https://docs.explo.co/dashboard-features/dashboard-caching
Cache your data at the dashboard level to enable faster data loading
## Implementing Dashboard Caching
To access caching, click on the down arrow in the upper left corner of the dashboard. Then, toggle "Enable caching". At this point, there will be an option to set the Timeout period via a dropdown menu. The caching feature is, by default, available for all dashboards, but will need to be manually turned on. Please reach out to support if you would like to make the caching feature not available for all dashboards.
## How Dashboard Caching Works In Practice
Caching is turned on at the dashboard level, but what ends up being cached is the query and the corresponding result. These get cached into Explo's caching layer, which is either Redis or Apache Ignite, depending on which data connector your workspace uses.
If that same **exact** query is then executed again within the set timeout period, instead of executing the query in your database, the data will be fetched from the cache. This should result in much faster data loads. You may configure the Timeout to be 15 minutes, 30 minutes, 1 hour, 2 hours, 4 hours, 6 hours, 12 hours, or 24 hours.
### Caching Applies to Exact Query Matches
Caching applies to all queries within the dashboard, including queries for filters. Only exact match queries will trigger pulling from the cached results.
For example, if the following query has been cached:
```
Query 1:
SELECT * FROM DB WHERE DATE > "2022-01-01"
```
The following query would trigger a call to the database instead of pulling from the cache:
```
Query 2:
SELECT * FROM DB WHERE DATE > "2022-09-09"
```
Even though Query 2 is a subset of the results from Query 1, only exact matches will trigger pulling from the cached results.
## Clearing the cache
The cache will be automatically cleared on the timeout period set or manually by the user, whichever comes first.
Here is an example of how this works:
* If the timeout is set to 24 hours, the cache will clear everyday at midnight UTC
* If the timeout is set to every 6 hours, it will clear at midnight, 6am, 12pm, and 6pm UTC
### Manually Clearing the Cache
Explo allows you to manually clear and refresh the cache in two ways, as shown below.
#### Dashboard Editor
There is a button in the top right corner of the dashboard editor that requests new data for your data panels. Note that, because your in-app and embedded dashboards share the same cache, refreshing the data via this button will refresh the data for your users as well.
#### Embedded Refresh Button
Explo allows you to add a refresh button as a dashboard element that will similarly refresh the data on the dashboard. Note that embedding this button will allow your users to refresh the data at any time for all users.
## Caching Security
To learn more about the security details of caching, please refer to [this page](/security/caching-layer).
# Dashboard State Persistence
Source: https://docs.explo.co/dashboard-features/dashboard-state-persistence
## How does it work?
Customer state can be persisted across page loads. In other words, if the customer makes certain changes to the dashboard, those changes will be persisted if they refresh the page and come back to the dashboard.
In this case, a "customer" refers to a customer object in the [customers tab](https://app.explo.co/customers).
The changes that are persisted today are:
* Renaming of table columns
* Reordering of table columns
If there are other things you would like to see persisted, please contact Explo support so we can get it added for you!
## How do I turn it on?
There are two steps to getting this feature turned on:
1. Ask the Explo team to turn this on for you as this is something that is not available for all Explo tiers.
2. Toggle the `Persist customer state` option for any relevant dashboards.
# Duplicating Dashboards
Source: https://docs.explo.co/dashboard-features/duplicating-dashboards
Learn how to duplicate dashboards in Explo
You can duplicate a dashboard in two ways:
1. **From the Resource List Page**: Locate the dashboard you want to duplicate, click the options menu, and select "Duplicate". You will be prompted to select a specific version to duplicate.
2. **From the Version Control Panel**: Open the dashboard, navigate to the version control panel, and select the version you want to duplicate.
### Important Notes
* Scheduled emails will not be duplicated.
* Ensure you have the necessary permissions to duplicate dashboards.
# What is an Editable Dashboard Section?
Source: https://docs.explo.co/dashboard-features/editable-dashboard-sections
Enable Your Users to Manage Which Charts They Want in Their Dashboards
Explo built Editable Dashboard Sections in response to three problems:
1. You want to show certain charts to certain users, but not others, without needing to create multiple dashboards
2. You want to allow your users to pick from templates to show on their personalized dashboards
3. You want to allow your users to rearrange and resize charts
Editable Dashboard Sections is a section of your dashboard where your users can drag charts around and add or remove charts from their view based on their permission levels, tackling all three problems at once.
# Configuring Editable Dashboard Sections
Source: https://docs.explo.co/dashboard-features/editable-dashboard-sections/configuring-editable-dashboard-sections
Enable Editable Dashboard Sections via the toggle in the top left of the dashboard page.
The section is now available at the bottom of your dashboard. To begin creating charts for the Editable dashboard sections, click into the Editable Dashboard Section.
### Adding and Editing a Chart
Click 'Add a Chart'. Now, you can begin creating the chart, exactly how you would with the traditional dashboard experience.
To edit a chart, simply click on the chart and begin editing.
### User Permissions
To edit the user permissions on a chart, click the three dots and 'Edit'. From there, you can change the group tag that the chart is associated with. Each customer can be associated with a Group Tag within the customer object. Typically, group tags will take the form of groups such as Marketing, Sales, Engineering, Leadership, etc.
### Edit Default Layout
To add/remove a chart from the default layout, click on the three dots and click 'Add to default layout' or 'Remove from default layout'. Only charts available to all customers can be added to the default layout.
# How End Users Configure an Editable Dashboard Section
Source: https://docs.explo.co/dashboard-features/editable-dashboard-sections/end-user-configuration-of-section
This is how end users will configure and interact with editable dashboard sections.
### Adding/Removing Charts
Within an Editable Section, a user can click the 'Add' button to see the charts on the Editable Dashboard Section and additional templates available to them. From there, they can toggle whether or not to show these charts.
### Moving Charts around and Resizing Charts
Within an Editable Section, when a user clicks the 'Edit' button, they can click on a chart then move the chart around or resize the chart from the bottom right hand corner.
# FAQ
Source: https://docs.explo.co/dashboard-features/editable-dashboard-sections/faq
## Editable Dashboard Sections FAQ
**Q: What charts do my customers see?**
**A:** If no edits were made by the customer to the editable section, then the default layout will be shown. Note that the charts in the default layout that they will see are ones that they are permissioned to see (there is an `Visible to all customers` toggle) and that you choose to `Add to default layout`. If the customer makes changes to the editable section, then they have deviated from the default layout and will only see the specific view they have now created.
**Q: What happens if I delete a chart from the editable dashboard section and my user might have deviated from the default layout and uses it?**
**A:** The deleted chart will still take up the designated space on the editable dashboard section, but it will have an error saying that `The chart is no longer available`. You can preview editable dashboard sections to see if there are any impacted customers -- check out how to preview an editable dashboard section [here](/dashboard-features/editable-dashboard-sections/previewing-an-editable-dashboard-section).
Please reach out to Explo support if you need help resetting a customers' editable dashboard section.
**Q: How are the dashboard edits saved?**
**A:** The dashboards are saved to the customer in Explo. For enabling editable dashboard sections, we would recommend utilizing the Explo hierarchy. In this model, you will continue to have your existing customers, but can now add sub customers (typically `users`) that can inherit the property of their parent. In this way, Explo will automatically save dashboard sections at the user level.
# Previewing an Editable Dashboard Section
Source: https://docs.explo.co/dashboard-features/editable-dashboard-sections/previewing-an-editable-dashboard-section
### How it works
The preview URL will bring you to a view where you can preview a dashboard and toggle it for a specific customer group and version, allowing you to see exactly what the end user will see. This will allow you to see if any changes were made to their editable dashboard section and what those changes are.
### Preview URL
To preview an editable dashboard section, go to the following URL:
```
app.explo.co/preview/
```
To find the `DASHBOARD_EMBED_ID`, go to the embed modal for the dashboard.
You can make changes to the editable section on this page, but the changes
will not be saved.
# Get Access
Source: https://docs.explo.co/dashboard-features/email-reporting
Send customizable emails with your dashboards to your customers on a regular cadence.
If you would like to set up Email Reporting, please contact us at [support@explo.co](mailto:support@explo.co)!
# Email Layout Configuration
Source: https://docs.explo.co/dashboard-features/email-reporting/email-layout-configuration
You can customize how you want your email to look with the Email Layout configuration, which can be found near the top middle of a dashboard page.
In this configuration, you can specify custom text and formatting for headers
and footers, and you can adjust the layout and contents of your dashboard,
specifically for emails.
# Email Networking
Source: https://docs.explo.co/dashboard-features/email-reporting/email-networking
# Email Egress IPs
Explo's emails are coming from the below egress IPs
```
149.72.49.28
167.89.81.10
```
# Email-specific Dashboard Configuration
Source: https://docs.explo.co/dashboard-features/email-reporting/email-specific-dashboard-configuration
You can further customize your dashboards at the customer level when you create your customers. The attributes field on customers allows you to provide key-value pairs that can display on your dashboards like any other custom variables.
For example, providing `name: 'Explo Customer'` as an attribute for an end\_user
will display 'Hello Explo Customer!' in an email for the following dashboard.
See [the customer api documentation](/api-reference/customer-api/get-or-create)
for more information about how to create customers.
### Explo-Specific Attributes
Explo also has specific attributes you can set for further control over your
emails: header and footer. You can provide raw html to these attributes to
display your own text, images, or links above or below the dashboard screenshot.
# Scheduling Emails
Source: https://docs.explo.co/dashboard-features/email-reporting/scheduling-emails
From the Dashboard tab, you can open the Set Up Email modal for each of your
dashboards. This modal contains options to configure how and when your emails
get sent out to each of your customers.
When emails for your dashboard are sent out, they are sent to each of the emails
you've set up for your customers. The dashboard is populated with
the data for the corresponding customer. See the
[customer api documentation](/api-reference/customer-api/get-or-create) for more
information about how to configure customers.
Note that you must have emails set for your team's customers in order for
emails to be sent.
If a dashboard version is tagged with an `email` environment tag, that version
will be used for the emails. Otherwise, the version tagged with `production`
will be used.
### Email Frequency
There are three options available for email frequency: daily, weekly, and
monthly. The daily frequency sends emails out every day at the given time, the
weekly frequency sends out each week on the specified day at the given time, and
the monthly sends out on the given occurence of the specified day at the given
time.
Weekly Frequency Options
Monthly Frequency Options
### Sending a Test Email
To view what your dashboard will look like in an email, you can send a test
email by supplying an email address in the test email box and hitting "Send
Test." A test email will populate the dashboard with a random customer's
data and will send to the email address you supply.
# Row Level Actions
Source: https://docs.explo.co/dashboard-features/row-level-actions
The Row Level Actions feature allows your users to fire custom Javascript events from a row in a Data Table.
When enabled, a special Row Level Actions column will be added as the last column to your Data Table. Each cell in this column will have a menu
with custom actions that will be fired when clicked. Note that this feature is only enabled for the new Data Table.
## Configuration
Row Action actions can be configured on the `Actions` tab for the Data Table. For each desired action, you’ll need to specify both the menu label you'd like your customers to see in the table
and the Javascript event name. The Javascript event name will be passed into the event listener in your frontend
code that will then trigger the desired action. You can learn more about interacting with custom Javascript events
[here](/general-features/custom-js-events).
The detail body that is passed with the javascript event contains the `rowData` of the row from which the action menu option is clicked.
# Setting Category Colors
Source: https://docs.explo.co/dashboard-features/setting-color-categories
Sync colors for repeating categories across charts on your dashboard
## How to Set Category Colors Up
In the top left corner of a dashboard page, the caret dropdown will open up a
dropdown with a few different settings, including the ability to set color categories. Click "Set color categories".
A modal will pop up, giving you the ability to add defined values or column names and their corresponding colors.
There are two ways to set up colors.
Values: You can set colors based on the underlying values you see in the dataset (not any formatted values)
Set the color by the value name in the "Sync color categories" modal:
Now, the data grouped by the value "Shared room" matches the light blue color specified at the dashboard level where the other columns use the chart's set color palette:
Columns: You can set colors based on column names as identified by each y-axis column's data label.
Set the color by its data label name in the "Sync color categories" modal:
Now, the column with the data label "Average Price" matches the light green color specified at the dashboard level where the other columns use the chart's set color palette:
## General Feature Callouts
* A chart using a custom color palette will override these color selections.
* Column colors can only be set for line charts and bar charts.
# Custom Styles
Source: https://docs.explo.co/dashboard-features/styling-dashboards
Explo is a fully white-labeled solution that allows you to customize the look and feel of your dashboards such that it matches your own application.
Click on your user icon on the top right corner and select "Custom Styles" from
the dropdown.
Change parameters to customize your dashboards
### Multiple Style/Theme Profiles
You can manage multiple style/theme profiles within Explo. By default, explo displays the 'default' theme/style in your embedded components. However, you can pass in the name of a theme/style via the theme prop in the iframe or web component to display a different theme/style.
```
#iframe
#web component
```
Copy the exact styles from your own application in order to match the design. If
you want to select new colors, you can reference tools such as
[Adobe Color Wheel](https://color.adobe.com/create/color-wheel) for help!
You can reference the following table to understand how each setting affects
your dashboard:
| Parameter | Effects on Dashboard |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Number of dashboard columns | The number of columns on the dashboard determines the layouts that can be created. 12 columns provides the greatest flexibility, so we recommend that you don't change this value unless you have a unique use case. **Default:** 12 |
| Background Color | The background color for the dashboard. **Default:** #FAFAFA |
| Actions Color | The default color for buttons and input states. **Default:** #0069ED |
| Button Color | Overrides the default action color for buttons. **Default:** Inherit |
| Interaction States Color | Overrides the default action color for hover interactions (e.g. dropdown input). **Default:** Inherit |
| Spacing | The number of pixels between adjacent elements on the dashboard. **Default:** |
| Fill | The background color for charts and containers. **Default:** #FFFFFF |
| Outline | The border color and width for elements on the dashboard. **Default:** Enabled, #D9E0E9, 1px |
| Shadow | The box shadow color and size for elements on the dashboard. A box shadow allows elements to appear a "layer above" the background. **Default:** Disabled, #000000, 4px |
| Padding | Interior padding within charts and containers. **Default:** 20px |
| Corner Radius | Determines the roundness of the corners of elements on the dashboard. **Default:** Inherit |
| Button Corner Radius | Overrides the default corner radius for buttons. **Default:** Inherit |
| Primary Text | Font style and color for headings and most body text on the dashboard. Leaving this value as "Inherit" allows the dashboard to inherit the font family from the website in which it's embedded. **Default:** Inherit, #000000 |
| Secondary Text | Font style and color for supporting text and icons (e.g. "download CSV" icon button on the Data Table). Leaving this value as "Inherit" allows the dashboard to inherit the font family from the website in which it's embedded. **Default:** Inherit, #626262 |
| Text Size | The size of body text on the dashboard. Other text sizes are derived from this value as follows: - **Header 1:** + 8px - **Header 2:** + 6px - **Header 3:** + 2px - **Body:** + 0px - **Small Heading:** - 2px - **Small Body:** - 2px |
| Custom Text Overrides | Custom overrides for the various text types contained in a dashboard. These types are typically used as follows: - **Header 1:** Extra large text to communicate a single value (e.g. KPI value) - **Header 2:** Chart headings (e.g. Bar chart, Line chart, etc.) - **Header 3:** Secondary headings (e.g. heading in date picker modal) - **Body:** Most text on the dashboard, such as data table values, dropdown input options, and share button text. - **Small Heading:** Chart axis and legend titles - **Small Body:** Supporting text, such as chart axis and legend values |
| Categorical Palette | Default palette for category-based charts (e.g. Bar chart, Pie chart) Good for clear differentiation between categories. **Default:** #0069ED, #907EFF, #7E9AFF, #7ACC39, #FF8750, #FCD508 |
| Diverging Palette | Good for data where values fall on one end of a "middle point". **Default:** #7ACC39, #FFFFFF, #0069ED |
| Gradient Palette | Default palette for spectrum-based charts (e.g. Heat map). Good for data that falls on a spectrum or within a range. **Default:** #FFFFFF, #0069ED |
If you need any additional customizations, feel free to reach out to us at [support@explo.co](mailto:support@explo.co).
# Custom Fonts
Source: https://docs.explo.co/dashboard-features/styling-dashboards/custom-fonts
Upload your own font and use it throughout your dashboards
Click on your user icon on the top right corner and select "Settings" from the
dropdown.
From there go down to the custom fonts section and select your font file. The
font file extensions we currently support are .otf, .ttf, .woff, and .woff2. We
use the file name as the font name so make sure there are no duplicates. You can
remove any uploaded file by clicking on "Remove".
Then head to the custom styles section and in any of the font drop-downs you
will see your custom fonts at the top like below. Select the font you want and
save the style and your font should be ready to go!
# Getting Started
Source: https://docs.explo.co/data-share/getting-started
## Go to Data Share
Navigate to Explo’s Data Share - the central hub for all Explo Asset sharing in your organization. Create new Shares, access previously scheduled Shares, edit Drafts, and view Data Sharing Recent Activity.
## Create a New Share
New Shares are created using our setup tool that allows you to choose the delivery method, the cadence, the recipients, and the data assets you’d like to include.
You are no longer required to send emails to all customers
## View scheduled Shares
View all of your currently scheduled Shares and any drafts that you have waiting to be completed.
## Recent Activity
View the Data Share’s Recent Activity page for a better understanding of all Data Sharing across your organization today.
## Email Layout Configuration
When creating your Share, you can specify custom text and formatting for headers and footers, and you can adjust the layout and contents of your dashboard, specifically for emails.
# Overview
Source: https://docs.explo.co/data-share/overview
Understanding Data Share and its components
## What is Data Share?
Data Share is Explo’s central location for all Explo asset sharing in your organization. You can share Dashboards, Report Builders, and Datasets to customers directly using the different sharing methods available.
Data Share is currently in Early Release. You may see limited feature availability until General Availability.
## Who can I share to?
* Dashboards
* Report Builders
* Datasets
* Multiple assets at a time
* Attachments
* PNG of charts
* CSV of chart or dashboard data
## What are the Sharing Methods?
* Email
* S3
* SFTP
* Webhooks *(coming soon)*
* REST API *(coming soon)*
* Direct warehouse sync *(coming soon)*
* Slack *(coming soon)*
* More to come!
## Who can I send to?
* Individual Customers
* Group Tags
* Hierarchies
* All Customers
# S3 Setup
Source: https://docs.explo.co/data-share/s3-setup
Getting Started with Data Share: S3
Explo Data Share using S3 allows customers to deliver Explo Assets and Datasets directly to an end users S3 Bucket in their AWS account.
End users will need to provide the appropriate permissions and Amazon Resource Name (ARN) for their S3 Bucket to be able to receive Shares.
# Part 1: Permissions for the S3 Bucket
To enable cross-account S3 bucket uploads, End Users need to configure a role with a policy allowing writes to the desired bucket and then share it with Explo. Explo will then assume the End User's configured role to write data to the End User's S3 bucket.
## Step 1: IAM Role in End Users AWS Account
This trust policy should be attached to the **IAM Role** in your End Users AWS account that you want the Explo account to assume:
```
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root" // Replace with the external AWS Account ID
},
"Action": "sts:AssumeRole"
}
]
}
```
This allows the specified AWS account to assume the role.
Depending on which FIDO instance you are using, you will use a different ARN. If you don't know which FIDO instance you are on, then you are using `us-east-1` as that is the default:
* `us-east-1`: `arn:aws:iam::251497699814:root`
* `eu-central-1`: `arn:aws:iam::266735830005:root`
* `ap-southeast-1`: `arn:aws:iam::897722681642:root`
* `us-gov-east`: `arn:aws-us-gov:iam::184115685153:root`
## Step 2: IAM Role Permissions Policy
The role Explo assumes must have an IAM policy that allows actions like `s3:PutObject` and optionally `s3:PutObjectAcl` on the correct S3 path.
Attach this permissions policy to the role. It grants `s3:PutObject` and related permissions, but only for a specific prefix in the bucket:
```
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::your-bucket-name/specific/prefix/*"
}
]
}
```
Replace `your-bucket-name` and `specific/prefix/` with your actual bucket name and desired prefix.
## Step 3: (Optional) S3 Bucket Policy (for additional security)
Sometimes the bucket itself restricts access further. In that case, the bucket owner (End Users) needs to attach a **bucket policy** allowing the IAM role to write to the prefix.
If you want to enforce these permissions from the S3 bucket side as well, you can add a **bucket policy** like this:
```
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowExternalAccountRoleToWriteToPrefix",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/ExternalRoleName" // Replace with role ARN
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::your-bucket-name/specific/prefix/*"
}
]
}
```
# Part 2: Providing Explo with End User Information
Explo Customer uploads ARN (Amazon Resource Name), S3 bucket information, and AWS Region for each of their customers S3 buckets to the user profiles in Explo. Each User will be able to have one S3 Bucket.
## Step 1. IAM Role ARN to Assume
You'll need the full **ARN of the IAM role** in the target AWS account that Explo is allowed to assume. It looks like:
```
arn:aws:iam::111122223333:role/TheirRoleName
```
## Step 2. S3 Bucket Name and Prefix
You must know:
* The **bucket name**, e.g., `their-company-data`
* The **prefix (folder-like path)** you're allowed to write to, e.g., `uploads/your-team/`
You'll be writing to keys like:
```
s3://their-company-data/uploads/your-team/myfile.csv
```
Summary of What Explo Needs:
| Information | Purpose |
| ------------------------------ | ------------------------------------------ |
| Role ARN | So Explo can assume the cross-account role |
| Bucket name | Where the files go |
| AWS Region | Which AWS Region the S3 bucket is in |
| Prefix path | Folder Explo is allowed to write to |
| Permissions (their side) | To write objects |
| Optional: Bucket policy access | To avoid "Access Denied" errors |
## Step 3: Add S3 Bucket information to each customer profile
Once you've collected the Role Arn, Bucket name, and AWS Region from your end users you will add these as Key:Value pairs in the Customer's profile:
# SFTP Setup
Source: https://docs.explo.co/data-share/sftp-setup
Getting Started with Data Share: SFTP
Explo Data Share using SFTP allows customers to deliver Explo Assets and Datasets directly to an end user's SFTP Server. End users will need to provide SFTP Export Username, Port, and Host Name to be able to receive Shares.
# Part 1: SFTP Server Authentication
Explo provides a public key for end users to input into their SFTP Server. Please add this to the server’s `.ssh/authorized_keys` file.
# Part 2: Providing Explo with End User Information
Explo Customer uploads SFTP Properties: Username, Port, and Host for each of their customers to the customer `properties` in Explo. Each User will be able to have one SFTP Server.
The values `sftp_export_username`, `sftp_export_port`, `sftp_export_host` are reserved keys in the `properties`.
# Building your data model
Source: https://docs.explo.co/data-sources/building-your-data-model
Although Explo can sit on top of almost any data model, here are a few tips to ensure better performance and ease of use when connecting to Explo.
### Segment your data by customers
It is very important for your data to be segmented by customers. In most
cases, a customer is your customer, but can also be different entities that
you wish to split your data by.
Ensuring that tables in your database contains a field such as`customer_id`or
`organization_name `can make it much easier and quicker to query and segment
your data.
However, if all your tables do not have a customer field, you can always join
tables in the Explo interface.
Alternatively, Explo also support data models where data for each customer is
in a separate database. In this case, it is not important to have a customer
field in each of your tables. Instead you would refer to our API docs to tell
us where data for each customer is stored.
### Transform or process your data to create golden tables
Golden tables are tables that contain the relevant data for a specific business
process that can be easily queried to pull insights or metrics without needing
to join with other tables. These tables should all have a customer field so
Explo can easily segment the data in each table.
These tables should not be aggregated views but rather raw data. Furthermore,
each row should have the same granularity.
As an example, if you are creating a marketplace platform, you may have 3 golden
tables with the following fields:
| Table | Fields |
| --------- | ----------------------------------------------------------------------------------------------------- |
| Orders | `order_status`, `SKU`, `quantity`, `shipping_cost`, `price`, `customer_id`, `seller_id`, `order_date` |
| Customers | `customer_name`, `customer_id` ,`email`, `address`, `payment info` |
| Products | `SKU`, `product_name`, `description`, `seller_id` |
In the example above, `seller_id` would be used to segment the data for each
customer.
Because you can run aggregations and calculations in Explo, it is best not to
run these aggregations here, so you have the flexibility to do so in Explo.
If you do not have tables that are ready to query, you can leverage a tool such
as [DBT](https://www.getdbt.com/) or [Airflow](https://airflow.apache.org/) as a
transform layer to create these tables. This will dramatically improve the
performance of your dashboards in Explo.
### Handle schema complexity upstream
Perform more complex data transformations and calculations in the database or
ETL layer rather than running those calculations in Explo. This will also
dramatically improve load times.
# AWS PrivateLink
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/aws-private-link
Connect your AWS hosted data source to Explo using AWS PrivateLink.
## General
Find out more about AWS PrivateLink through the AWS Whitepaper, [here](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-privatelink.html).
Connect your data source to Explo using this AWS Blog Post: [Access Amazon RDS Across VPCs using AWS PrivateLink and Network Load Balancer](https://aws.amazon.com/blogs/database/access-amazon-rds-across-vpcs-using-aws-privatelink-and-network-load-balancer/).
If you are interested in connecting to Explo using AWS PrivateLink, please reach out to [support@explo.co](mailto:support@explo.co) for support.
# Connectivity Regions
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/connectivity-regions
## Overview
Explo supports multiple multi-tenant, shared connectivity regions for connecting
to customer data sources. Selecting a region that is closest in global proximity
to your data sources can result in lower query and connection latency and improve
your Explo integration performance.
Explo additionally supports separate, isolated connectivity regions for
enterprise customers who require them. Contact your Explo Customer Team to
discuss your needs.
## Enabling access to a connectivity region
Typically you will need to ensure your infrastructure is allowed to receive traffic
from the Explo connectivity region you are using. To do so you may need to allowlist
traffic from the Explo connectivity region in your infrastructure.
### Default connectivity region access
Explo supports multiple connectivity regions, and unless you are informed otherwise
by your Explo Customer Team, as a minimum, *you may need to allowlist the IPV4
addresses for our legacy US-East-1 and Data Connector US-East-1 regions*:
```
54.211.43.19
52.55.98.121
3.214.169.94
54.156.141.148
3.219.104.199
35.175.85.18
100.27.162.59
34.231.221.92
```
## Available Shared Connectivity Regions
### Default US-East-1
By default all data source connectivity, queries, and traffic are sourced
from our legacy US-East-1 region. Unless your Explo Customer Team informs you
otherwise, your connectivity traffic will be sourced from this region.
Explo is actively migrating customers away from this legacy infrastructure.
Please also see notes and IP egress information below for the US-East-1
Connector region below where most customers will be migrated to.
#### Egress IPs
```
54.211.43.19
52.55.98.121
3.214.169.94
54.156.141.148
```
### Data Connector US-East-1
This is our [new data connector, FIDO](/data-sources/new-data-connector-fido). Customers are being actively migrated to this new infrastructure which will be the
default shortly.
#### Egress IPs
```
3.219.104.199
35.175.85.18
100.27.162.59
34.231.221.92
```
### Data Connector EU-Central-1 (Frankfurt)
EU customers may reach out to your Explo Customer Team for access.
#### Egress IPs
```
35.157.246.84
3.73.202.204
```
### Data Connector AP-Southeast-1 (Singapore)
APAC customers may reach out to your Explo Customer Team for access.
#### Egress IPs
```
18.142.175.184
52.220.14.111
```
### Data Connector US-Gov-East (contact your Explo representative for access)
Customers whose data are export-restricted under ITAR can contact Explo to inquire.
#### Egress IPs
```
18.254.115.36
18.254.187.80
```
### Future Shared Data Orchestrator Regions
Please reach out to your Explo Customer Team to discuss new region needs.
# Athena
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/athena
## Intro
Find out more about Athena [here](https://aws.amazon.com/athena/).
## Necessary Credentials
* **AWS Region**
* Example: *us-east-1*
* **Data Catalog (Data Source)**
* **AWS Access Key ID**
* **AWS Secret Key**
* Scheme you want to use (options below)
* **S3 Output Location (optional)**
* Example: *s3://query-results-bucket/example/*
* **Work Group (optional)**
* Example: *primary*
## Allowlisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# Azure SQL DB
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/azure
## Intro
Find out more about Azure [here](https://azure.microsoft.com/en-us/products/azure-sql/database/).
By default, our JDBC driver connects with `applicationIntent` set to `ReadOnly` and `applicationName` set to `explo_fido`.
## Necessary Credentials
* **Server**
* The server where your database lives
* Example: *x.database.windows.net*
* **Port**
* The port the database server uses
* Example: *1433*
* **Database**
* Name of the database you are connecting Explo to
* Example: *acme\_production*
* **Username**
* Service user's username
* **Password**
## Allowlisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## SSH Tunnels
You can connect to Postgres databases via an SSH tunnel if necessary. Check out [this](/data-sources/connecting-to-data-sources/ssh-tunnels) section on SSH tunnels to see how.
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# BigQuery
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/big-query
## Intro
Find out more about BigQuery [here](https://cloud.google.com/bigquery).
## Necessary Credentials
* **Project ID**
* This is the ID of the project
* **JSON Key File**
* This file was given to you when you created the service account
## Allowlisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## BigQuery Credentials
Create a Bigquery service user
1. In the Cloud Console, go to the **Create service account key**
[page](https://console.cloud.google.com/apis/credentials/serviceaccountkey).
2. From the **Service account** list, select **New service account**.
3. In the **Service account name** field, enter a name.
4. From the **Role** list, add the following roles
1. BigQuery Job User
2. BigQuery Data Viewer
3. BigQuery Metadata Viewer
5. Click **Create**. A JSON file that contains your key downloads to your
computer.
The **Role** field affects which resources your service account can access in
your project. You can revoke these roles or grant additional roles later. For
more information, see
[Granting, changing, and revoking access to resources](https://cloud.google.com/iam/docs/granting-changing-revoking-access).
## Troubleshooting
1. If you are getting `403 Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials.`
Check out [this response](https://www.googlecloudcommunity.com/gc/Data-Analytics/Access-Denied-BigQuery-BigQuery-Permission-denied-while-getting/m-p/545009/highlight/true#M1699) from Google's support team. This has solved previous issues!
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# Clickhouse
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/clickhouse
## Intro
Find out more about Clickhouse [here](https://clickhouse.com/).
## Necessary Credentials
* **Hostname**
* The server where your database lives
* Example: *rds.amazonaws.com*
* **Port**
* The port the database server uses
* Example: *9440*
* Note that Explo only supports the Clickhouse Native Protocol and other common Clickhouse ports will not work. Ensure the native protocol port over SSL is open. Find out more [here](https://clickhouse.com/docs/en/guides/sre/configuring-ssl#5-configure-ssl-tls-interfaces-on-clickhouse-nodes).
* Explo's new data connector (FIDO) will be using the HTTPS port, 8443. Please ensure BOTH are allowlisted. If you are onboarding to a new workspace, the Explo team can help you determine which connector you are initially using.
* **Database**
* Name of the database you are connecting Explo to
* Example: *acme\_production*
* **Username**
* **Password**
## Allowlisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## SSH Tunnels
You can connect to Postgres databases via an SSH tunnel if necessary. Check out [this](/data-sources/connecting-to-data-sources/ssh-tunnels) section on SSH tunnels to see how.
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# CockroachDB
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/cockroachdb
## Intro
Find out more about CockroachDB [here](https://www.cockroachlabs.com/).
## Necessary Credentials
* **Hostname**
* The server where your database lives
* Example: *name1.name2.cockroachlabs.cloud*
* **Port**
* The port the database server uses
* Example: *26257*
* **Database name**
* Name of the database you are connecting Explo to
* Example: *acme\_production*
* **Authentication**
* Scheme you want to use (options below)
### Authentication Options
**Username and Password**
* Credentials:
* Username
* Password
## Whitelisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## SSH Tunnels
You can connect to Postgres databases via an SSH tunnel if necessary. Check out [this](/data-sources/connecting-to-data-sources/ssh-tunnels) section on SSH tunnels to see how.
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# Databricks
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/databricks
## Intro
Find out more about Databricks [here](https://www.databricks.com/).
## Necessary Credentials
* **Hostname**
* The server where your database lives
* Example: *cloud.databricks.com*
* **HTTP Path**
* The path to your cluster
* Example: *sql/protocol/v1/\*\*\*\**
### Authentication Options
* **Token**
* Your personal access token you've setup for Explo to use
* **OAuth**
* The OAuth Client Id and Secret you've setup for Explo to use
* For more information on generating the configuration in Databricks, please see [their documentation](https://docs.databricks.com/aws/en/dev-tools/auth/oauth-m2m)
## Allowlisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# Materialize
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/materialize
## Intro
Find out more about Materialize [here](https://www.materialize.com).
## Necessary Credentials
* **Hostname**
* The server where your database lives
* Example: *STRING.us-east-1.aws.materialize.cloud*
* **Port**
* The port the database server uses
* Example: *6875*
* **Database name**
* Name of the database you are connecting Explo to
* Example: *materialize*
* **Authentication**
* Scheme you want to use (options below)
### Authentication Options
**Username and Password**
* Credentials:
* Username
* Password
## Whitelisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## SSH Tunnels
You can connect to Postgres databases via an SSH tunnel if necessary. Check out [this](/data-sources/connecting-to-data-sources/ssh-tunnels) section on SSH tunnels to see how.
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# Microsoft SQL Server
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/microsoft-sql-server
## Intro
Find out more about MSS [here](https://learn.microsoft.com/en-us/sql/).
Explo only supports SQL Server 2016 and later.
## Necessary Credentials
* **Server**
* The server where your database lives
* Example: *x.database.windows.net*
* **Port**
* The port the database server uses
* Example: *1433*
* **Database**
* Name of the database you are connecting Explo to
* Example: *acme\_production*
* **Username**
* Service user's username
* **Password**
## Allowlisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## SSH Tunnels
You can connect to Postgres databases via an SSH tunnel if necessary. Check out [this](/data-sources/connecting-to-data-sources/ssh-tunnels) section on SSH tunnels to see how.
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# MotherDuck
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/motherduck
## Intro
Find out more about MotherDuck [here](https://motherduck.com/).
## Necessary Credentials
* **Database name**
* Name of the database you are connecting Explo to
* Example: *word1-word2*
* **Authentication**
* Scheme you want to use (options below)
### Authentication Options
**Access Token**
You can generate an access token in the settings page of the MotherDuck app. We recommend provisioning a specific access token for your Explo workspace.
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# MySQL
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/mysql
## Intro
Find out more about MySQL [here](https://www.mysql.com/).
## Necessary Credentials
* **Hostname**
* The server where your database lives
* Example: *rds.amazonaws.com*
* **Port**
* The port the database server uses
* Example: *3306*
* **Database**
* Name of the database you are connecting Explo to
* Example: *acme\_production*
* **Authentication**
* Scheme you want to use (options below)
### Authentication Options
**Username and Password**
* Credentials:
* Username
* Password
**AWS IAM Authentication**
* Make sure your created IAM user has the necessary privileges in your
database to let Explo read your tables.
* To create an IAM user, see [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)
* Credentials:
* Username
* AWS Region
* AWS Access Key ID
* AWS Secret Key
* SSL Cert
## Allowlisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## SSH Tunnels
You can connect to Postgres databases via an SSH tunnel if necessary. Check out [this](/data-sources/connecting-to-data-sources/ssh-tunnels) section on SSH tunnels to see how.
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# Parade DB
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/parade-db
## Intro
Find out more about ParadeDB [here](https://www.paradedb.com/).
## Necessary Credentials
* **Hostname**
* The server where your database lives
* Example: *word1-word2.cloud.paradedb.com*
* **Port**
* The port the database server uses
* Example: *5432*
* **Database name**
* Name of the database you are connecting Explo to
* Example: *word1-word2*
* **Authentication**
* Scheme you want to use (options below)
### Authentication Options
**Username and Password**
* Credentials:
* Username
* Password
## Allowlisting Explo's IPs
You may need to allowlist our Explo IP's `54.211.43.19`, `52.55.98.121`,
`3.214.169.94`,and`54.156.141.148`
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# Postgres
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/postgres
## Intro
Find out more about Postgres [here](https://www.postgresql.org/).
## Necessary Credentials
* **Hostname**
* The server where your database lives
* Example: *rds.amazonaws.com*
* **Port**
* The port the database server uses
* Example: *5432*
* **Database name**
* Name of the database you are connecting Explo to
* Example: *acme\_production*
* **Authentication**
* Scheme you want to use (options below)
### Authentication Options
**Username and Password**
* Credentials:
* Username
* Password
**AWS IAM Authentication**
* Make sure your created IAM user has the necessary privileges in your
database to let Explo read your tables.
* To create an IAM user, see [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)
* Credentials:
* Username
* AWS Region
* AWS Access Key ID
* AWS Secret Key
* SSL Cert
## Allowlisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## SSH Tunnels
You can connect to Postgres databases via an SSH tunnel if necessary. Check out [this](/data-sources/connecting-to-data-sources/ssh-tunnels) section on SSH tunnels to see how.
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# Redshift
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/redshift
## Intro
Find out more about Redshift [here](https://aws.amazon.com/redshift/).
## Necessary Credentials
* **Hostname**
* The server where your database lives
* Example: *rds.amazonaws.com*
* **Port**
* The port the database server uses
* Example: *5439*
* **Database name**
* Name of the database you are connecting Explo to
* Example: *acme\_production*
* **Authentication**
* Scheme you want to use (options below)
### Authentication Options
**Username and Password**
* Credentials:
* Username
* Password
**AWS IAM Authentication**
* Make sure your created IAM user has the necessary privileges in your
database to let Explo read your tables.
* To create an IAM user, see [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)
* Credentials:
* Username
* AWS Region
* AWS Access Key ID
* AWS Secret Key
* SSL Cert
## Allowlisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## SSH Tunnels
You can connect to Postgres databases via an SSH tunnel if necessary. Check out [this](/data-sources/connecting-to-data-sources/ssh-tunnels) section on SSH tunnels to see how.
## Finding Redshift Credentials
You can find your Redshift cluster details via the AWS console. The *Endpoint*
section gives you the hostname and port all in one. You'll need to get the
database name and a username/password from whoever set up the Redshift cluster.
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# SingleStore
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/singlestore
## Intro
Find out more about SingleStore [here](https://www.singlestore.com/).
## Necessary Credentials
* **Hostname**
* The server where your database lives
* Example: *db.location.singlestore.com*
* **Port**
* The port the database server uses
* Example: *3306*
* **Database name**
* Name of the database you are connecting Explo to
* Example: *dbname*
* **Authentication**
* Scheme you want to use (options below)
### Authentication Options
**Username and Password**
* Credentials:
* Username
* Password
## Allowlisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# Snowflake
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/snowflake
## Intro
Find out more about Snowflake [here](https://www.snowflake.com/).
## Default Warehouse for User
The Snowflake service user needs to have a default warehouse set. Check out [these Snowflake docs](https://docs.snowflake.com/en/user-guide/warehouses-overview#default-warehouse-for-users) to see how to set a default warehouse.
## Necessary Credentials
* **Username**
* This is your service user's username
* Example: *explo\_user*
* **Account**
* Snowflake account identifiers
* Find out more [here](https://docs.snowflake.com/en/user-guide/admin-account-identifier#where-are-account-identifiers-used)
* **Database**
* Name of the database within Snowflake
* Example: *snowflake\_sample\_data*
### Authentication Options
* **Private Key (Recommended)**
* You'll pass in your RSA private key to Explo to use in authenticating with Snowflake. See [Snowflake's documentation](https://docs.snowflake.com/en/user-guide/key-pair-auth#configuring-key-pair-authentication) for help creating and setting up an unencrypted private key.
* **Password (Deprecated) / PAT**
* Snowflake has deprecated single-factor password authentication and [will block it by November 2025](https://www.snowflake.com/en/blog/blocking-single-factor-password-authentification/). It is highly recommended to setup Private Key or PAT authentication instead.
* You can also use a Programmatic Access Token (PAT) instead of a password to authenticate with Snowflake. See [Snowflake's documentation](https://docs.snowflake.com/en/user-guide/programmatic-access-tokens)
## Allowlisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# Supabase
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/supabase
## Intro
Find out more about Supabase [here](https://supabase.com/).
When connecting to Supabase, use **Supabases Shared Pooler Connection**. Click [here](https://supabase.com/docs/guides/database/connecting-to-postgres) for more information.
## Necessary Credentials
**Supabase Credential Location**
```
https://supabase.com/dashboard/project/PROJECT_ID/settings/database
```
* **Hostname**
* The server where your database lives
* Example: *db.PROJECT\_ID.supabase.co*
* **Port**
* The port the database server uses
* Example: *5432*
* **Database name**
* Name of the database you are connecting Explo to
* Example: *postgres*
* **Authentication**
* Scheme you want to use (options below)
### Authentication Options
**Username and Password**
* Credentials:
* Username
* Password
## Allowlisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# Timescale
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/data-source-types/timescale
## Intro
Find out more about Timescale [here](https://www.timescale.com/).
## Necessary Credentials
* **Hostname**
* The server where your database lives
* Example: *abcdefghi.jklmnopqrs.databasename.cloud.timescale.com*
* **Port**
* The port the database server uses
* Example: *31828*
* **Database name**
* Name of the database you are connecting Explo to
* Example: *acme\_production*
* **Authentication**
* Scheme you want to use (options below)
### Authentication Options
**Username and Password**
* Credentials:
* Username
* Password
## Allowlisting Explo's IPs
You may need to allowlist egress IPs for your
[Connectivity Region](/data-sources/connecting-to-data-sources/connectivity-regions).
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# SSH Tunnels
Source: https://docs.explo.co/data-sources/connecting-to-data-sources/ssh-tunnels
## Intro
Find out more about SSH Tunnels, in general, [here](https://www.ssh.com/academy/ssh/tunneling).
## Connecting via SSH Tunnels
To connect to your database via an SSH tunnel, you will need to provide these
credentials in the "Security" section of the connection flow:
* SSH Server Hostname
* SSH Server Port
* SSH Username
* SSH Key
* There are two options for SSH keys, `External Private Key` or `Explo Private Key`. See the section below for more information about which to use.
* (optionally) SSH Local Bind Port
### SSH Keys
Our recommendation between the two options is to use Explo's Private Key.
**Explo Private Key:**
* You'll be able to copy our public key and add it to your infrastructure under your chosen username (we recommend `explo`). This would set up the connection such that you would not need to exchange any private keys.
**External Private Key:**
* You'll pass in your RSA private key to Explo to utilize in authenticating with the SSH box.
## SSH Configuration Recommendations
Check your SSH box's sshd config (it's normally located in
`/etc/ssh/sshd_config`). We recommend setting `MaxSessions` and `MaxStartups`
to 100.
## Setting Up an SSH Bastion (aka Jump Box or Jump Server)
1. Create a new host with a public static IP that has inbound network access secured with your network's and Explo's egress IPs.
2. Create a new user (`explo`, for instance) on that host with password login disabled and with an `authorized_keys` file that contains Explo’s public key. This key can be found when adding a data source with an SSH tunnel in Explo.
3. Connect to your database in the Explo application by specifying the above public static IP and username as part of the SSH tunnel configuration, choosing the Explo Private Key authentication option.
## Questions?
Please reach out to the Explo team at
[support@explo.co](mailto:support@explo.co) if you have any questions.
# FAQ
Source: https://docs.explo.co/data-sources/data-library/faq
Common questions about the Data Library, Global Datasets, and Local Datasets
## Data Library Questions
**Which datasets can I see in Data Library?**
You'll only see Global Datasets. Local datasets will continue to be visible in the Dashboard and Report Builder views.
## Global Dataset Questions
**What are the current differences between Global Datasets and Local Datasets?**
The save flow is different. For Global Datasets, changes will be saved through commits and autosaved in local storage.
**How do Variables work with Global Datasets?**
Variables work the same way with Global Datasets as they work with Local Datasets. If you currently use Variables with your Local Datasets today, you will need to remap those variables to corresponding variables in the Global Dataset.
When you copy a Local Dataset to a Global Dataset, all defined variables will be copied over. The mapping of those variables will need to be redone after your copy is complete.
## Local Dataset Questions
**What happens to my Local Datasets when I onboard to Global Datasets?**
Local Datasets will still be available with Dashboards and Report Builders. You can continue using them alongside Global Datasets.
**Can I convert a Local Dataset to a Global Dataset?**
Yes, you can promote a Local Dataset to a Global Dataset at any time by copying it to the Data Library through the Dashboard Datasets panel.
# Global Datasets
Source: https://docs.explo.co/data-sources/data-library/global-datasets
Understanding and getting started with Global Datasets
## Demo Video
To see a Global Datasets demo, check out this Loom [here](https://www.loom.com/share/d708f8c1aec7465c8f6d1dbbd1a765e4).
## About Global Datasets
Global Datasets are reusable data definitions that can be shared across your entire organization. They function as a semantic layer that:
* Enables teams to define datasets once and reuse them across Dashboards and Report Builders
* Ensures consistency across all dashboards and report builders
* Eliminates duplicate datasets and reduces potential errors
## Getting Started with the Data Library and Global Datasets
**Step 1: Go to the Data Library**
Navigate to the Data Library on the left side menu. Create your required folder structure before creating a Dataset.
Note:
You cannot currently move a folder. If you need to move a folder, please delete and create in the new location.
**Step 2: Create a Dataset**
Give the dataset a meaningful name and assign it to a destination schema. This ensures it is easily recognizable.
**Step 3: Define the Dataset**
Write the SQL logic for your dataset and define fields, conditions, and business logic.
**Step 4: Commit Your Changes**
Once you've written or updated the SQL, click the "Create Commit" button to save your changes. You will now document your version history and ensure every version update is traceable.
**Step 5: Import Global Datasets into a Dashboard and Report Builder**
You are now ready to build! You can use both Global Datasets and "local" datasets to build dashboards report builders. Navigate to the Datasets tab in the dashboard or report builder creation page to search and import the dataset(s) you need from the Data Library.
# Local Datasets
Source: https://docs.explo.co/data-sources/data-library/local-datasets
Understanding Local Datasets in Explo
## About Local Datasets
Local Datasets are dashboard-specific data definitions that provide flexibility and quick iteration capabilities for individual dashboards. They are designed to:
* Enable rapid prototyping and development
* Provide dashboard-specific customization
* Support iterative development processes
## Dashboard-Specific Storage
Unlike Global Datasets, Local Datasets:
* Live outside the Data Library
* Are specific to individual dashboards
* Can be modified without affecting other dashboards
## Promotion to Global Datasets
When a Local Dataset proves valuable across multiple dashboards:
1. Access the Dashboard Datasets panel
2. Select the Local Dataset you want to promote
3. Use the "Copy to Data Library" option
4. The dataset will be available as a Global Dataset
When promoting a Local Dataset to a Global Dataset, remember that any variables defined in the Local Dataset will need to be remapped in the Global Dataset version.
# Overview
Source: https://docs.explo.co/data-sources/data-library/overview
Understanding the Data Library and its components
## What is the Data Library?
The Data Library is the central repository for all Global Datasets in your organization. It serves as a unified location where you can:
* Access datasets created by your colleagues
* Organize datasets into folders by domains, themes, use-cases, or customers
* Manage both Global and Local datasets efficiently
## What are Global Datasets?
Global Datasets are reusable data definitions that can be shared across your entire organization. Learn more [here](/data-sources/data-library/global-datasets).
## What are Local Datasets?
Local Datasets are dashboard-specific data definitions. Learn more [here](/data-sources/data-library/local-datasets).
# Overview
Source: https://docs.explo.co/data-sources/data-sources-and-schema
This section describes the data model through which Explo organizes and connects to your databases.
## What are Schema?
Schema are a foldering system that you can use to group your data sources by
queries that will be run against them. Schema define a set of common tables
between its data sources, which are referred to as synced tables. Each schema
has a default data source, which serves as the source of these synced tables for
that schema.
Dataset queries and visualizations are configured against a schema, rather than
a single dataset. When you render a dashboard for a specific customer, it will
pull all data from the data source the customer is associated with for each
schema when populating the view.
All data sources in your schema must have the same set of tables in order for
dashboards to work as expected. All dataset queries and visualizations you
configure in the dashboard must run correctly against every data source you
add to a schema.
## What is a Data Source?
A data source is a connection to a single database or data warehouse. The data
pulled into your dashboards comes from a data source, and Explo supports
connecting multiple data sources to your dashboards.
Data sources are associated with customers, and this association is what
tells Explo which data sources to pull from when populating your dashboards.
Customers do not have to explicitly be associated with a data source, and
Explo will use your schema's default data source.
You can view the data exposed to Explo for your data sources by clicking on a
data source from the Data tab. From this view, you can see a list of synced
tables for that data source's schema, and the data from that specific data
source. You can use the dropdown to select each data source from that schema.
## Why use Schema?
Schema are a powerful tool that enable you to use databases of different shapes
to power different elements of your dashboard. Because datasets in your
dashboard are connected to a specific schema, you don't have to ensure that
every data source you connect to Explo works with every query you write.
For example, you might have a set of data sources in a "Sales" schema that
powers some datasets and dashboard elements and another set of data sources in a
"Marketing" schema that powers others. Your customers would see their own data
in each of these schemas, which makes your dashboards more flexible and
informative.
# Managing Schema
Source: https://docs.explo.co/data-sources/data-sources-and-schema/managing-schema
This guide describes how to manage schema set up for your multiple data sources.
## Adding a Schema
To add a schema, you must create a new data source and associate it with that
schema. On the Data tab, click the "Add Data Source" button to add a new data
source. As part of this flow, you will see a 'plus' sign next to the schemas
dropdown, which you can click to enter a schema name. This data source will
automatically be assigned as the default data source for your new schema, and
you will be prompted to sync tables on connection to the data source.
## Managing Schema
To manage schema, navigate to the Data tab and click the Manage Schemas button.
From here, you can edit the names of your schema, change the default data
source, and delete your schema.
When changing the default data source for a schema, it is recommended that you
then sync tables for that data source again.
Deleting a schema is an operation that should only be done if absolutely
necessary. When you delete a schema, all data sources linked to that schema will
be deleted. Because these data sources may be powering queries in your
dashboards, you cannot delete a schema that has any datasets linked to that
schema. You must first manually delete those data sets from the Dashboard editor
before deleting the schema itself.
# Multiple Data Sources
Source: https://docs.explo.co/data-sources/data-sources-and-schema/multiple-data-sources
This guide describes how to configure Explo to support multiple data sources
## Why Multiple Data Sources?
There are a few different reasons why you may want to connect multiple data sources to Explo:
* You want to connect and build dashboards against both your staging and production databases
* You have customer data segmented into multiple different databases
In either of these scenarios, you can use Explo to connect multiple data sources to power your dashboards.
Explo allows you to folder your data sources by schema to configure which
queries run against which data sources. For more information, navigate to the
[Managing Schema](/data-sources/data-sources-and-schema/managing-schema)
section of our documentation.
## View Data Sources
To view all connected data sources, navigate to the Data tab.
On this page, you will see all connected data sources. If you click on a
specific data source, you will be taken to a data viewer where you can preview
the data in the data source. This view also allows you to toggle between
different data sources within that schema.
## Add a Data Source
On the Data tab, click the "Add Data Source" button to add a new data source.
First, you'll be prompted to enter a display nickname and id for your database,
along with choosing its schema and visibility group. For more information about
visibility groups, check out
[this section of our documentation](/managing-permissions/visibility-groups).
Follow the steps in the flow and enter your credentials for the database to
connect it to Explo.
## Connecting Customers to Data Sources
### Customer API
Every customer you create in Explo is associated with a specific set of data
sources, one for each schema. When you render the dashboard for that customer,
it will pull all data for that view from those data sources associated with the
customer.
When you create a customer via the API, you can optionally specify a
`data_source_id` or the `data_source_provided_id`. This will associate the user
group with that data source for the schema that data source belongs to. If you
do not specify the data source, it will associate the customer with the
default data source, which you can configure from the data page.
For more information, go to
[our section on the Customer API](/api-reference/customer-api).
You can retrieve the data default `data_source_id` by going to the data tab and
looking at the number ID for the data source (47).
You can assign a `data_source_provided_id` in the data tab which then can be
used to identify the data source in your API requests:
### Customers Tab
On the Customers tab, there are dropdowns for choosing a data source for each
schema when editing or creating a customer. If no data source is selected for a
given schema, that customer will be associated with the default data source for
that visibility group and schema.
## Viewing Dashboards in Different Data Sources
When you are making dashboards, there is a dropdown for customers.
For each dashboard, you will be able to toggle between different customers to
select which one you are viewing as. the data on the page will then reflect data
from the data sources associated with that customer.
## Embedding with Multiple Data Sources
Embedding with multiple data sources is as straightforward as with a single data
source.
When you create your customers, we will give you back the customer token.
Simply provide this token when embedding and we will query from the right data
sources and present the correct data.
# Sync Tables
Source: https://docs.explo.co/data-sources/data-sources-and-schema/sync-new-tables
Sync tables in your database
Syncing tables will allow you to view table and column names in the dataset editor,
as well as use autocomplete when writing SQL. It is recommended that you sync tables
when adding a new schema to Explo, or when new tables are added into your database
or warehouse.
You can sync tables by clicking on the triple dot menu to the right of the schema.
From here, you can select the specific tables that you plan on querying from while
using Explo. Note that all tables will still be accessible in the dataset editor,
but only synced tables will show up with autocomplete.
Click continue and the tables should be synced! This may take a little while if the tables
are particularly large. Note that a schema only syncs tables taken from the default data
source for that schema.
# Data Source Specifics
Source: https://docs.explo.co/data-sources/fido/data-source-specifics
Below is a table explaining some specifics around how FIDO interacts with each data source it connects to.
| Data Source Type | Persistent Connections Supported? | Other Notes |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------- |
| Athena | N/A - Athena has no persistent connection support. | All features supported |
| BigQuery | N/A - BigQuery has no persistent connection support. | All features supported |
| Clickhouse | Yes | All features supported |
| Databricks | N/A - Pooled connections maintained but no keepalives used. Warehouse is allowed to sleep when no Explo activity occurs. | All features supported |
| Motherduck | Yes | All features supported |
| MySQL | Yes | Only 5.7+ supported; percentile calculations only fully supported in 8.0+ |
| Postgres | Yes | All features supported (recommend Postgres 12+) |
| Redshift | Yes - but possible to disable keepalives for serverless warehouse. Contact support if interested. | All features supported |
| Snowflake | N/A - Pooled connections maintained but no keepalives used. Warehouse is allowed to sleep when no Explo activity occurs. | All features supported |
| SQL Server | Yes | All features supported |
| Supabase | Yes | All features supported; note must use IPv4 to connect or Supavisor Session Mode |
## Connection Keep Alive Queries
For data source types that support persistent connections, we periodically validate that each connection is still valid.
After one minute since the last successful query on that connection, we will run `SELECT 1 as result` as validation. If
this query fails, we will replace that specific connection. Keeping these connections alive and valid helps decrease
query latency, providing a better end-user experience.
### Disabling Keep Alive Queries
For data source types that offer a serverless variety (such as Redshift Serverless), keep alive queries can cost you
money because they keep the database awake. We offer the ability to disable keepalives for cases like that. Please reach
out to support if you'd like to disable keep alive queries.
# General
Source: https://docs.explo.co/data-sources/fido/general
Explo's data querying microservice called FIDO.
FIDO is Explo's data orchestration service. There are a lot of benefits compared to the previous data querying architecture including:
* Persistent database connection management, eliminating connection latency for queries (connection and SSH tunneling time)
* Longer timeouts configurable for queries
* Querying databases within a certain region of the world for data residency requirements and speed optimizations
* Connect via SSH tunneling, AWS PrivateLink, and more
## Resources
* We’ve also [talked about it a bit on our engineering blog](https://www.explo.co/blog/explo-data-connector) if you’d like to read more.
* Here is a slide that we presented with a partner showing one customer’s speed-up (your results may vary of course).
* Here is a talk that Gary (co-founder) gave about the query service
**Optimizing Analytics Platforms with ClickHouse** (March 2025)
# How to Migrate
Source: https://docs.explo.co/data-sources/fido/how-to-migrate
## 1. IP Allowlisting
To prepare for this, you will need to adjust your IP allowlisting for your databases (and SSH bastions if you use one) to include two new IPV4 addresses. More details [here](https://docs.explo.co/data-sources/connecting-to-data-sources/connectivity-regions#default-connectivity-region-access), including all of our egress IPs for all of our infrastructure. **For brevity, these are the new addresses to be *added*** (please keep the existing):
```
3.219.104.199
35.175.85.18
100.27.162.59
34.231.221.92
```
There is a chance these have already been added by your team.
## 2. Contact Explo Support
Please reach out to your Explo support contact or email [support@explo.co](mailto:support@explo.co).
# Add Explo Domains To CSP
Source: https://docs.explo.co/embedding-documentation/add-explo-domains-to-csp
Add Explo Domains to your Content Security Policy
If you have a strict Content Security Policy, please allowlist `https://*.explo.co` to your CSP to ensure our embed can work properly and make the proper requests. If you’re not sure if you have a strict CSP, then you likely don’t. If you prefer not to wildcard Explo’s subdomains, these are the necessary domains:
```
- https://app.explo.co
- https://api.explo.co
- https://embed.explo.co
- http://custom-assets.explo.co
```
Below are the data connector domains (for [FIDO](/data-sources/new-data-connector-fido)). Depending on which region you are using, you'll need to allowlist the right set. If you don't know which region you are using, then you are using the `default` one.
```
# Default Cloud Region (us-east-1)
- https://*.data.explo.co
- https://us-east-1.data.explo.co
- https://rover.data.explo.co
# APAC Region (ap-southeast-1)
- https://fido.prod-ap-southeast-1.explo.co
- https://rover.prod-ap-southeast-1.explo.co
# EU Region (eu-central-1)
- https://fido.prod-eu-central-1.explo.co
- https://rover.prod-eu-central-1.explo.co
# GovCloud Region
- https://us-gov-east-1.gov-data.explo.co
- (ask Explo Support for the other domain)
```
More may be added in the future, but customers will be notified ahead of time.
The URL `custom-assets.explo.co` is used for custom fonts, so please ensure to allowlist this domain if you are using custom fonts. This asset used to be served at `https://explo-custom-fonts.s3.us-west-1.amazonaws.com`, but we have since migrated it to `custom-assets.explo.co` (in January 2025). We will continue to support both for backwards compatibility. Our support team will reach out to those who might be using the old URL in their allowlist.
# Allowlisting your domain
Source: https://docs.explo.co/embedding-documentation/allowlisting-your-domain
Reach out to our team to allowlist your domains before embedding Explo dashboards
Don't forget you may need to also allowlist egress IPs for your [Connectivity
Region](/data-sources/connecting-to-data-sources/connectivity-regions).
You will need to allowlist your development, staging, and production domains in
Explo to enable the embedded component to communicate with our API. For
development purposes, we have `localhost` on ports 3000, 3001, 3002, 6700, 8080
allowlisted already.
To add a allowlist rule, go to the Domain Allowlisting section of the settings
page. There'll you'll see a list of all the rules your team has added, as well
as both a button to add more rules and a text input field that you can use to
test a url against your rules.
The following are notes about how Explo allowlisting works:
* Explo's allowlist supports both hardcoded domains and domains that use an
asterisk (\*) as a wildcard
* [https://testing.explo.co](https://testing.explo.co) and https\://\*.explo.co will both allowlist
[https://testing.explo.co](https://testing.explo.co), but the second rule would also allowlist
[https://staging.explo.co](https://staging.explo.co)
* A wildcard only applies to a single subdomain (the portion of a url between
two periods)
* https\://\*.\*.explo.co would allowlist [https://site.testing.explo.co](https://site.testing.explo.co), but
https\://\*.explo.co would not
* Wildcards can also be mixed with hardcoded text within a subdomain
* [https://explo-\*.co](https://explo-*.co) allowlists [https://explo-testing.co](https://explo-testing.co) and
[https://explo-staging.co](https://explo-staging.co)
* The www is not required for the allowlist rules
* [https://explo.co](https://explo.co) allowlists both [https://www.explo.co](https://www.explo.co) and [https://explo.co](https://explo.co)
* You must include a protocol (http or https) in your allowlist rule, and this
cannot be wildcarded
If you want to allowlist ALL domains to view your dashboards, you can add \* as
a rule
# Option 1: Web Component
Source: https://docs.explo.co/embedding-documentation/dashboard/option-1-web-component
Embed Explo dashboards through a web component
## Step 1: Import Explo JS library
Add Explo's script tag to the `` of your index.html
```html index.html theme={null}
```
## Step 2. Embed the web component
### What is the web component?
The Explo web component is a custom HTML element. This means that it functions
as a native HTML element and can be used in any web development context. You can
read more about custom HTML elements
[here](https://developer.mozilla.org/en-US/docs/Web/Web%5FComponents/Using%5Fcustom%5Felements).
### Where can I use the component?
Since the web component is a custom HTML element, you can use it in any context:
* Directly in an HTML file
* Define it in vanilla JS
* Any JS web framework: React, Vue, Angular, etc
### Embedding the component
The embed component takes in a few different properties. The component is
backward-compatible with the previous V1 syntax and V0 syntax, but we recommend using the V2 (embed secret) syntax.
Read more about embed secrets [here](/embedding-documentation/embed-secrets/).
```html V2 (Embed Secret) Syntax theme={null}
```
```html V1 (Dashboard Customer Token) Syntax theme={null}
```
```html V0 (User Group Token) Syntax theme={null}
```
#### Component Attributes
| Attribute Name | Type | Description |
| -------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| dash-jwt (recommended) | string | This is the embed secret (JWT) for the dashboard. We recommend you use this attribute instead of the `dash-customer-token`. Read more about embed secrets [here](/embedding-documentation/embed-secrets/). |
| dash-customer-token | string | This is a string with two values concatenated together: (1) the `dashboard_id` and (2) the `customer_token`. You should concatenate them with a colon between them like so: `":"`. We recommend you use the `dash-jwt` instead of this attribute, but it is still supported. |
| updateUrlParams | boolean | This is false if not specified. When true, the page's URL params will update when the dashboard's interaction inputs (dropdown, multi-select, etc) change so direct links will have the inputs configured. |
| disable-stringify-on-string-url-params | boolean | This is false if not specified. When true, string values in URL parameters will not be JSON stringified. Objects and arrays are always stringified. This affects how variables appear in the URL when using interactive elements (dropdowns, multi-select, etc). |
| isProduction | boolean | This indicates if the web component is being embedded in a staging or production environment. This helps us track the usage of the component so we can share more accurate usage statistics with you. |
| environment | string | This lets you specify the environment version that the web component is being embedded in: "production", "staging", "development", etc. If environment is not specified, it will render the most recent saved version of the dashboard. |
| refresh-minutes | number | An optional argument that allows you to tell the dashboard to automatically refresh on a cadence. |
| variables | string | This argument allows you to pass in values for variables on your dashboard. This will result in default values for any variables and UI dropdowns on the dashboard. Note that you must pass in a stringified JSON object using `JSON.stringify(variablesObject)`, unless you are embedding directly in an HTML file. |
| locale-code | string | An optional argument that overrides any text localization settings for your team. This will localize your dashboard's numbers and dates to the desired locale, if supported. Check out support languages [here](/general-features/internationalization#supported-languages). |
| currency-code | string | An optional argument that overrides any currency localization settings for your team. This will localize your dashboard's currency symbols and format to the desired locale, if supported. Check out support currencies [here](/general-features/internationalization#supported-currencies). |
| analytics-properties | string | This argument allows you to pass in properties that will be passed along with [analytics events](/general-features/analytics-reporting). Note that you must pass in a stringified JSON object using `JSON.stringify(propertiesObject)`, unless you are embedding directly in an HTML file. |
| timezone | string | An optional argument that allows you to specify a timezone to display dates in. Valid values can be found [here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). |
| disable-editable-section-editing | boolean | An optional argument that disables your user from editing the [editable section](https://docs.explo.co/dashboard-features/editable-dashboard-sections) at the bottom of the dashboard if enabled. |
| hide-editable-section | boolean | An optional argument that hides the [editable section](https://docs.explo.co/dashboard-features/editable-dashboard-sections) if enabled. |
| hide-editable-section-edit-controls | boolean | An optional argument that hides the [editable section](https://docs.explo.co/dashboard-features/editable-dashboard-sections) edit controls (toggling editing mode, saving/ discarding changes). Recommended only if using JS events. |
| theme | string | This is the name of the theme you created in the [custom styles tab](https://app.explo.co/styles) |
| id | string | An optional argument that allows you to uniquely identify this dashboard if you have multiple on the same page. Used in [Custom JS Events](/general-features/custom-js-events) |
### Typescript Type Definition
If you are using TypeScript, define the embedded component within the global
namespace. This needs to be defined at the top of each TypeScript file that uses
the `explo-dashboard` component. You may need to exclude this block from your
lint rules (e.g. @typescript-eslint/no-namespace)
```javascript theme={null}
declare global {
namespace JSX {
interface IntrinsicElements {
'explo-dashboard': unknown;
}
}
}
```
### Passing in Variables
You can see how to do that [here](/creating-dashboards/variables/passing-in-variables#embedded-component).
### Hide Elements
You can hide elements on your dashboard by passing a hide parameter into the variables of your embed like so:
```
variables={JSON.stringify({ "element_name.hide": "true"})}>
```
### Exclude Dates
You can also restrict the available dates on a dashboard by passing in a min and max date to each date picker element in the variable section like so:
```
variables={JSON.stringify({
"date_range_elem_id.maxDate": "",
"date_range_elem_id.minDate": ""}
)}>
```
### Event-Based Updates
You are also able to pass events to the Explo web component without reloading the entire dashboard. Below is an example of passing a hide element event to a web component.
See [here](/general-features/custom-js-events) for more information on Custom JS Events.
```
const event = new CustomEvent('updateExploDashboardVariable', {
detail: {
varName: "data_table_1.hide",
value: "true"
}
});
window.dispatchEvent(event);
```
# Option 2: IFrame
Source: https://docs.explo.co/embedding-documentation/dashboard/option-2-iframe
Embed Explo dashboards through an IFrame
## What is an IFrame?
The HTML Inline Frame element (`