Superseded by v1.3 (AI-assisted exports) and v1.2 (Slack + Teams delivery). This page is kept as a historical reference for the v1.0 launch.
Release notes · v1.0 (archived)

SnowExporter v1.0

The initial release of SnowExporter on the Snowflake Marketplace. Run a query, deliver the result by email or to cloud storage, on demand or on a schedule — all inside your Snowflake account.

What's in v1.0

Delivery modes

  • Email in the body — up to 50 rows (Snowflake email integration limit)
  • Email with presigned download link to a file written to an internal stage
  • File write to an internal stage or to AWS S3, GCP GCS, or Azure Blob

File formats & options

  • CSV (default) or JSON
  • Optional GZIP compression
  • Optional timestamp suffix on the file name
  • Partitioned or single-file output (follows Snowflake's COPY INTO rules)

Scheduling

  • Cron-based schedules for any export type
  • Timezone configurable in Settings → Timezone
  • Pause / resume / delete from the Scheduled Exports page
  • Refresh button on Scheduled Exports for the brief metadata latency after resume

Destinations

  • Multi-destination support — define as many as you need
  • Per-destination enable / disable
  • Per-destination Description and Business Contact metadata
  • Per-destination "allowed roles" policy, recorded and surfaced in UI (see Limitations for the enforcement caveat)

Application roles

  • app_admin — full access (Settings, schedules, all destinations)
  • app_analyst — limited / consumer access, granted as a sub-role of app_admin
  • Per-user role provisioning helper in Settings → Users that generates the SQL for the one-role-per-user pattern

Observability

  • Activity dashboard on the Home page
  • Full audit log on the Logs page — email sends, file exports, schedule lifecycle
  • Per-query actual compute credits pulled from ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY when available
Privileges requested

Three narrow privileges — and that's it.

PrivilegeWhy
IMPORTED PRIVILEGES ON SNOWFLAKE DB Read ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY for actual compute credits per query on the Logs page.
EXECUTE TASK Run scheduled exports as Snowflake tasks.
EXECUTE MANAGED TASK Run scheduled exports as serverless managed tasks when a warehouse is granted.

The app does not request CREATE DATABASE, MANAGE WAREHOUSES, or any privileges it does not use. The granted privileges match exactly what is declared in manifest.yml.

Account-level setup

What the consumer runs as ACCOUNTADMIN.

The app provides in-UI helpers that generate the exact SQL for each step. This section summarizes what those steps are.

1. Email notification integration (required for any email send)

USE ROLE ACCOUNTADMIN;

CREATE OR REPLACE NOTIFICATION INTEGRATION NATIVE_APP_EMAIL_INTEGRATION
    TYPE = EMAIL
    ENABLED = TRUE;

GRANT USAGE ON INTEGRATION NATIVE_APP_EMAIL_INTEGRATION
    TO APPLICATION SNOWEXPORTER;

Keep the integration named exactly NATIVE_APP_EMAIL_INTEGRATION — that's what the app references. Snowflake only delivers email to verified user emails on your account; the app's recipient picker reads from SHOW USERS rather than accepting free-text emails.

2. Source data access

USE ROLE ACCOUNTADMIN;

GRANT USAGE ON DATABASE <DATABASE> TO APPLICATION SNOWEXPORTER;
GRANT USAGE ON SCHEMA <DATABASE>.<SCHEMA> TO APPLICATION SNOWEXPORTER;
GRANT SELECT ON ALL TABLES IN SCHEMA <DATABASE>.<SCHEMA> TO APPLICATION SNOWEXPORTER;
-- (optional) SELECT on views:
GRANT SELECT ON ALL VIEWS IN SCHEMA <DATABASE>.<SCHEMA> TO APPLICATION SNOWEXPORTER;

Alternatively, use the manifest reference snowexporter_consumer_table (granted via the app's reference manager) for a single table.

3. Export destinations

Internal stage — Snowflake-managed; no storage integration needed. External cloud (AWS S3 / GCP GCS / Azure Blob) — same shape: create a STORAGE INTEGRATION, grant USAGE on it to the app, and for AWS configure the IAM role trust policy with the STORAGE_AWS_IAM_USER_ARN and STORAGE_AWS_EXTERNAL_ID from DESC INTEGRATION.

4. (Optional) Warehouse for scheduled tasks

If you want scheduled exports to run as serverless managed tasks rather than against a user-specified warehouse, grant the app access to a warehouse via the snowexport_native_app_warehouse reference (Snowsight → Application → Grant access).

Known limitations

What v1.0 does not do.

  • Email body delivery: ≤50 rows per send (SYSTEM$SEND_EMAIL cap).
  • Email recipients: verified Snowflake user emails only — no free-text addresses.
  • Per-destination role enforcement: policy-only in v1.0; runtime enforcement is on the roadmap.
  • Per-file size: follows Snowflake's COPY INTO limits.

Available now

SnowExporter v1.0 is live on the Snowflake Marketplace.

Get it on the Marketplace Product overview