Skip to content

CSV Upload

Upload CSV files directly to Icelake for instant analysis with AI MasterMind and SQL queries. Use this for:

  • Historical data imports — migrate existing logs or metrics into Icelake
  • One-time batch uploads — load data exports from other systems
  • Quick analysis — drop a CSV and ask AI MasterMind questions about it
  1. Upload a CSV file via the REST API or the admin dashboard
  2. Icelake auto-detects the schema and stores it as a queryable dataset on S3
  3. Query it immediately with SQL, AI MasterMind, or pin it to a dashboard
Terminal window
curl -X POST https://api.icelake.eu/admin/datasets/upload-csv \
-H "Authorization: Bearer <your-jwt-token>" \
-F "file=@your-data.csv"

Get a JWT token by signing into the admin dashboard — the token is in your browser’s dev tools under the Authorization header.

  1. Go to app.icelake.eu and sign in
  2. Navigate to Data In in the sidebar
  3. Drag and drop the file, or select it with the picker
  4. The dataset appears automatically under Data Sets

Here are ready-to-use example files you can upload to try out Icelake.

A sample web server access log with timestamps, levels, and messages:

example-logs.csv
timestamp,level,service,message,status_code,response_time_ms
2026-03-14 08:00:12,INFO,api-gateway,GET /api/v1/health,200,3
2026-03-14 08:00:15,INFO,api-gateway,POST /api/v1/metrics/push,200,45
2026-03-14 08:00:18,WARN,auth-service,Token refresh approaching expiry,200,12
2026-03-14 08:00:22,INFO,api-gateway,GET /api/v1/prom/query?query=up,200,89
2026-03-14 08:00:25,ERROR,ingestion,Failed to parse protobuf payload,400,2
2026-03-14 08:00:30,INFO,compaction,Background compaction started for tenant t-001,200,0
2026-03-14 08:00:45,INFO,compaction,Merged 12 files into 3 Parquet files (42MB → 18MB),200,15230
2026-03-14 08:01:02,INFO,api-gateway,POST /loki/api/v1/push,200,23
2026-03-14 08:01:05,WARN,storage,S3 PUT latency above threshold: 340ms,200,340
2026-03-14 08:01:12,INFO,api-gateway,POST /v1/otlp,200,67
2026-03-14 08:01:18,ERROR,mqtt-broker,Client disconnected unexpectedly: sensor-floor-3,0,0
2026-03-14 08:01:30,INFO,query-engine,DuckDB query completed: 3.2M rows scanned in 120ms,200,120
2026-03-14 08:01:45,INFO,ai-mastermind,Chat query processed: "Show temperature trends",200,1820
2026-03-14 08:02:00,INFO,api-gateway,GET /api/v1/prom/label/__name__/values,200,34
2026-03-14 08:02:15,WARN,ingestion,Rate limit approaching for tenant t-002: 45k/s of 50k/s,200,5

After uploading, try asking AI MasterMind:

  • “How many errors occurred and in which services?”
  • “Show me the average response time by service”
  • “What happened around the time of the errors?”

A sample IoT sensor dataset with temperature, humidity, and energy readings:

example-metrics.csv
timestamp,sensor_id,location,temperature_celsius,humidity_percent,battery_voltage,energy_kwh
2026-03-14 00:00:00,sensor-001,warehouse-north,18.2,45.3,3.28,0.0
2026-03-14 00:15:00,sensor-001,warehouse-north,18.0,45.8,3.28,0.0
2026-03-14 00:30:00,sensor-001,warehouse-north,17.8,46.1,3.27,0.0
2026-03-14 00:45:00,sensor-001,warehouse-north,17.5,46.5,3.27,0.0
2026-03-14 01:00:00,sensor-001,warehouse-north,17.2,47.0,3.26,0.0
2026-03-14 06:00:00,sensor-001,warehouse-north,15.8,52.3,3.22,0.0
2026-03-14 07:00:00,sensor-001,warehouse-north,16.5,50.1,3.21,0.8
2026-03-14 08:00:00,sensor-001,warehouse-north,18.3,47.2,3.20,2.4
2026-03-14 09:00:00,sensor-001,warehouse-north,20.1,44.8,3.19,5.1
2026-03-14 10:00:00,sensor-001,warehouse-north,21.5,42.1,3.18,8.3
2026-03-14 11:00:00,sensor-001,warehouse-north,22.8,40.5,3.17,11.7
2026-03-14 12:00:00,sensor-001,warehouse-north,23.5,39.2,3.16,14.9
2026-03-14 13:00:00,sensor-001,warehouse-north,23.8,38.8,3.15,17.8
2026-03-14 14:00:00,sensor-001,warehouse-north,23.2,39.5,3.14,20.2
2026-03-14 15:00:00,sensor-001,warehouse-north,22.5,40.8,3.13,22.1
2026-03-14 16:00:00,sensor-001,warehouse-north,21.3,42.5,3.12,23.4
2026-03-14 17:00:00,sensor-001,warehouse-north,20.0,44.2,3.11,24.0
2026-03-14 18:00:00,sensor-001,warehouse-north,18.8,46.0,3.10,24.2

After uploading, try asking AI MasterMind:

  • “Plot temperature and humidity over time”
  • “When did energy production peak?”
  • “What’s the correlation between temperature and humidity?”

Once uploaded, your CSV data is:

  • Stored on S3 as optimized Parquet files
  • Queryable immediately via SQL (pgwire), REST API, and AI MasterMind
  • Visible in Data Sets with auto-detected schema and time-range charts
  • Available for dashboards — create visualizations directly from the data
  • Include timestamps — Icelake works best with time-series data. Use ISO 8601 format (YYYY-MM-DD HH:MM:SS).
  • Use descriptive column names — AI MasterMind uses column names to understand your data. temperature_celsius is better than col3.
  • Wide tables are fine — upload as many columns as you need. DuckDB handles wide tables efficiently.
  • Quickstart — end-to-end Icelake + Grafana setup if you want to run this locally
  • Jupyter Notebooks — query the uploaded dataset from a VS Code notebook and plot with matplotlib
  • AI MasterMind — natural-language analytics over uploaded datasets
  • Query Interfaces — pgwire SQL, REST, and Loki Query API against any dataset