Published S3 Paths
- Latest UDFs
s3://whylabs-snowflake-udfs/udfs/v1/latest/setup.sqls3://whylabs-snowflake-udfs/udfs/v1/latest/version.shas3://whylabs-snowflake-udfs/udfs/v1/latest/whylogs_udf.pys3://whylabs-snowflake-udfs/udfs/v1/latest/whylabs_upload_udf.py
- Version tagged UDFs
s3://whylabs-snowflake-udfs/udfs/v1/archive/9f70cd64aeb92e5f0a41/setup.sqls3://whylabs-snowflake-udfs/udfs/v1/archive/9f70cd64aeb92e5f0a41/version.shas3://whylabs-snowflake-udfs/udfs/v1/archive/9f70cd64aeb92e5f0a41/whylogs_udf.pys3://whylabs-snowflake-udfs/udfs/v1/archive/9f70cd64aeb92e5f0a41/whylabs_upload_udf.py
Published HTTP paths
- Latest UDFs
https://whylabs-snowflake-udfs.s3.us-west-2.amazonaws.com/udfs/v1/latest/setup.sqlhttps://whylabs-snowflake-udfs.s3.us-west-2.amazonaws.com/udfs/v1/latest/version.shahttps://whylabs-snowflake-udfs.s3.us-west-2.amazonaws.com/udfs/v1/latest/whylogs_udf.pyhttps://whylabs-snowflake-udfs.s3.us-west-2.amazonaws.com/udfs/v1/latest/whylabs_upload_udf.py
- Version tagged UDFs
https://whylabs-snowflake-udfs.s3.us-west-2.amazonaws.com/udfs/v1/archive/9f70cd64aeb92e5f0a41/setup.sqlhttps://whylabs-snowflake-udfs.s3.us-west-2.amazonaws.com/udfs/v1/archive/9f70cd64aeb92e5f0a41/version.shahttps://whylabs-snowflake-udfs.s3.us-west-2.amazonaws.com/udfs/v1/archive/9f70cd64aeb92e5f0a41/whylogs_udf.pyhttps://whylabs-snowflake-udfs.s3.us-west-2.amazonaws.com/udfs/v1/archive/9f70cd64aeb92e5f0a41/whylabs_upload_udf.py
Snowflake SQL
Create the latest functions in Snowflake like so. Make sure to see the official doc page for all of the instructions. This snippet doesn't cover creating the required secrets.
-- Set up network rules
CREATE OR REPLACE NETWORK RULE whylabs_profiling_rule
MODE = EGRESS
TYPE = HOST_PORT
VALUE_LIST = ();
CREATE OR REPLACE NETWORK RULE whylabs_api_network_rule
MODE = EGRESS
TYPE = HOST_PORT
VALUE_LIST = ('api.whylabsapp.com', 'log.whylabsapp.com', 'songbird-20201223060057342600000001.s3.us-west-2.amazonaws.com');
-- Set up integrations
CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION whylabs_upload_integration
ALLOWED_NETWORK_RULES = (whylabs_api_network_rule)
ALLOWED_AUTHENTICATION_SECRETS = (whylabs_api_key, whylabs_org_id)
ENABLED = true;
-- Set up storage integrations
CREATE OR REPLACE STORAGE INTEGRATION whylabs_s3_integration
TYPE = EXTERNAL_STAGE
STORAGE_PROVIDER = 'S3'
ENABLED = TRUE
STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::207285235248:role/public-snowflake-role'
STORAGE_ALLOWED_LOCATIONS = ('s3://whylabs-snowflake-udfs/udfs/')
;
CREATE OR REPLACE STAGE whylabs_udf_stage
STORAGE_INTEGRATION = whylabs_s3_integration
URL = 's3://whylabs-snowflake-udfs/udfs/'
;
-- Create the UDFs
create or replace function whylogs(data object)
returns table (
profile_view varchar,
dataset_timestamp int,
segment_partition varchar,
segment varchar,
rows_processed int,
debug_info varchar
)
language python
runtime_version = '3.10'
packages = ('snowflake-snowpark-python', 'whylogs', 'pandas')
handler = 'whylogs_udf.handler'
imports = ('@whylabs_udf_stage/v1/latest/whylogs_udf.py')
;
create or replace function whylabs_upload(data object)
returns table (
dataset_id varchar,
result varchar,
error varchar,
dataset_timestamp int,
segment varchar
)
language python
runtime_version = '3.10'
external_access_integrations = (whylabs_upload_integration)
secrets = ('whylabs_api_key' = whylabs_api_key, 'whylabs_org_id' = whylabs_org_id)
packages = ('snowflake-snowpark-python', 'requests', 'whylogs', 'whylabs-client')
handler = 'whylabs_upload_udf.handler'
imports = ('@whylabs_udf_stage/v1/latest/whylabs_upload_udf.py')
;