Skip to content

Quick Start

Replace <app_name> with the name you chose at install.

Install the app. Grant five privileges when prompted. Services start automatically.

Tell the app which table to learn from. The easiest way is Snowsight: Data Products > Apps > AIQu VEIL > Settings. Or bind via SQL:

CALL <app_name>.core.register_reference(
'training_source', 'ADD',
SYSTEM$REFERENCE('TABLE', 'my_db.my_schema.sales', 'PERSISTENT', 'SELECT')
);

For a view, use training_source_view and 'VIEW' instead of training_source and 'TABLE'.

Pick a name, point it at your table, tell it which columns to encode. Everything else is automatic.

CALL <app_name>.core.train_encoder(
'sales',
'my_db.my_schema.sales',
ARRAY_CONSTRUCT('price', 'sqft', 'bedrooms', 'bathrooms'),
16, 100, 256,
ARRAY_CONSTRUCT('year_built')
);

The first three arguments are required. The rest have defaults (16 latent dimensions, 100 epochs, batch size 256, no passthrough columns). Here we pass year_built as a passthrough column so it appears alongside the encoded features in the view. See Procedures for the full signature.

Poll for status:

SELECT job_id, status, progress
FROM <app_name>.core.training_jobs_v
WHERE encoder_name = 'sales';

Generate a protected view. Masking policies are applied automatically.

CALL <app_name>.core.create_view_from_encoder('sales');

Query the view. Admins see raw values. Everyone else sees encoded vectors.

As admin:

SELECT year_built, features
FROM <app_name>.app_runtime.sales_v
LIMIT 5;
-- year_built | features
-- 1985 | [350000, 1800, 3, 2]

As analyst:

SELECT year_built, features
FROM <app_name>.app_runtime.sales_v
LIMIT 5;
-- year_built | features
-- 1985 | [0.23, -0.41, 0.87, 0.12, ...]

Once you’re running, see Configuration for scheduled retraining, GPU training, and compute scaling.