Google Sheets has no Power Query. This is the equivalent for database data.
Sheets’ own QUERY() only reshapes cells already in the spreadsheet, and Connected Sheets reaches BigQuery alone. To pull live rows from SQL Server, PostgreSQL, MySQL or any other database into a tab and refresh them on a click, you install a small Agent next to the database and use the Query Streams add-on. No Apps Script, no exports, no credentials in the sheet.
The short answer
No, Google Sheets does not have Power Query, and Google has not announced one. What it has instead falls into three buckets, and which one you need depends on where the data is:
| Your data is in… | What Google gives you | What it does |
|---|---|---|
| Cells in the same spreadsheet | QUERY(data, query) | Filters, groups, pivots and sorts a range with a SQL-like language. It cannot open a connection to anything outside the sheet. |
| BigQuery | Connected Sheets | Live pivots and charts over BigQuery tables. BigQuery only, and you need a Google Cloud project with billing. |
| A database of your own: SQL Server, PostgreSQL, MySQL, Oracle… | Nothing built in | Your options are Apps Script’s JDBC service (code, quotas, a firewall allowlist — see the honest version), an importer add-on that copies rows on a schedule, or a live connector like the one below. |
The rest of this page is the third row: how to get live database rows into Google Sheets with a Run Query button, what it costs, and where Excel’s Power Query is still the better tool.
What you’ll end up with
A tab that holds the result of a SQL query against your database, and a side panel with a Run Query button that pulls the latest rows whenever you want them. Like this:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | customer_id | first_name | last_name | country | total |
| 2 | 1042 | Maria | Alvarez | USA | 1,284.50 |
| 3 | 1043 | Daniel | Okafor | USA | 612.00 |
| 4 | 1047 | Priya | Nair | USA | 2,090.75 |
| 5 | 1051 | Thomas | Berg | USA | 338.20 |
| 6 | 1056 | Lucía | Ferreira | USA | 1,455.00 |
| 7 | 1060 | Kenji | Sato | USA | 874.10 |
| 8 |
Live from your databaseThe query runs on a computer that can already reach your database, not in Google’s cloud and not in the sheet. A small program called the Agent sits there, makes one outbound connection to Query Streams, runs the SQL and streams back only the rows. The add-on in Sheets asks for those rows and lays them out under your headers. The database password stays on the Agent; nobody who opens the sheet ever sees it.
What you’ll need
The Agent on a computer that can reach the server
A small program that runs in the background and queries the database when Google Sheets asks. Often the database server itself, or any always-on computer on the same network.
Your own connection details
The server name, the database name, and a username and password that can read it. If someone else manages the database, this is the bit to ask them for.
Which computer gets the Agent? Any always-on machine that can already reach your own database, often the database server itself or a computer on the same network. Google Sheets can be anywhere; it runs in your browser.
Set it up in four steps
-
Create your account
Go to my.querystreams.com and sign up with the Google account you use for Sheets. Pick the Free plan. It is a real plan, not a trial, and it covers two connections and ad-hoc SQL from Google Sheets.
Install the Agent on a computer that can reach the server



