Live Connection

Follow the in-product JDBC connection instruction for a dynamic dataset to configure a connection to Honeydew SQL interface.

A dynamic dataset provides filtering on data and fields exposed to Tableau.

Functionality

Honeydew supports exposing the semantic layer as a Tableau data source.

To publish a Honeydew-powered data source to Tableau Server or Tableau Online, one must build it in Tableau Desktop first and publish.

Dimensions

Any Honeydew attribute can be used as a Tableau dimension.

Measures

Any Honeydew metric can be used as a Tableau measure.

To use a metric use the “use metric in Tableau” functionality to generate its expression based on its type. The metrics are defined as Tableau custom fields such as

Integer metric -

RAWSQLAGG_INT('AGG("customers.count")')

Floating point metric -

RAWSQLAGG_REAL('AGG("lineitem.revenue")')

If you want to use a metric as a dimension, define it as a calculated attribute in Honeydew first.

Filters

Any Honeydew attribute or metric can be used as a filter.

Filters are automatically pushed down to the source in order to optimize performance.

Cross-entity queries

Any entity in Honeydew can be used in a Tableau Workbook.

Joins are automatically constructed by Honeydew. They are based on the relationships between entities that are used in a particular Tableau Sheet.

There is no need to use Tableau Level of Detail calculations. Honeydew automatically maintains the entity granularity for each metric.

For example, an average balance metric defined in the customer entity will always be counted on a customers level of detail. There is no need for a LOD field such as { FIXED [customer.c_custkey]: AVG([customer.c_custbal]) }.

More complex Level of Details are possible with grouped metrics.

Calculated Fields

Custom fields are supported, including Bins, Groups, custom dimension aggregations and custom field expressions.

If you want to reuse a custom field defined in Tableau: save it in Honeydew to a named attribute or metric.

That way, the code to compute it moves to the shared semantic layer.

Live Connection Limitations

  1. Conditional and Top/Bottom filters are not supported. Instead, build them as a calculated attribute in Honeydew and use it as a regular filter in Tableau.
  2. Joins on Honeydew datasets in the Data Source definition are not supported. Instead, add the required entities to the dynamic dataset, and Honeydew will figure out on the fly the needed joins for each user query in a Tableau Sheet.
  3. Level of Detail expression are not supported. There is no need for them to control granularity as it is done automatically. For complex use cases, use grouped metrics.
  4. For performance considerations when working with a live connection, see performance acceleration in Honeydew.

Extracts

Tableau Extracts can be built on top of any dynamic dataset in Honeydew.

They can be done in two modes:

  1. On a TABLE or a VIEW managed by Honeydew (requires to set up Snowflake delivery)
  2. By using the Snowflake Native Application

With a VIEW or a TABLE

Dynamic datasets can be set up deployment to Snowflake.

The resulting VIEW or TABLE can be used for a Tableau Extract.

With Snowflake Native Application

Create a Snowflake connection, and in the initial SQL add the following code:

CALL HONEYDEW_APP.API.SELECT_FROM_DYNAMIC_DATASET('workspace', 'branch', 'dataset');
CREATE TEMPORARY TABLE dataset AS SELECT * FROM table(result_scan(last_query_id()));

Given a workspace, a working branch in it (usually would be prod), and a dynamic dataset dataset.

This calls a stored procedure to retrieve dynamic dataset data, and stores it in a temporary table used to build the extract.

Then create a Custom SQL data source with the query

SELECT * FROM dataset