Connect to Google Sheets
Connect your DataHawk BigQuery database directly to Google Sheets for automatically refreshed data. No manual exports needed.
Instead of exporting data manually, you can connect your DataHawk-powered BigQuery database directly to Google Sheets. This gives you automatically refreshed data inside a Google Sheets file. No downloads, no copy-pasting.
Estimated setup time: under 5 minutes.
Prerequisites
Before connecting Google Sheets, make sure you have:
- A DataHawk BigQuery database: Activated in your DataHawk App. If you haven't set one up yet, see Send data to your tool.
- Data sources connected: Your Amazon and/or Walmart accounts are connected and collecting data. If not yet, see Set up data first.
- Your Google email registered on the BigQuery access list: Go to Setup → Destinations → BigQuery → Access in the DataHawk App and add your email. DataHawk uses this to share access to templates.
Set up
Setting up Google Sheets takes three phases: connect your BigQuery data, create an Extract for the full results, then schedule automatic refreshes.
1. Connect your BigQuery database
Open the BigQuery connector
In the navigation menu, click Data → Data Connectors → Connect to BigQuery.
Select the BigQuery project
Choose the BigQuery project that DataHawk created for you.
Select a schema
Pick the schema you want to access (e.g. PRODUCT, SELLER, ADVERTISING).
Pick a table or write a query
Either select a table to load it entirely, or write a SQL query to load partial data.
Connect
Click Connect, then Create an Extract.
Case sensitivity in BigQuery queries: when writing SQL in Google Sheets' BigQuery connector, follow these casing conventions:
- Project name: lowercase (e.g.
sales-datahawk-bigquery) - Schema: UPPERCASE (e.g.
PRODUCT) - Table name: lowercase (e.g.
product_sales_rank) - Surround the full path with backticks:
`project.SCHEMA.table`
2. Create an Extract
After connecting, you'll see only a preview of the data. An Extract loads the full results, up to 25,000 rows, with optional column selection, filters, and sorting.
Open the Extract editor
In your query results, click Extract.
Choose where to insert it
Pick New sheet or Existing sheet.
Select columns and apply filters
In the Extract Editor, choose the columns you need, add filters, and apply sorting.
Apply
Click Apply. The Extract stays in sync with your query. Refresh it to pull fresh data.
3. Schedule automatic refreshes
Keep your file up to date without manual action.
Open Schedule refresh
Click Schedule refresh.
Set the interval
Choose every 1 day (recommended) or every 12 hours.
Pick a time window
Set a preferred time of day for the refresh to run.
Save
Click Save.
No need to refresh more frequently. DataHawk updates data once per day.
SQL query examples
Get Sales Rank (BSR) data
SELECT
OBSERVATION_DATE,
CHANNEL_PRODUCT_ID,
BROWSE_NODE_NAME,
RANK
FROM `your-project-id.PRODUCT.product_sales_rank`
WHERE OBSERVATION_DATE > CURRENT_DATE() - 30
ORDER BY OBSERVATION_DATE DESCGet keyword organic rankings
SELECT
OBSERVATION_DATE,
CHANNEL_PRODUCT_ID,
KEYWORD,
PAGE,
RANK
FROM `your-project-id.SEO.seo_product_organic_rank`
WHERE OBSERVATION_DATE > CURRENT_DATE() - 30
ORDER BY OBSERVATION_DATE DESCThis table can return a very large number of rows if unfiltered. Add enough filters (date range, specific products, or a join to tracked products only) to stay under the 25,000-row Extract limit.
Limit results to tracked products only
SELECT
RANKS.OBSERVATION_DATE,
RANKS.CHANNEL_PRODUCT_ID,
RANKS.KEYWORD,
RANKS.PAGE,
RANKS.RANK
FROM `your-project-id.SEO.seo_product_organic_rank` AS RANKS
INNER JOIN `your-project-id.REFERENTIAL.referential_product_tracked` AS TRACKING
ON RANKS.PRODUCT_KEY = TRACKING.PRODUCT_KEY
WHERE RANKS.OBSERVATION_DATE > CURRENT_DATE() - 30
ORDER BY RANKS.OBSERVATION_DATE DESCInclude product tags for segmentation
SELECT
RANKS.OBSERVATION_DATE,
RANKS.CHANNEL_PRODUCT_ID,
TAGS.TAG_NAME,
RANKS.KEYWORD,
RANKS.PAGE,
RANKS.RANK
FROM `your-project-id.SEO.seo_product_organic_rank` AS RANKS
INNER JOIN `your-project-id.REFERENTIAL.referential_product_tracked` AS TRACKING
ON RANKS.PRODUCT_KEY = TRACKING.PRODUCT_KEY
LEFT JOIN `your-project-id.REFERENTIAL.referential_product_tag` AS TAGS
ON TRACKING.PRODUCT_KEY = TAGS.PRODUCT_KEY
WHERE RANKS.OBSERVATION_DATE > CURRENT_DATE() - 30
ORDER BY RANKS.OBSERVATION_DATE DESCLimitations
Google Sheets is not designed for large datasets. Keep the following limits in mind:
| Limit | Value |
|---|---|
| Maximum Extract size | 25,000 rows or 10 MB |
| Maximum Pivot Table rows | 30,000 |
| Maximum total cells in a spreadsheet | 10 million |
The best way to stay within these limits is to use filters in your queries; date ranges, specific ASINs, or joins to tracked products only. Aim to keep your working dataset under 25,000 rows.
For larger datasets, consider using BigQuery directly with Looker Studio, or Snowflake with Power BI.
Where to go next
Live demo spreadsheet
View a read-only example of DataHawk data inside a Google Sheets file.
BigQuery destination
Set up the BigQuery database that powers your Google Sheets connection.
Connect to Looker Studio
Build live dashboards on the same BigQuery data with Google's free reporting tool.
Google's BigQuery + Sheets docs
Official Google documentation for the BigQuery data connector in Sheets.