Application roles

The following application roles are created and can be assigned to your own roles to manage access and usage of various Winning Variant features:

RoleDescriptionAccess
adminAdministratorAn admin can do everything!
analystExperimentation analystSELECT on all tables in the experimentation and consumption schemas as well as run stored procedures related to output data.
editorWinning variant resource editorInherits analyst, can use the Configuration UI, and can run all stored procedures for resource management.
proxyReverse proxy for Variant APIUsage on Variant API service endpoint. This role is designed specifically for a reverse proxy sitting in front of the Variant API.

Account-level Assets

A few assets are created on the account automatically and used internally by the app.

TypeDescriptionAuto-suspend
Compute PoolSingle-node CPU_X64_XS compute pool shared across all services.1 hour
WarehouseSingle-node XSMALL warehouse used for configuration services.1 hour
WarehouseSingle-node XSMALL warehouse dedicated to the Variant API.1 hour

The admin role is granted MODIFY on all assets to adjust sizing, if necessary.

Snowpark Container Services

Winning Variant creates various services inside of the app, including:

Configuration UI

Your experimentation interface! See your application details or contact your Winning Variant team for your specific URL.

Variant API

The API used to get and make assignments (for experiments outside of Snowflake). Read more here. See your application details or contact your Winning Variant team for your specific URL.

Snowflake does not allow public internet access to any Snowpark Container Service. In order to allow applications, websites, etc. outside of Snowflake to use the Variant API, you must set up a reverse proxy that has access.

Manage Services

The above services can be managed by an admin using the following stored procedures:

ProcedureDescriptionRequired Role
management.suspend_services()Suspends all services.admin
management.resume_services()Resumes all services.admin
management.get_service_status()Gets the status of all services.admin
management.get_service_endpoints()Shows ingress URLs for all services.admin

Examples

-- Suspend all services
CALL <application_name>.management.suspend_services();

-- Check status of services
CALL <application_name>.management.get_service_status();

Assignment Consumption

The app provides various views specifically for monitoring assignment consumption within the app. The following are available in the experimentation schema and available to the analyst and admin application roles.

ViewDescription
assignments_per_hourNumber of assignments aggregated by hour.
assignments_per_dayNumber of assignments aggregated by day.
assignments_per_monthNumber of assignments aggregated by month.
assignments_per_experimentNumber of assignments aggregated by experiments.

Examples

-- Get YTD assignment count
SELECT SUM(assignment_count) as assignment_count
  FROM experimentation.assignments_per_month
  WHERE created_at_month >= DATE_TRUNC('YEAR', current_date());