Sign in, open Download, and install the Agent on a machine that can already reach your own database: often the database server itself, or any always-on computer on the same network. It takes a minute and starts on its own from then on.
Why a small program instead of a driver? The Agent is one install for Windows, Mac or Linux (about 85 MB on Windows, a little over 100 MB on Mac and Linux) that runs quietly in the background. It makes one outbound, encrypted connection to Query Streams, the same way a browser does, so you open no firewall port and set up no VPN. Your database stays on your network, and the rows travel to wherever you are, across the internet if need be. The only thing on your side is the add-on.
The Download page shows Your Access Key. Paste it into the Agent when it asks, and wait for the badge to read Connected to Query Streams. That is the only thing you do on the Agent itself.
-
Add your database connection
In the portal open Data → Data Agents, click Add connector on your Agent, choose the database type and fill in the host, port, database and a read-only login. Click Test connection; when it reads Connected, pick the databases to include under Schema capture and click Save.
Nothing to open on the firewall. The Agent connects to your database from inside your network and to Query Streams outbound over HTTPS. There is no Google address range to allow and nothing to keep in step with.
-
Run the SQL from Google Sheets
Open your spreadsheet and install the Query Streams add-on from the Google Workspace Marketplace if you have not yet. It recognises the Google account you are already signed in with; there is no separate login. Open it from the icon in the side panel on the right (it is also under Extensions), click Query Streamer, pick your connection and paste a query:
Example · SQLSELECT customer_id, name, city FROM customers ORDER BY name LIMIT 1000;
Choose the tab under Destination Sheet and click Run Query. The rows land under your column headers. Click Run Query again whenever you want the latest data. To have the tab refresh on its own, save the query in Query Builder and set up an Automation, every five minutes to weekly.
That’s it. Your data is in the sheet and stays current with one click. Nothing left your network except the rows you asked for.
Power Query vs this, only what holds up
Excel’s Power Query is two things in one: a connector to hundreds of sources and an editor with several hundred transformations that you can replay. Query Streams is the first half done differently, and deliberately not the second. Side by side:
| Excel Power Query | Query Streams in Google Sheets | |
|---|---|---|
| What you write | Clicks in the editor, recorded as M | The SQL, or nothing if a colleague shared the query |
| Where the query runs | On your computer, in Excel’s engine; parts that fold run on the source | On the Agent, next to the database; the whole query, always |
| Reshaping data | Its strength: merge, append, pivot, unpivot, hundreds more | Whatever SQL can express; do the rest in the sheet |
| Combining sources | Merge or Append steps; each source is loaded into the workbook first; privacy levels decide what may fold together | One federated SQL statement across two or more connections, each queried read-only by its own Agent and joined for you; on every plan |
| Refresh | Manual, on open, or every N minutes while the workbook is open | Run Query when you want it, or an Automation on a schedule with nothing open |
| Where the database login lives | In the workbook’s connection, on each user’s computer | On the Agent only; sheet users never see it |
| Giving a colleague the data | Send the workbook; they need the same drivers and access | Share the query’s results; they click Run Query |
| Works in Google Sheets | No. Excel for Windows and Mac only | Yes, any browser |
Combining sources: Power Query’s strongest card, and the answer to it
The one thing Power Query users miss most in Sheets is merging two sources. Query Streams does that with a federated query: one SQL statement over two or more connections. In the Query Builder choose New Query → Federated query, pick the connections (each gets an alias), and name tables as alias.schema.table. The connections can be different engines — SQL Server, PostgreSQL, MySQL, MariaDB, Oracle, Snowflake, BigQuery and more SQL Server, PostgreSQL, MySQL, MariaDB, Oracle, Snowflake, BigQuery and more — or an API connector or a folder of files, each behind its own Agent. Query Streams sends each source only its piece, in that engine’s dialect, read-only, and joins the returned rows itself. The Plan tab shows exactly what each database will be asked before you run.
SELECT o.order_id, o.total, c.name, c.city FROM shop.public.orders AS o JOIN crm.dbo.customers AS c ON c.customer_id = o.customer_id WHERE o.ordered_at >= '2026-09-01' ORDER BY o.total DESC;
Save it once and it runs unchanged from the Sheets add-on, Excel, the REST API, Claude via MCP and scheduled syncs. It is on every plan, including Free, which joins two connections and returns up to 250 rows. Today a federated statement is a single SELECT with joins, filters, grouping and window functions; CTEs, sub-queries and UNION are not supported yet. How federated queries work.
When Power Query is still the right tool
If your work is shaping data — joining five spreadsheets, unpivoting a report, cleaning a column of dates — and it lives in Excel, keep Power Query. Nothing here replaces the editor. If you are on Google Sheets, or the job is “get the current rows from the database into a tab that other people refresh,” that is the job this page is about.
What the plans allow
Ad-hoc SQL from the Google Sheets add-on is on every plan, including Free. Free includes two connections and a monthly data allowance of 5 MB of results, enough for a table like the one above refreshed many times a day. Running queries you saved in Query Builder from the add-on starts at Personal Core; queries a colleague shares with you run on every plan. Compare the plans.
Free is a plan you keep. It is not a trial that expires. See exactly what it includes on the pricing page.
Questions people ask
Does Google Sheets have Power Query?
No. Power Query is part of Excel for Windows and Excel for Mac, and of Power BI. Google Sheets has QUERY() for data already in the sheet and Connected Sheets for BigQuery. For any other database you add something: Apps Script code, an importer add-on, or a live connector such as Query Streams.
Is there an official Power Query equivalent for Google Sheets?
Google’s official database connector is Connected Sheets, and it connects to BigQuery only. There is no official equivalent for SQL Server, PostgreSQL, MySQL or Oracle.
Can I run my existing Power Query queries in Google Sheets?
Not as they are. M queries only run inside Excel or Power BI. The part that fetched the data becomes a SQL query in Query Streams; the reshaping steps either move into that SQL or into the sheet.
Does the tab refresh by itself?
Click Run Query and it refreshes. For hands-off refresh, save the query and create an Automation that writes to the tab on a schedule, from every five minutes to weekly, with the spreadsheet closed.
Where does the SQL run, and can it change my data?
On the Agent, against your database, read-only: the Agent refuses anything that is not a SELECT. The sheet only ever receives rows.
Does your own database have to be on the computer I use Sheets on?
No. Only the Agent has to be where your own database is. Google Sheets runs in your browser on any device. Open the add-on with the same Google account and your connections are there.
Does my data get copied to Query Streams?
No. The Agent runs the query where your data is and sends only the rows it returns. Nothing is synced or stored in between.
Does the Free plan really cover this?
Yes. Free is a plan you keep, not a trial that expires. See exactly what it includes on the pricing page.
Does the sheet refresh by itself?
Click Run Query again whenever you want the latest rows. For a sheet that refreshes on a schedule without anyone pressing anything, set up an Automation in the Query Streams portal (Streams → Automation). It is on every plan.
Related guides
Setup trouble?
- Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?

