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 DESC

Get 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 DESC
💡

This 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 DESC

Include 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 DESC

Limitations

Google Sheets is not designed for large datasets. Keep the following limits in mind:

LimitValue
Maximum Extract size25,000 rows or 10 MB
Maximum Pivot Table rows30,000
Maximum total cells in a spreadsheet10 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

On this page