Fastero

Stop Refreshing Your BigQuery Dashboards - We Built a Better Way!

Fastero Dev Team

By Fastero Dev Team on 2025-06-17

#analytics#bigquery#real-time#data#triggers#cost-optimization#automation
Stop Refreshing Your BigQuery Dashboards - We Built a Better Way!

The Traditional Approach Is Expensive (And Frustrating!)

A few months ago, we migrated everything to BigQuery and set up our first dashboards.
They looked great. The team was proud.

Then our CEO saw the bill.
$10,437 — in one month. Just for dashboard refreshes.

We had scheduled those dashboards to refresh every hour. But most of the time, the data hadn't even changed.

This is the dirty secret of "scheduled dashboards" - they're wasteful by design. They run whether or not there's new data, burning compute resources and budget with each refresh.

And let's be honest - we're all still clicking that refresh button anyway, aren't we?

A Better Way: Monitor Table Updates

After experimenting with different approaches, we discovered something powerful:

BigQuery keeps track of when each table was last modified.

Instead of repeatedly running expensive queries against your entire dataset, you can simply check when the table was last updated. Then refresh your dashboards only when necessary.

We call this event-driven refresh logic — and it's now core to how Fastero operates.

Here's how we do it at Fastero:

  • We periodically poll a tiny metadata query to check when the table was last modified
  • We compare that timestamp against when we last updated the dashboard
  • We only trigger a refresh when the table has new data
  • Your dashboard updates automatically within seconds of data changes

The difference is dramatic:

  • Traditional approach: Run a 500GB query scan every hour = 12TB scanned daily
  • Table monitoring approach: Run a few KB metadata query every minute + full query only when data changes = Often less than 1TB scanned daily

How to Implement It Yourself

Here's a simplified implementation using Node.js and the Google Cloud BigQuery client library:

const { BigQuery } = require('@google-cloud/bigquery')

// Create BigQuery client with your credentials
const bigqueryClient = new BigQuery({
  keyFilename: '/path/to/your/service-account-key.json',
})

// Configuration
const datasetId = 'your_dataset'
const tableId = 'your_table'
const checkIntervalSeconds = 60 // Check every minute
let lastKnownModificationTime = null

// Function to check for table updates
async function checkForTableUpdates() {
  try {
    // This query is extremely lightweight - only fetches metadata, not actual data
    const query = `SELECT last_modified_time FROM \`${datasetId}.__TABLES__\` WHERE table_id = "${tableId}"`

    const [rows] = await bigqueryClient.query(query)

    if (rows.length === 0) {
      console.error(`No metadata found for table "${tableId}"`)
      return
    }

    const tableMetadata = rows[0]
    const lastModifiedTime = new Date(
      parseInt(tableMetadata.last_modified_time)
    )

    // First run or table has been updated
    if (
      !lastKnownModificationTime ||
      lastModifiedTime > lastKnownModificationTime
    ) {
      console.log(
        `Table "${tableId}" was updated at ${lastModifiedTime.toISOString()}`
      )

      // Update our reference time
      lastKnownModificationTime = lastModifiedTime

      // Now trigger whatever you need - dashboard refresh, notification, etc.
      refreshDashboard()
    } else {
      console.log('No updates detected, dashboard remains current')
    }
  } catch (error) {
    console.error(`Error checking for updates: ${error.message}`)
  }
}

function refreshDashboard() {
  // This is where you'd trigger your dashboard to update
  // Maybe send a websocket notification to connected clients
  // Or run your actual query and update a cache
  console.log('Dashboard refreshed with latest data!')
}

// Start monitoring for changes
setInterval(checkForTableUpdates, checkIntervalSeconds * 1000)

// Initial check
checkForTableUpdates()

Beyond Just Dashboards: Background Monitoring & Workflows

We're incredibly excited to announce that Fastero is so much more than just real-time dashboards!

Our background monitoring system continues working even when you're offline, constantly watching for the changes that matter to your business. No more manual refreshes, no more stale data – just instant insights when and where you need them.

With Fastero, you can:

  • Configure any table to track for changes - whether it's your revenue data, user signups, or product metrics
  • Set sophisticated conditions - only trigger actions during business hours, when metrics cross thresholds, or based on custom logic
  • Take automated actions - send email alerts, post to Slack, run queries, or trigger custom workflows
  • Combine multiple triggers - create powerful data workflows that respond to real-world events

All of this happens automatically in the background, 24/7, without requiring you to be logged in or actively monitoring anything.

The Real Power: Connecting Data Changes to Business Actions

Here's what makes us truly excited about this release:

With Fastero, your data isn't just displayed – it's actionable. When an important metric changes, things happen automatically:

  • The sales team gets notified when a customer's usage approaches their limit
  • Marketing receives an alert when campaign performance drops below target
  • Executives see real-time updates on KPIs without having to request reports
  • Your customers receive automated updates based on their own data changes

And you never have to manually refresh or run a report again.

Why We Built This

As data teams ourselves, we were tired of:

  • Clicking refresh buttons all day
  • Setting up expensive scheduled queries
  • Building custom monitoring scripts
  • Missing important changes between scheduled refreshes

So we built the solution we wanted for ourselves. Lightweight, real-time, and working 24/7 behind the scenes.

Join Us In The Real-Time Revolution

We believe that data tools should be as real-time and responsive as the rest of our digital lives.

By monitoring table changes instead of blindly recomputing queries, we've achieved real-time insights while cutting our BigQuery costs by over 70%.

No more refresh buttons. No more scheduled waste. Just the updates you need, when you need them.

If you're also tired of:

  • Refresh buttons
  • Queries that run when no data has changed
  • Overpaying for unused compute
  • Or dashboards that feel stale before you even open them

Then give Fastero a try.

👉 Start your free 30-day trial — no credit card required, usage limits apply.

Let us handle the listening. You focus on the decisions that matter.

— The Fastero Team

Share this post