advanced
plugins
bigquery
snowflake

BigQuery / Snowflake / Looker Export

Daily delta export of all Levy fleet data to your data warehouse. Connect BigQuery, Snowflake, Redshift, or Looker for advanced analytics.

Levy Fleets TeamMay 18, 20266 min read

BigQuery / Snowflake / Looker Export

The data warehouse export plugin streams a daily delta of your fleet data into the warehouse you already use. It's the standard pick for analytics teams, finance teams, and anyone who's outgrown the built-in dashboard.

What gets exported

Every export run includes new and updated rows from the past 24 hours in these tables:

TableDescription
ridesAll ride records — start, end, distance, pricing, tax, refunds
ride_eventsPause, resume, photo, zone-entered, zone-exited events
customersRider accounts (PII-masked unless your install has read:customers.pii)
vehiclesFleet inventory, status history
vehicle_telemetryHourly aggregates of GPS, battery, lock events
zonesZone definitions and rule changes
payoutsPartner payouts with line-item breakdown
plugin_invoicesPlugin charges by install

Each row carries a _exported_at timestamp and _op field (insert, update, delete) so your warehouse can apply changes correctly without full re-loads.

Supported destinations

  • Google BigQuery — direct streaming inserts or batch loads from GCS
  • Snowflake — Snowpipe streaming or batch loads from S3
  • Amazon Redshift — COPY from S3
  • Looker Studio — read from BigQuery
  • Generic S3 / GCS — Parquet files for self-service ingestion

A single install can target one destination. To export to multiple warehouses, install the plugin once per destination — each counts as a separate $199/month subscription.

Setup

You'll need warehouse credentials with write access to a dataset / schema. Levy creates the tables on its first run.

1

Install the plugin

Dashboard → Marketplace → search "BigQuery" → Install.

2

Grant permissions

The export plugin requests read:rides, read:rides.financial, read:customers, read:payouts, read:zones. Financial scope is required to export pricing breakdowns. Decide whether to include read:customers.pii based on whether your warehouse needs rider names/emails.

3

Pick a destination

Select BigQuery, Snowflake, Redshift, or S3/GCS.

4

Provide credentials

  • BigQuery: GCP service account JSON, project ID, dataset name
  • Snowflake: account URL, user, password (or key pair), warehouse, database, schema
  • Redshift: cluster endpoint, database, user, password, S3 bucket for staging
  • S3 / GCS: bucket name, prefix, IAM credentials
5

Configure schedule

Pick the export time (default 02:00 UTC). Daily is the only frequency in v1; hourly is planned.

6

Confirm and install

$199/month. First export runs within an hour of install, including a full backfill of your historical data.

First-run backfill

The first export includes all of your historical data, not just the last 24 hours. For a fleet with 50,000 rides and 5,000 customers, the backfill typically completes in 30-60 minutes. You can watch progress in Settings → Plugins → BigQuery → Status.

After the backfill, daily incremental exports run at the configured time and complete in a few minutes for most fleets.

Schema stability

The export schema follows semver:

  • Patch changes (new optional columns, performance tweaks) deploy silently. Your queries are unaffected.
  • Minor changes (new tables) deploy silently. Your existing queries are unaffected.
  • Major changes (renamed columns, dropped tables) are announced 90 days in advance via a banner on the installed plugins page and an email to subaccount admins. You can stay on the old schema for up to 6 months while migrating queries.

Levy guarantees zero breaking changes within a minor release line.

Sample queries

Once your data lands in the warehouse, common questions:

-- Daily revenue by subaccount
SELECT
  DATE(end_time) AS ride_date,
  SUM(total_cents) / 100.0 AS gross_revenue_usd
FROM rides
WHERE end_time >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY ride_date
ORDER BY ride_date DESC;

-- Vehicles with declining utilization
SELECT
  v.vehicle_number,
  COUNT(r.id) AS rides_last_7d,
  COUNT(r.id) FILTER (WHERE r.end_time &gt;= CURRENT_DATE() - INTERVAL '14 day' AND r.end_time < CURRENT_DATE() - INTERVAL '7 day') AS rides_prior_7d
FROM vehicles v
LEFT JOIN rides r ON r.vehicle_id = v.id
GROUP BY v.vehicle_number
HAVING rides_last_7d < rides_prior_7d * 0.5;

-- Customer LTV cohort
SELECT
  DATE_TRUNC('month', c.created_at) AS cohort_month,
  COUNT(DISTINCT c.id) AS cohort_size,
  SUM(r.total_cents) / 100.0 AS cohort_revenue_usd
FROM customers c
LEFT JOIN rides r ON r.customer_id = c.id
GROUP BY cohort_month
ORDER BY cohort_month DESC;

Pricing

$199/month per destination, billed monthly via Stripe. Levy collects the standard 20% platform fee (this is a first-party plugin, so the fee accrues to Levy directly). No usage-based component — unlimited rows exported.

Free trial: first 30 days are free. You can cancel anytime during the trial with no charge.

Compliance notes

  • All exports use TLS 1.2+ in transit.
  • Credentials are stored encrypted at rest in Supabase Vault.
  • PII export is gated behind the read:customers.pii permission — without it, names, emails, and phones are masked with stable hashes (so you can still join across exports without seeing actual values).
  • Levy retains export job logs for 90 days for debugging.
  • GDPR right-to-erasure: when a rider deletes their account, Levy emits a delete row in the next export so your warehouse can apply the deletion downstream.

Troubleshooting

SymptomFix
Export job failing with "permission denied"Verify warehouse credentials have INSERT, UPDATE, CREATE TABLE on the target schema
Backfill stuckCheck Settings → Plugins → gear → Audit log. Common cause: warehouse quota exceeded.
Rows missingConfirm your install has the right permission scopes for the data type
Schema migration broke a querySchema changes are announced 90 days in advance. Check the banner on Settings → Plugins or recent emails.

What's next