Estuary

What is Time Series Data? A Complete Guide for Data Engineers

Learn what time series data is, its key components, common challenges, and how to build real time pipelines. Discover best practices and a practical example with Estuary.

What is Time Series Data
Share this article

You are debugging a latency spike from three hours ago. The dashboard shows the incident, but the underlying table has gaps where sensors dropped out, two readings landed out of order, and the rollup job that was supposed to downsample yesterday's data never ran.

Every one of those is a data engineering problem. That is what working with time series data actually looks like.

Time series data powers monitoring, forecasting, IoT telemetry, and most of the AI systems that need fresh data rather than last quarter's snapshot. It also breaks in ways ordinary tabular data does not, because order matters, arrival time and event time are different things, and volume compounds every second.

This guide covers what time series data is, how it differs from other data shapes, how to store and query it, and how to build pipelines that stay reliable as volume grows.

Key Takeaways

  • Time series data is a sequence of observations indexed by time, where the order of the records carries as much information as the values.

  • It differs from cross-sectional data (many entities, one moment) and panel data (many entities, many moments).

  • Four components explain most of what you see in a series: trend, seasonality, cyclicity, and noise.

  • The hard engineering problems are late and out-of-order events, irregular intervals, missing readings, and cardinality growth.

  • Storage choice follows query pattern. Time series databases, columnar OLAP stores, and warehouses each win in different situations.

  • A pipeline is only as fresh as its slowest stage, so ingestion latency caps how current every dashboard and alert downstream can be.

What Is Time Series Data?

Time series data is a sequence of observations recorded in chronological order, where each record is tied to a timestamp. Time is the primary index, so the order of the records is part of the information, not just metadata about it.

Those observations may arrive at fixed intervals, such as a CPU metric scraped every 15 seconds, or at irregular intervals driven by events, such as a trade executing or a door sensor tripping. Both are time series. The difference in spacing changes how you store and query them, which is why it matters more to engineers than to analysts.

Why Time Series Data Matters to Data Engineers

Nearly every system built on real-time data runs on a time series underneath. Server metrics, stock prices, patient vitals, energy consumption, and shipment locations are all the same shape: a value, a timestamp, and a set of identifying labels.

Your job is to move those readings from where they are produced to where they are queried, without losing any, reordering them, or letting them arrive too late to be useful. That sounds simple until volume reaches millions of points per second and the readings come from devices on unreliable networks.

What Makes It Different in Engineering Workflows

Three properties drive most design decisions:

  • Order carries meaning. A reordered set of rows in a customer table is still correct. A reordered time series is a different series.
  • Writes are append-heavy and reads are range-heavy. You almost never update a past reading, and you almost always query a window of them.
  • Value decays with age. Last minute's data is worth more than last year's, which is why retention policies and rollups belong in the initial design.

Time Series vs. Cross-Sectional vs. Panel Data

These three shapes get confused constantly, and picking the wrong one leads to analysis that looks fine and is quietly wrong.

ShapeWhat it capturesExamplePrimary index
Time seriesOne entity measured repeatedly over timeHourly temperature from a single sensor for a yearTime
Cross-sectionalMany entities measured at one momentTemperature from every sensor in a plant at 09:00 todayEntity
Panel (longitudinal)Many entities measured repeatedly over timeHourly temperature from every sensor in a plant for a yearEntity and time

The practical consequence: forecasting, trend analysis, and anomaly detection all need the time dimension, so they need time series or panel data. A cross-sectional snapshot can tell you which sensor is hottest right now, but it cannot tell you whether that sensor has been climbing for a week.

Most production systems collect panel data and then slice it into individual time series at query time.

Types of Time Series Data

Four distinctions come up often enough to be worth naming.

  • Metric-based vs. event-based: Metric series are sampled on a schedule, like a gauge read every second. Event series are emitted when something happens, like a click or a transaction, which is the pattern behind most event-driven architectures. Metric series have predictable volume; event series spike.
  • Continuous vs. discrete: Continuous series measure something that always has a value, such as temperature. Discrete series count occurrences within a bucket, such as orders per minute.
  • Univariate vs. multivariate: A univariate series tracks one variable over time. A multivariate series tracks several that move together, such as temperature, vibration, and pressure from the same machine. Multivariate series are where correlation and joint anomaly detection become possible.
  • Stationary vs. non-stationary: A stationary series has statistical properties (mean, variance) that stay stable over time. Most real-world series are non-stationary because they trend or drift. Stationarity matters because several classical models assume it, so you either transform the series or pick a model that does not require it.

Components of Time Series Data

A line chart illustrating a time series with an upward trend, repeating seasonal fluctuations, and random noise over time
Example of a time series showing an upward trend, recurring seasonal patterns, and short-term noise - Image Source

