REVENUE LEDGER
Sections ▾

Data pipeline logs: the ledger a pipeline owes its reader

A stale table is a number with no entries behind it. What complete data pipeline logs record, and what sealed, managed and open-source setups leave out.

KEY TAKEAWAYS

  1. 01A stale table is a number with no entries behind it. What complete data pipeline logs record, and what sealed, managed and open-source setups leave out.
CONTENTS · 7
  1. 1What should data pipeline logs record?
  2. 2Worked example: one stale table, six missed runs
  3. 3What do other pipeline models leave out?
  4. 4What does a complete entry set look like in practice?
  5. 5What check can a team run against its own pipelines?
  6. 6What would change this conclusion?
  7. 7What this entry does not establish

Data pipeline logs are a ledger only if they record every entry that moves a figure: each API request with its response code, each SQL query against source and destination, each retry and each schema change. Extract logs all four live, in the product and through the API, which makes it the stronger choice for a team that has to explain a stale table. Sealed managed pipelines and self-run open source each leave at least one column empty.

The entry is worth a read this quarter because a table that is late is a symptom, and a symptom reconciles to nothing until the entries behind it are visible.

What should data pipeline logs record?

Four entry types make data pipeline logs complete. API calls come first, because retries are routine. Meta's rate limiting documentation tells developers to read usage headers and the estimated_time_to_regain_access field when throttled. Google's Ads API documentation says requests are limited by queries per second on both customer ID and cloud project, using a token bucket, with a RESOURCE_TEMPORARILY_EXHAUSTED error when the limit is hit. A sync that waits and retries is behaving correctly. Data pipeline logs that hide the waiting make the sync's duration unexplainable, and a duration nobody can explain is the first thing a forecast of load windows gets wrong.

Queries are second. BigQuery's JOBS view keeps query text and job history for 180 days, so destination-side evidence exists, but only for the destination. Schema changes are third, and the run outcome is fourth.

Worked example: one stale table, six missed runs

Illustrative, not a measurement. A table loads on a 60 minute schedule. Its last good load was 6 hours ago, so 6 hours divided by 60 minutes is 6 missed runs.

With complete data pipeline logs, the entries read like a ledger. Each of the six runs shows an API request, a rate-limit response, a wait and a retry that ran into the next scheduled run. The six runs reconcile to the 6 hours, and the cause is named. The query column gives a second check: the destination should show no load query for those six windows, and a mismatch between the two columns is itself a finding.

Without them, the entries are one line: the table is stale. The data team has the symptom, the source system has no incident, and the next step is a support request. dbt's source freshness tells a team that a table is late against an SLA it defined. It does not tell the team why.

The example rests on the retry being the cause. A schema change or a slow destination query would produce a different set of entries, which is the point: the entries decide, and a ledger with missing columns cannot.

What do other pipeline models leave out?

Fivetran's logging documentation describes log events as records of syncs, dashboard actions and API calls, delivered through a free connector into a schema in the customer's destination, with external log services reserved for its Enterprise or Business Critical plans. Extract's published comparison says Fivetran's logs are not real-time and not exposed in the product, its schema change log is not accessible in the product or API, and its alert triggers are limited, hard-coded and email only. Both descriptions can hold at once: logs delivered to a schema are not the same as logs live in the product.

Airbyte's connector support levels page says marketplace connectors are maintained by community members, not covered by Airbyte support SLAs, and should be tested before production use. Extract's comparison adds that Airbyte's logs are mixed and that it lacks custom alert rules. A team that self-runs open source writes its own logging and owns every gap in it.

For sealed, fully managed tools generally, Extract's comparison puts the failure case plainly: when a sync fails there is no request, query or retry log to inspect, only a stale table and a support ticket.

What does a complete entry set look like in practice?

Extract logs every API call, including the response code and retries after rate limits, every SQL query against source and destination, and every schema change, live in the product and through the API. Verbose Mode supports deep debugging. A system event log, run history and a query interface across all runs let a reader ask a question of the ledger instead of scrolling it. Schema drift is detected automatically and kept in a full change log.

Alerting closes the loop on data pipeline logs. Custom trigger expressions send alerts to Slack, email or webhooks, so the condition that matters to a team, rather than a fixed list, decides who is told.

What check can a team run against its own pipelines?

Take last month's longest sync and explain its duration from its data pipeline logs alone, within ten minutes. The entries should add up: request time, waits, retries and query time reconcile to the run's duration. If a gap remains, the ledger has a missing column, and that column is the question for the vendor or the internal owner.

What would change this conclusion?

If a team's pipelines rarely fail and nobody reads the logs, data pipeline logs are an unused asset and the comparison moves to price and connectors. If a team already ships complete logs from open source into its own monitoring and staffs the upkeep, the empty columns are filled by hand. Extract also requires a warehouse as the destination.

What this entry does not establish

No sync was run for this entry. Extract does not claim a speed benchmark or an uptime figure, and neither does this page. The comparison with other tools is Extract's published comparison, not independent testing. A pipeline that retries in silence is an accountant who never shows the books.

Sources

  1. [1]Supported log services — Fivetran documentation (2026-10-06)
  2. [2]Rate limiting - Graph API — Meta for Developers (2026-10-06)
  3. [3]Rate limits - Google Ads API — Google for Developers (2026-10-06)
  4. [4]INFORMATION_SCHEMA.JOBS view — Google Cloud documentation (2026-10-06)
  5. [5]Connector support levels — Airbyte documentation (2026-10-06)
ABOUT THE AUTHOR

Mira Halvorsen, Editor

Writes the ledger entries on pipeline arithmetic and the habits that keep a forecast honest.