Introduction
Honeydew enables deep integration in Snowflake with a snowflake native application. It can be installed from the Snowflake Marketplace Listing. When the native app is installed, Honeydew API can be accessed directly from a Snowflake connection or the web interface, to do things such as:- Query data based on a semantic query
- Generate Snowflake SQL query from a semantic query
- Consume any metadata such as field names and descriptions
- Update the semantic layer definitions
Installation
1
Honeydew account
Honeydew native application requires a Honeydew account. If you don’t have one yet, schedule a 20-min onboarding here.
Review the initial setup documentation for a full list of setup steps.
2
Native App installation name
Note the name you have given to the application (i.e.
SEMANTIC_LAYER) and replace SEMANTIC_LAYER in all examples below with the actual application name.
You can find the names of the installed applications by running the following command:3
Create API Key
In Honeydew application, navigate to the
Settings page, and generate an API Key
to be used for this integration. Copy the generated API Key and API Secret values.4
Set API Credentials
Set the Honeydew API Credentials for the Honeydew application, replacing
api_key and api_secret with the generated API Key values:5
Create Honeydew API Integration
Create a Snowflake integration to the Honeydew API:
This integration is used to allow the Honeydew native application to access the Honeydew API.The
API_NETWORK_RULE is automatically created by the Honeydew native application setup process.
It is pointing to the api.honeydew.cloud endpoint
(or to a custom endpoint if you are using a private Honeydew deployment).Make sure to name the integration
HONEYDEW_API_ACCESS_INTEGRATION - do not change that name.6
Grant Integration Access
Grant the Honeydew API integration to the Honeydew application:
7
Enable External Access
Enable the Honeydew API integration for all Honeydew code functions and procedures:You will receive the following result upon success:
8
Grant Native App Access
Optionally, grant native app access to any additional Snowflake roles:
Upgrade
The Honeydew Snowflake Native Application is upgraded automatically when new versions are released.Native App Access
Grant native app access to any additional Snowflake roles:Usage Examples
Note that most calls require to choose the workspace and working branch. The convention here is to set those as variables, i.e.Workspace and Branches
List all workspaces and branches:Required permission: Viewer or higher
branch for a given workspace:
Required permission: Editor or higher
Required permission: Editor or higher
Required permission: Editor or higher
Required permission: Viewer or higher
Required permission: Viewer or higher
Required permission: Admin
Required permission: Admin
Schema
Parameters
List all global parameters in the given workspace and branch:Required permission: Viewer or higher
Entities
List all entities in the given workspace and branch:Required permission: Viewer or higher
Required permission: Viewer or higher
Fields Metadata
List all fields in the given workspace and branch:Required permission: Viewer or higher
Required permission: Viewer or higher
Required permission: Viewer or higher
Fields Add/Update/Delete
Change attributefield of entity entity
Required permission: Editor or higher
field of entity entity
Required permission: Editor or higher
Object CRUD
You can create, update, and delete any semantic layer object using its YAML definition. This provides a generic interface for managing entities, fields, domains, and other objects. Retrieve theobject_key and yaml for existing objects
from the SHOW_* functions described above.
All object CRUD functions accept an optional
force_with_error parameter (default FALSE).
When set to TRUE, the operation proceeds
even if validation errors are detected.
This is useful when you want to save a draft
that has known issues, such as a reference
to a field that doesn’t exist yet.
Create a new object from a YAML definition:
object_key:
object_key:
Required permission: Editor or higher
Create Entity
Create a new entity with its dataset in a single call, by providing both the entity and dataset YAML definitions:Required permission: Editor or higher
Domains
List all domains in the given workspace and branch:Required permission: Viewer or higher
Required permission: Viewer or higher
Required permission: Viewer or higher
Required permission: Viewer or higher
Required permission: Viewer or higher
Queries
Get data from a semantic query
The following stored procedure allows to run a semantic query and get the resulting data. It also possible to only generate the SQL (see next section).Required permission: Viewer or higher
AND between them.
Generate SQL for a query
The following function generates SQL for an ad-hoc semantic queryRequired permission: Viewer or higher
Using parameters with generated SQL
If a query is using Honeydew parameters then they will be generated as session variables in the query, and can be set withSET.
This is typically used for automation, with code calling the API setting parameter values.
A sample Snowflake stored procedure that sets parameters can look like:
Required permission: Viewer or higher
BI SQL Interface wrapper
It is possible to use the native application as a wrapper to the live SQL interface: Get data from ad-hoc SQL:Required permission: Viewer or higher
Required permission: Viewer or higher
Dynamic Datasets
Metadata
List all dynamic datasets in the given workspace and branch:Required permission: Viewer or higher
Add/Update/Delete
Create a dynamic datasetdataset in given workspace and branch:
Required permission: Editor or higher
dataset in given workspace and branch:
Required permission: Editor or higher
dataset from a given workspace and branch
Required permission: Editor or higher
Get Data or SQL
Get the data for a dynamic datasetdataset:
Required permission: Viewer or higher
dataset:
Required permission: Viewer or higher
Deployment
Deploy the dynamic datasetdataset according to its deployment settings (can be used for
aggregate aware caching and
incremental aggregate updates):
Required permission: Editor or higher
entity according to its deployment settings (to update entity cache):
Required permission: Editor or higher
Required permission: Editor or higher
Required permission: Viewer or higher
Required permission: Editor or higher
Honeydew scans the data warehouse information schema to check for validity of caches.If an entity or a dynamic dataset used for caching was deployed without calling
DEPLOY_DYNAMIC_DATASET or DEPLOY_ENTITY
(for example via a third party tool) then can call CLEAR_DEPLOYED_CACHE_STATUS to notify Honeydew that that a data cache was
updated in the data warehouse.AI Analyst
Plaintext Questions To Data
Translate plaintext questions to the correct Snowflake query using the semantic layer:llm_response: A descriptive response from the language modelllm_response_json: The JSON representation of the semantic queryperspective: A JSON representing the attributes, metrics and filters of the querysql: The generated SQL queryerror: An error message if an error was encounteredjudge: A JSON containing the judge evaluation of the answer
Required permission: Viewer or higher
The Claude 4.5 Sonnet (
claude-sonnet-4-5) model currently demonstrates the best performance,
and is recommended for most use cases.Ask Deep Analysis Questions
Run complex analysis questions using a multi-step agentic flow, leveraging the semantic layer as the source of truth:markdown: An analysis report in markdown formatdata: A JSON array of data sets generated during the analysissuggested_responses: An array of suggested follow-up questionsconversation_id: The conversation ID to be used for follow-up questions
Required permission: Viewer or higher
Cortex Code
Important: If using Cortex Code,
ensure the
Snowflake Cortex Prerequisites
are met, including the
COPILOT_USER role grant.Use Cases
Semantic Querying
The native app allows to query data using the semantic layer, without the need to write SQL queries. This is useful for users who are not familiar with SQL or want to leverage the semantic layer’s capabilities to simplify their queries. You can find some examples here.BI Tools Integration
The native app can be used to integrate Honeydew with various BI tools. You can find some examples here.Building custom AI analyst applications
The native app can be used to build custom AI analyst applications that leverage the semantic layer to answer user questions in natural language. For more details, see the AI Analyst API documentation and AI Workflow documentation.ETL Tools Integration
The native app interface can be used to integrate Honeydew with dbt as well as other ETL tools, for use cases such as:- Automatically generating and refreshing datasets (tables/views) based on semantic layer definitions.
- Maintaining semantic layer pre-aggregations freshness.
- Deploying semantic layer definitions to production environments.
Development and Testing
The native app can be used to develop and test semantic layer definitions. Developers can use their favorite development tools to edit the semantic layer definitions, push them directly to git, and use the native app APIs to validate the definitions. These validations can also be integrated into CI/CD pipelines to ensure that the semantic layer definitions are valid before deploying them to production.Example workflow
- Create a new branch in the semantic layer for development
- Make changes to the semantic layer definitions using your favorite development tools
- Push the changes to git
- Run the following native app calls to validate the changes:
- If there are no errors, create a pull/merge request in git to merge the changes into the main branch.
- Once the pull/merge request is approved, merge the changes into the main branch.
- Run the following native app call to reload the workspace and branch for all users: