The Scenario
It's Thursday afternoon and the finance team has been waiting since Tuesday for last month's revenue breakdown. The request was simple enough when it came in: region, product SKU, total ARR, account count, April 2026, top 1,000 rows by ARR. You know exactly which Snowflake table it lives in. You know the query.
What you don't have is a clean path from that knowledge to a populated Google Sheet.
The bad version:
- Open SnowSight, write the SELECT, wait for the warehouse to resume, export the result as CSV
- Open the CSV in a spreadsheet, copy the four columns you actually need, paste into the finance tab, clean up the headers that came through with underscores
- Send it over. Receive a reply twenty minutes later: "Can you add a filter for North America only and resort by account count?" Start over.
You're not paid to be a CSV shuttle. Finance needs this to be a living, queryable thing — not a snapshot you have to regenerate from scratch every time someone changes the grouping.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Google Sheet. It reads the sheet, connects to Snowflake through its built-in integration, runs your SQL, and writes the result set directly into the cells you point it at — column headers included, formatting intact.
Open the finance reporting tab, then paste this into the SheetXAI sidebar:
Run this SELECT on my Snowflake warehouse (database: ANALYTICS, schema: REVENUE, warehouse: COMPUTE_WH): SELECT region, product_sku, SUM(arr) AS total_arr, COUNT(*) AS account_count FROM monthly_revenue WHERE billing_month = '2026-04' GROUP BY 1,2 ORDER BY 3 DESC LIMIT 1000 — paste the results into this sheet starting at A2 with column headers in A1
What You Get
- Column headers in row 1: region, product_sku, total_arr, account_count
- Up to 1,000 result rows written into A2 onward, sorted by total_arr descending
- Each cell typed correctly — numbers as numbers, strings as strings, no cleanup pass needed
- If the warehouse is suspended, SheetXAI surfaces the error in the sidebar rather than silently writing nothing
What If the Data Is Not Quite Ready
The column names in Snowflake use underscores but the sheet needs title case
Run this SELECT on Snowflake (DB: ANALYTICS, schema: REVENUE, warehouse: COMPUTE_WH): SELECT region AS Region, product_sku AS "Product SKU", SUM(arr) AS "Total ARR", COUNT(*) AS "Account Count" FROM monthly_revenue WHERE billing_month = '2026-04' GROUP BY 1,2 ORDER BY 3 DESC LIMIT 1000 — write results to this sheet starting at A2 with headers in A1
The query needs a date range rather than a fixed month value
Query Snowflake ANALYTICS.REVENUE.monthly_revenue for all rows where billing_month is between '2026-01' and '2026-04' inclusive, group by region and product_sku, sum arr as total_arr and count rows as account_count, write the result into this sheet starting at A2 with headers in A1, sorted by total_arr descending
The result needs to join two tables — monthly_revenue and a product lookup
Run this on Snowflake (DB: ANALYTICS, schema: REVENUE, warehouse: COMPUTE_WH): SELECT r.region, p.product_name, r.product_sku, SUM(r.arr) AS total_arr, COUNT(*) AS account_count FROM monthly_revenue r LEFT JOIN product_catalog p ON r.product_sku = p.sku WHERE r.billing_month = '2026-04' GROUP BY 1,2,3 ORDER BY 4 DESC — paste into this sheet starting at A2 with headers in A1
Clean up nulls, enforce a minimum ARR threshold, and write the final result
Query Snowflake ANALYTICS.REVENUE.monthly_revenue for April 2026, exclude any rows where arr is null or arr < 500, group by region and product_sku, sum arr as total_arr and count rows as account_count, sort descending by total_arr, write into this sheet starting at A2 with column headers region, product_sku, total_arr, account_count in A1
The pattern: filtering, null handling, and sorting are part of the same prompt — not a second pass after you've already got the data in the sheet.
Try It
Get the 7-day free trial of SheetXAI and open any Google Sheet where you're waiting on a Snowflake query result. Ask it to run your SELECT and write the results into the tab — including joins, filters, and column renaming. For related tasks, see how to build a full Snowflake data catalog or run a schema table inventory — or go back to the Snowflake integration overview.