Decomposing a series into its parts is how you tell a real signal from an artifact.

Trend

The long-run direction of the series, up, down, or flat. Monthly energy consumption creeping upward over three years is a trend. Trends drive capacity planning, and they are the first thing to remove when you need a stationary series.

Seasonality

Repeating patterns on a fixed period: hourly, daily, weekly, or annual. Retail sales climb every December. Web traffic dips every weekend. Seasonal effects are predictable, which means a model that ignores them will read every December as an anomaly.

Cyclicity

Repeating patterns without a fixed period, usually driven by broader conditions rather than the calendar. Economic expansion and contraction is the classic case. Cycles are easy to confuse with seasonality, and the distinction matters: you can schedule around seasonality, but you can only detect cycles after the fact.

Noise and Outliers

Random variation left over after trend, seasonality, and cycles are accounted for. Some of it comes from genuine randomness and some from measurement error. Outliers are the extreme cases, and deciding whether a given outlier is a broken sensor or a real event is one of the more consequential judgment calls in a time series pipeline.

Structural Breaks

A permanent shift in the underlying behavior of the series, caused by a firmware update, a pricing change, a new data center, or a policy change. Structural breaks invalidate models trained on the earlier regime, which is why detecting them matters more than smoothing them away.

Examples of Time Series Data

DomainWhat is measuredTypical frequencyWhat it drives
InfrastructureCPU, memory, request latency, error rate1 to 60 secondsAlerting, autoscaling, incident response
Industrial IoTTelemetry: temperature, vibration, pressure100ms to 1 secondPredictive maintenance, safety shutdowns
FinanceTrade prices, order book depth, volumeSub-secondPricing, risk, algorithmic execution
Product analyticsSessions, conversions, feature usage1 minute to 1 hourExperimentation, funnel analysis
EnergyMeter readings, grid load, generation1 to 15 minutesDemand forecasting, load balancing
HealthcareHeart rate, blood oxygen, glucose1 second to 5 minutesPatient monitoring, early warning scores
LogisticsGPS position, temperature in transit10 seconds to 5 minutesETA prediction, cold-chain compliance

The pattern across all of them: high write volume, range queries over recent windows, and a steep drop in the value of any individual reading once it ages.

Challenges in Working With Time Series Data

Late and Out-of-Order Events

Event time is when something happened. Processing time is when your system saw it. On mobile networks, in IoT fleets, and across any queue with retries, those two diverge, and readings arrive out of sequence or minutes late. Systems that assume arrival order equals event order will silently compute the wrong aggregates. Watermarks, grace periods, and idempotent writes are the standard defenses, and they are why stateful stream processing exists as a category.

Irregular Intervals

Not every series is evenly spaced. Sensor dropouts, network delays, and event-driven sources all produce gaps. You either interpolate to a regular grid, which introduces values that were never measured, or you keep the irregular spacing and use models that tolerate it. Both are defensible. Doing neither is not.

Missing or Incomplete Readings

Connectivity failures and logging errors leave holes. Forward-fill, interpolation, and explicit null handling all work, but the choice changes downstream results. Record which one you used: a gap filled by interpolation and a gap filled by the last known value tell very different stories during an incident review.

Data Drift

The statistical properties of a series change over time, gradually as behavior shifts or abruptly after a system change. Models trained on the old distribution degrade quietly. Monitoring the input distributions catches this before a stale model reaches a dashboard.

Cardinality and Scale

Volume is the product of frequency and series count, and the series count is where it usually explodes. Ten thousand devices with twelve metrics each and a per-request label is millions of distinct series. High cardinality degrades most time series databases faster than raw write volume does, so label design deserves as much scrutiny as schema design. The same constraint shapes how streaming data pipelines are partitioned.

How to Store Time Series Data

Storage follows query pattern. Three options cover most cases.

Time series databases (InfluxDB, TimescaleDB, Prometheus, QuestDB) index on time by default, compress aggressively, and ship with retention policies, continuous aggregates, and time-aware functions. Choose one when time-range queries dominate and you want downsampling handled for you. Watch cardinality limits.

Columnar and real-time OLAP databases (ClickHouse, Apache Druid, Apache Pinot) handle high-cardinality analytical queries across large windows and scale further horizontally. Choose one when you need to slice by many dimensions, not just time.

Cloud data warehouses (Snowflake, BigQuery, Databricks) are the right call when time series data needs to join against the rest of your business data. Partition by time and cluster on your highest-selectivity label, or costs climb quickly. See our data warehouse guide for the tradeoffs.

Many teams run two of these: a time series database or OLAP store for operational queries, and a warehouse for anything that joins to customer, product, or revenue tables. That works as long as one pipeline feeds both. Two pipelines will drift. For a wider view, see types of databases and their use cases.

