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
How it works
Section titled “How it works”- Upload a CSV file via the REST API or the admin dashboard
- Icelake auto-detects the schema and stores it as a queryable dataset on S3
- Query it immediately with SQL, AI MasterMind, or pin it to a dashboard
Upload via API
Section titled “Upload via API”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.
Upload via the admin dashboard
Section titled “Upload via the admin dashboard”- Go to app.icelake.eu and sign in
- Navigate to Data In in the sidebar
- Drag and drop the file, or select it with the picker
- The dataset appears automatically under Data Sets
Example CSV files
Section titled “Example CSV files”Here are ready-to-use example files you can upload to try out Icelake.
Logs example
Section titled “Logs example”A sample web server access log with timestamps, levels, and messages:
timestamp,level,service,message,status_code,response_time_ms2026-03-14 08:00:12,INFO,api-gateway,GET /api/v1/health,200,32026-03-14 08:00:15,INFO,api-gateway,POST /api/v1/metrics/push,200,452026-03-14 08:00:18,WARN,auth-service,Token refresh approaching expiry,200,122026-03-14 08:00:22,INFO,api-gateway,GET /api/v1/prom/query?query=up,200,892026-03-14 08:00:25,ERROR,ingestion,Failed to parse protobuf payload,400,22026-03-14 08:00:30,INFO,compaction,Background compaction started for tenant t-001,200,02026-03-14 08:00:45,INFO,compaction,Merged 12 files into 3 Parquet files (42MB → 18MB),200,152302026-03-14 08:01:02,INFO,api-gateway,POST /loki/api/v1/push,200,232026-03-14 08:01:05,WARN,storage,S3 PUT latency above threshold: 340ms,200,3402026-03-14 08:01:12,INFO,api-gateway,POST /v1/otlp,200,672026-03-14 08:01:18,ERROR,mqtt-broker,Client disconnected unexpectedly: sensor-floor-3,0,02026-03-14 08:01:30,INFO,query-engine,DuckDB query completed: 3.2M rows scanned in 120ms,200,1202026-03-14 08:01:45,INFO,ai-mastermind,Chat query processed: "Show temperature trends",200,18202026-03-14 08:02:00,INFO,api-gateway,GET /api/v1/prom/label/__name__/values,200,342026-03-14 08:02:15,WARN,ingestion,Rate limit approaching for tenant t-002: 45k/s of 50k/s,200,5After 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?”
Metrics example
Section titled “Metrics example”A sample IoT sensor dataset with temperature, humidity, and energy readings:
timestamp,sensor_id,location,temperature_celsius,humidity_percent,battery_voltage,energy_kwh2026-03-14 00:00:00,sensor-001,warehouse-north,18.2,45.3,3.28,0.02026-03-14 00:15:00,sensor-001,warehouse-north,18.0,45.8,3.28,0.02026-03-14 00:30:00,sensor-001,warehouse-north,17.8,46.1,3.27,0.02026-03-14 00:45:00,sensor-001,warehouse-north,17.5,46.5,3.27,0.02026-03-14 01:00:00,sensor-001,warehouse-north,17.2,47.0,3.26,0.02026-03-14 06:00:00,sensor-001,warehouse-north,15.8,52.3,3.22,0.02026-03-14 07:00:00,sensor-001,warehouse-north,16.5,50.1,3.21,0.82026-03-14 08:00:00,sensor-001,warehouse-north,18.3,47.2,3.20,2.42026-03-14 09:00:00,sensor-001,warehouse-north,20.1,44.8,3.19,5.12026-03-14 10:00:00,sensor-001,warehouse-north,21.5,42.1,3.18,8.32026-03-14 11:00:00,sensor-001,warehouse-north,22.8,40.5,3.17,11.72026-03-14 12:00:00,sensor-001,warehouse-north,23.5,39.2,3.16,14.92026-03-14 13:00:00,sensor-001,warehouse-north,23.8,38.8,3.15,17.82026-03-14 14:00:00,sensor-001,warehouse-north,23.2,39.5,3.14,20.22026-03-14 15:00:00,sensor-001,warehouse-north,22.5,40.8,3.13,22.12026-03-14 16:00:00,sensor-001,warehouse-north,21.3,42.5,3.12,23.42026-03-14 17:00:00,sensor-001,warehouse-north,20.0,44.2,3.11,24.02026-03-14 18:00:00,sensor-001,warehouse-north,18.8,46.0,3.10,24.2After uploading, try asking AI MasterMind:
- “Plot temperature and humidity over time”
- “When did energy production peak?”
- “What’s the correlation between temperature and humidity?”
What happens after upload
Section titled “What happens after upload”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_celsiusis better thancol3. - Wide tables are fine — upload as many columns as you need. DuckDB handles wide tables efficiently.
Related docs
Section titled “Related docs”- 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