Skip to content

Release 9f70cd64aeb92e5f0a41

Latest

Choose a tag to compare

Published S3 Paths

  • Latest UDFs
    • s3://whylabs-snowflake-udfs/udfs/v1/latest/setup.sql
    • s3://whylabs-snowflake-udfs/udfs/v1/latest/version.sha
    • s3://whylabs-snowflake-udfs/udfs/v1/latest/whylogs_udf.py
    • s3://whylabs-snowflake-udfs/udfs/v1/latest/whylabs_upload_udf.py
  • Version tagged UDFs
    • s3://whylabs-snowflake-udfs/udfs/v1/archive/9f70cd64aeb92e5f0a41/setup.sql
    • s3://whylabs-snowflake-udfs/udfs/v1/archive/9f70cd64aeb92e5f0a41/version.sha
    • s3://whylabs-snowflake-udfs/udfs/v1/archive/9f70cd64aeb92e5f0a41/whylogs_udf.py
    • s3://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.sql
    • https://whylabs-snowflake-udfs.s3.us-west-2.amazonaws.com/udfs/v1/latest/version.sha
    • https://whylabs-snowflake-udfs.s3.us-west-2.amazonaws.com/udfs/v1/latest/whylogs_udf.py
    • https://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.sql
    • https://whylabs-snowflake-udfs.s3.us-west-2.amazonaws.com/udfs/v1/archive/9f70cd64aeb92e5f0a41/version.sha
    • https://whylabs-snowflake-udfs.s3.us-west-2.amazonaws.com/udfs/v1/archive/9f70cd64aeb92e5f0a41/whylogs_udf.py
    • https://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')
;