Common Time Series Query Patterns

Five patterns cover most of what you will write.

Time bucketing: Group readings into fixed windows to make them comparable and plottable.

sql
SELECT time_bucket('5 minutes', reading_at) AS bucket, device_id, AVG(temperature) AS avg_temp, MAX(temperature) AS max_temp FROM sensor_readings WHERE reading_at > NOW() - INTERVAL '24 hours' GROUP BY bucket, device_id ORDER BY bucket DESC;

Downsampling and rollups: Store raw data at full resolution for a short window, then keep pre-aggregated hourly or daily summaries for the long tail. Most storage savings come from here.

Rolling windows: Moving averages and rolling standard deviations smooth short-term noise and expose the underlying movement. Window functions handle this without moving data out of the database.

ASOF joins: Join two series whose timestamps never line up exactly, matching each row to the most recent prior row in the other series. Essential for pairing a price with the sensor reading closest to it in time.

Gap filling: Generate the expected time grid and left-join actual readings against it, so missing intervals show up as explicit nulls rather than disappearing from the result.

Building a Time Series Data Pipeline

A data pipeline for time series has four stages, and the slowest one sets the freshness of everything downstream.

Ingestion: Readings come from databases via change data capture (CDC), from devices over MQTT, from a Kafka data pipeline, or from streaming APIs. The data streaming technologies guide compares the transport options. This is where ingestion latency is decided. Batch collection every 15 minutes caps every dashboard downstream at 15-minute freshness, no matter how fast the query engine is.

Processing: Filtering, aggregation, unit conversion, and enrichment happen here. A stream processing framework handles windowing and late-arrival logic, and this is also where deduplication belongs, so a retry does not double-count a reading. If you are still deciding between scheduled jobs and continuous processing, see batch vs. stream processing and real-time processing.

Storage: Route to the store that matches the query pattern, applying partitioning, compression, and retention as covered above.

Visualization and alerting: Real-time dashboards and thresholds turn the series into something actionable, and streaming analytics sits between the two. If latency at any earlier stage exceeds your alerting threshold, the alert is already too late to matter.

At-least-once delivery plus a non-idempotent write equals inflated metrics, a failure mode that is very hard to spot after the fact.

Time Series Analysis and Modeling: A Quick Map

Time series analysis covers everything from plotting a trend to forecasting next quarter. These are the model families worth knowing, and when each one earns its place.

ModelWhat it assumesBest fit
Autoregressive (AR)Current value depends on recent valuesStrong short-term dependence
Moving average (MA)Current value depends on recent forecast errorsCorrelated noise
ARMA / ARIMACombines AR and MA; ARIMA adds differencingThe workhorse for stationary and trending univariate series. ARIMA stands for autoregressive integrated moving average
SARIMAARIMA plus explicit seasonal termsClear repeating seasonality, such as retail or energy
Exponential smoothingRecent observations matter more, weighted by recencyFast, reliable baselines that often beat complex models
Vector autoregression (VAR)Multiple series influence each otherMultivariate cases like ad spend and traffic
Spectral analysisSignal decomposes into frequency componentsFinding hidden periodicity
Machine learning and deep learningFew structural assumptionsLarge datasets, non-linear relationships, many related series

Three practical notes. Check stationarity before reaching for ARIMA-family models, and difference the series if it fails. Treat exponential smoothing as a real baseline and beat it before deploying anything more expensive. And whatever the model, its inputs are usually derived rather than raw: lag features for autocorrelation, rolling statistics to smooth noise, time-based flags for day of week. Compute those in the pipeline, not in notebooks, or training and production will quietly disagree.

Best Practices for Time Series Pipelines

  • Validate at ingestion: Check timestamp format, timezone, and plausible range at the edge. A bad timestamp caught at ingestion is a warning; the same timestamp caught after storage is a backfill.
  • Separate event time from processing time: Store both. You cannot reconstruct event-time correctness later if you only kept arrival time.
  • Make writes idempotent: Assign every reading a stable key so retries overwrite rather than duplicate.
  • Plan retention and rollups on day one: Decide how long raw resolution is worth keeping before storage costs force the decision for you.
  • Handle schema evolution explicitly: New fields and changed types are normal in device fleets. Schema enforcement with versioning prevents a firmware update from breaking a downstream table.
  • Track end-to-end freshness: A pipeline that is running but eight minutes behind is failing at its actual job. Measure lag from event time to query availability, and alert on it the same way you alert on uptime. See real-time monitoring for the wider picture, and real-time analytics for what fresh data unlocks downstream.

Building a Time Series Pipeline With Estuary

