
Agentic Salesforce to Snowflake ELT: From One Prompt to a Governed Pipeline
How Bruin CLI, Bruin MCP, Bruin Cloud, and agent skills can build and maintain a Salesforce to Snowflake ELT pipeline across bronze, silver, and gold layers.
Use the official Firebase BigQuery export flow, then fix the settings most teams miss: region, streaming export, advertising identifiers, and the 60-day table expiry.

Sabri Karagonen
Data & Product
Lately, I keep hearing the same two questions from app teams: where are the official Firebase Analytics BigQuery export docs, and what should we configure after the link is live? The official Firebase docs cover the click path. This post is the practical companion: what to turn on, what to double-check, and what can hurt you two months later if you miss it.
Use the official Firebase BigQuery export documentation to link Firebase to BigQuery from the Firebase console. After that, check four things before you call the export done:
First, Firebase gets your app events into BigQuery. Second, BigQuery gives your data team the raw event tables they need for retention, funnels, activation, LTV, attribution, and experiment analysis.
Here are the settings I care about before I trust the export.
I won't copy the official Firebase BigQuery export documentation step by step. Use the Firebase guide for the setup flow, then use the notes below to make the export useful for actual analysis:
- Go to the Integrations page in the Firebase console.
- In the BigQuery card, click Link.
- Follow the on-screen instructions to enable BigQuery.
With those initial steps covered, let's now explore additional settings to optimize your data export process:
With data in BigQuery, the real work starts. You can join Firebase events with subscriptions, payments, campaigns, support tickets, feature flags, and warehouse models. That is where Firebase stops being a product analytics screen and becomes part of your company data model.
The official setup guide is here: Firebase BigQuery export documentation. Use it for the console steps. Use this post for the settings and retention checks that are easy to miss.
Yes. Firebase creates event tables in BigQuery, usually with daily events_YYYYMMDD tables and, when streaming export is enabled, intraday tables. That raw event-level shape is what makes deeper SQL analysis possible.
Enable it when product, marketing, or data teams need same-day reporting. If you only review yesterday's numbers, daily export can be enough. I usually prefer streaming for active apps because debugging delayed data is not fun.
Check the BigQuery region, streaming export, advertising identifiers, and table expiration. Those four decisions decide whether the export is compliant, useful for attribution, fresh enough for the business, and safe for long-term analysis.
One gotcha that catches a lot of people off guard: by default, the analytics_xxxxxxxxx dataset that Firebase creates in BigQuery comes with a 60-day table expiration set on it. That means any daily events_YYYYMMDD table older than 60 days will be automatically deleted, and you'll lose your historical data before you even realize it.
If you're planning to do any serious long-term analysis (cohort retention, year-over-year comparisons, LTV modeling, etc.), make sure to remove this expiry as soon as you set up the export. You can do it from the BigQuery console (open the dataset → Edit details → uncheck Enable table expiration), or just run this:
-- Replace `analytics_xxxxxxxxx` with your dataset name
ALTER SCHEMA `analytics_xxxxxxxxx`
SET OPTIONS (default_table_expiration_days = NULL);
Do this on day one. Otherwise you'll be kicking yourself two months in when the older tables start disappearing.
One important catch: changing the dataset's default expiry only affects new tables created from that point on. Every existing daily shard (events_YYYYMMDD, events_intraday_YYYYMMDD) keeps the 60-day expiration it was born with. You need to clear it on each of them individually.
Rather than clicking through every table, run this script in the BigQuery console. It loops through all the sharded tables in the dataset and clears the expiration:
-- Replace `analytics_xxxxxxxxx` with your dataset name
FOR record IN (
SELECT table_name
FROM `analytics_xxxxxxxxx.INFORMATION_SCHEMA.TABLES`
WHERE table_name LIKE 'events_%'
OR table_name LIKE 'events_intraday_%'
) DO
EXECUTE IMMEDIATE FORMAT(
"ALTER TABLE `analytics_xxxxxxxxx.%s` SET OPTIONS (expiration_timestamp = NULL)",
record.table_name
);
END FOR;
After it finishes, your historical data is safe. No more silent deletions.

How Bruin CLI, Bruin MCP, Bruin Cloud, and agent skills can build and maintain a Salesforce to Snowflake ELT pipeline across bronze, silver, and gold layers.

Most AI data analysts live in Slack or a browser. Bruin runs in WhatsApp too. Here is why field, sales, and ops teams prefer asking their data questions there, what it takes to make it actually work, and how to roll it out safely.
Can you just use ChatGPT, Claude, or a coding agent like Codex to analyze your company data? Here is the honest difference between a general AI model and a purpose-built AI data analyst, why a model alone is not enough, and what it takes to get trustworthy answers from live company data.