{"slug":"compressing-market-data-zstd-vs-gzip","qid":"retention_curve","label":"retention_curve","post_title":"compressing-market-data-zstd-vs-gzip","post_url":"/blog/compressing-market-data-zstd-vs-gzip#q-retention_curve","columns":["horizon","gigabytes_uncompressed"],"rows":[{"horizon":"1-month","gigabytes_uncompressed":4.8},{"horizon":"3-month","gigabytes_uncompressed":14.3},{"horizon":"6-month","gigabytes_uncompressed":28.7},{"horizon":"12-month","gigabytes_uncompressed":57.3},{"horizon":"24-month","gigabytes_uncompressed":114.6},{"horizon":"60-month","gigabytes_uncompressed":286.6}],"shape":"ranking","sql":"WITH day_rows AS\n(\n    SELECT count() AS trades\n    FROM global_markets.stocks_trades\n    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO')\n      AND sip_timestamp >= toDateTime64('2026-09-15 04:00:00', 9, 'UTC')\n      AND sip_timestamp <  toDateTime64('2026-09-16 04:00:00', 9, 'UTC')\n)\nSELECT\n    concat(toString(months), '-month')                  AS horizon,\n    round(trades * 64 * 21 * months / 1073741824, 1)    AS gigabytes_uncompressed\nFROM day_rows\nCROSS JOIN (SELECT arrayJoin([1, 3, 6, 12, 24, 60]) AS months) AS horizons\nORDER BY months","computed_at":"2026-09-28T15:16:07.621528+00:00","elapsed":0.290704926}