Every challenge above is solvable with enough custom code. The question is whether you want to maintain it.

Example Scenario

A manufacturer wants to monitor equipment health across three plants. IoT sensors emit temperature, vibration, and pressure readings every second. Those readings need to reach a time series database for operational dashboards and a warehouse for joins against maintenance records and warranty claims. Machines go offline. Readings arrive late. The plant runs 24 hours a day.

How Estuary Fits In

Estuary is the right-time data platform: it captures data once and delivers it wherever it is needed, streaming when latency matters and batching when it does not.

  • Capture from any source. 200+ no-code connectors cover databases via log-based CDC, streaming systems, APIs, and event sources, so telemetry data from sensors and change data from operational databases land in the same pipeline. For how this compares to assembling it yourself, see best data streaming platforms.
  • Deliver to multiple destinations at once. Capture once, sync everywhere. The same readings materialize continuously into TimescaleDB for operational queries and into Snowflake or BigQuery for joins against business data, with no second pipeline to keep in sync.
  • Exactly-once delivery. Readings are not duplicated on retry and not lost on failure, which is what makes an aggregate trustworthy. Backed by a durable append-only transaction log with deterministic recovery.
  • Schema enforcement built in. Schema changes are caught at the pipeline, before a downstream table breaks.
  • Sub-100ms latency, with cadence you control. Stream the equipment telemetry that feeds safety alerts. Batch the warranty joins that run nightly. This is what real-time data streaming looks like when you are not forced into it everywhere.

Why It Works for Time Series Workloads

Two properties matter most. Ingestion sets the freshness floor for everything downstream, so a sub-100ms capture layer is what makes a real-time dashboard possible at all. And operational and analytical stores need the same readings without divergence, which capture-once-sync-everywhere handles by design.

Estuary is not a time series database and does not replace one. It is the movement layer that keeps your time series database, your OLAP store, and your warehouse fed from a single source of truth. Pricing is $0.50/GB moved plus $0.14/connector/hour, which stays predictable as reading volume grows rather than scaling with row counts.

Worth being straightforward about the tradeoffs: there is a learning curve, and the connector library is in continuous improvement. Teams that want to build visually can work in the Estuary UI, and teams that prefer version-controlled configuration can use the flowctl CLI.

Related Real-Time Guides

Conclusion

Time series data is data where order is information, where arrival time and event time diverge, and where the value of a reading decays from the moment it is recorded.

That shapes every decision downstream: whether you interpolate a gap or leave it visible, whether you keep raw resolution for a week or a year, whether your storage engine indexes on time or on dimensions, and whether your alert fires while the incident is still unfolding or after it has resolved.

Get the components and the query patterns right, and the analysis becomes straightforward. Get the pipeline right, and the analysis becomes possible.


Estuary is the right-time data platform that replaces fragmented data stacks by consolidating CDC, streaming, batch, and pipelines into a single managed system.

FAQs

    Do you need a dedicated time series database?

    Not always. If time-range queries dominate and you want retention, downsampling, and time-aware functions handled for you, a time series database earns its place. If you need high-cardinality queries across many dimensions, a columnar OLAP store like ClickHouse or Druid often fits better. If the series has to join against customer or revenue data, a cloud warehouse partitioned by time is usually simpler than adding a fourth system.
    Most teams keep full resolution for 7 to 30 days, then roll up to hourly or daily aggregates for longer horizons. The right window is set by your slowest legitimate use: incident investigation typically needs days of raw data, while capacity planning and forecasting run fine on rollups. Decide this before storage costs decide it for you, because backfilling a rollup you never created is far more expensive than computing it as data arrives.
    Store event time and processing time as separate fields, then define a watermark and a grace period that tell the system how long to wait for stragglers before finalizing a window. Give every reading a stable key so late writes update the correct record instead of appending a duplicate. Aggregates computed before the grace period expires should be treated as provisional.
    Estuary captures readings from databases, streaming systems, and APIs through 200+ no-code connectors and delivers them continuously to time series databases, OLAP stores, and warehouses at the same time. Exactly-once delivery prevents the duplicate readings that corrupt aggregates, schema enforcement catches breaking changes at the pipeline, and sub-100ms latency keeps downstream dashboards and alerts current.

Start streaming your data for free

Build a Pipeline

About the author

Picture of Team Estuary
Team EstuaryEstuary Editorial Team

Team Estuary is a group of engineers, product experts, and data strategists building the future of real-time and batch data integration. We write to share technical insights, industry trends, and practical guides.

Streaming Pipelines.
Simple to Deploy.
Simply Priced.
$0.50/GB of data moved + $.14/connector/hour;
50% less than competing ETL/ELT solutions;
<100ms latency on streaming sinks/sources.