Skip to main content
Version: 1.2.0

Snowflake deployment

Download the Snowflake client from the Feature Store UI and extract it.

Create Azure function app

  1. Create a function app in Azure
  2. Use VS Code to deploy the functions present inside the azure-function-app on the extract path to the function app
  3. Create variable FS_URL with the Feature Store backend url in the function app ( Configuration -> Application Settings)

Create Azure API management service

  1. Create a new Azure API Management Service
  2. Create new API by importing the function app
  3. Make a note of the URL for the API service

Create Azure AD application

  1. Create a new Azure Active Directory App and click Save
  2. Go to App Registrations, search for the new AD app and make a note of the App Id
  3. Make a note of the Tenant Id from Azure Active Directory

Create API integration in Snowflake

The following SQL code can be used to create the API integration to Microsoft Azure API Gateway:

create or replace api integration integration_name
api_provider=azure_api_management
azure_tenant_id=<Azure AD Tenant Id>
azure_ad_application_id=<Azure AD App Id>
api_allowed_prefixes = (<URL of the API Service>)
enabled=true;

Instructions on how to link Snowflake API Integration to Azure Proxy Service.

Create external functions in Snowflake

The definitions for external functions can be found inside the file setup.sql.

  1. Replace the name of the api integration with the API Integration that you have created.

Setup JWT validation between Snowflake and Azure

Create storage integration in Snowflake

You need to create storage integration and external Azure stages in Snowflake so that Snowflake can read data directly from the Feature Store storage.

// Storage Integration
create or replace storage integration <integration name>
type = external_stage
storage_provider = azure
enabled = true
azure_tenant_id = '<Azure AD Tenant Id>'
storage_allowed_locations = ('azure://<Feature Store Storage Account Name>.blob.core.windows.net/<Feature Store Retrieve Container Name>');

// File format
create or replace file format my_parquet_format
type = parquet
COMPRESSION = SNAPPY;

// External Stage
create or replace stage <external stage name>
storage_integration = <integration name>
url = 'azure://<Feature Store Storage Account Name>.blob.core.windows.net/<Feature Store Retrieve Container Name>'
file_format = my_parquet_format;

Feedback