CSV to Dashboard Summary avatar

CSV to Dashboard Summary

Pricing

from $6.50 / 1,000 item processeds

Go to Apify Store
CSV to Dashboard Summary

CSV to Dashboard Summary

Turn CSV/tabular data into KPI summaries, dashboard-ready metrics, and insight reports.

Pricing

from $6.50 / 1,000 item processeds

Rating

0.0

(0)

Developer

junipr

junipr

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Convert CSV or tabular records into dashboard-ready KPI rows with grouped statistics, trends, missing-value checks, and outlier signals.

What does CSV to Dashboard Summary do?

CSV to Dashboard Summary parses the complete bounded table, infers numeric columns, and calculates repeatable metrics for charts, KPI cards, and reporting feeds. Unlike a first-row preview, every accepted row contributes to counts, sums, averages, medians, ranges, trends, and IQR outlier checks.

  • Parse quoted commas, escaped quotes, embedded newlines, BOM markers, duplicate headers, currencies, percentages, and accounting negatives.
  • Read CSV text, inline JSON records, or bounded public CSV URLs.
  • Infer numeric columns or use an explicit metric list.
  • Group metrics by region, team, channel, product, status, or another categorical column.
  • Choose sum, average, median, minimum, maximum, or count as the primary KPI value.
  • Report missing values, small groups, outliers, first-to-last change, and visualization suggestions.
  • Export dataset rows, metrics JSON, flat metrics CSV, summary JSON, and Markdown.

Why Use This Actor

Spreadsheet pivots are useful for exploration but difficult to automate consistently. Dashboard platforms often expect already-shaped metrics and provide limited source-quality evidence. This actor creates a deterministic intermediate layer that can be scheduled or called through an API.

CapabilityCSV to Dashboard SummarySpreadsheet pivot tablepandas scriptBI import wizard
Full bounded CSV parsingIncludedIncludedRequires codeProduct-dependent
Automatic numeric inferenceIncludedManual selectionRequires codeProduct-dependent
Grouped KPI rowsIncludedIncludedRequires codeIncluded
Missing and outlier signalsIncludedManualRequires codeProduct-dependent
First-to-last trendIncludedManualRequires codeProduct-dependent
Apify dataset and report filesIncludedNoRequires integrationSeparate integration
Primary row-check price$3.90 per 1,000 rowsProduct-dependentEngineering timeProduct-dependent

Use it for sales summaries, campaign reporting, operations dashboards, support metrics, finance exports, inventory reports, and scheduled stakeholder updates.

How to Use

{
"csvText": "region,month,leads,revenue,conversionRate\nNorth,Jan,120,184000,0.18\nNorth,Feb,135,201000,0.20\nSouth,Jan,90,93000,0.11\nSouth,Feb,105,116000,0.14",
"metrics": ["leads", "revenue", "conversionRate"],
"groupBy": "region",
"aggregation": "sum",
"maxGroups": 25,
"maxItems": 500,
"includeReport": true
}
  1. Paste CSV text, submit records, or enable a public CSV URL.
  2. Leave metrics empty for inference or list the numeric columns explicitly.
  3. Set groupBy for per-category metrics, or leave it empty for an overall summary.
  4. Select the statistic that should appear in metricValue.
  5. Use dataset rows directly in a dashboard feed and keep the summary for quality checks.

Sales KPI feed

Group by region or sales owner and summarize pipeline, wins, and revenue. Use sum for additive measures and inspect missing values before sending results to a weekly dashboard.

Conversion monitoring

Summarize conversion-rate columns with average or median. The row still includes sum, average, median, minimum, maximum, and first-to-last change so consumers can choose a different statistic later.

Operations outlier report

Run without grouping to find numeric columns with values outside the 1.5 IQR fences. Review source rows before treating an extreme value as a real operational event.

Input Configuration

ParameterTypeDefaultDescription
targetsarrayIncluded fixtureMultiple CSV, record, or URL sources.
recordsarray[]Inline tabular records for one source.
csvTextstringEmptyQuoted CSV content for one source.
sourceUrlstringEmptyPublic HTTP(S) CSV URL.
fetchUrlsbooleanfalseEnables bounded public URL retrieval.
delimiterstring,Single-character delimiter.
metricsstring array[]Numeric columns to summarize; empty enables inference.
groupBystringEmptyOptional categorical grouping column.
aggregationstringaverageStatistic placed in metricValue.
maxGroupsinteger25Per-source group cap, with a hard maximum of 100.
maxTargetsinteger2Source cap, with a hard maximum of 20.
maxItemsinteger500Per-source row cap, with a hard maximum of 10,000.
maxTextBytesinteger500000Maximum fetched response size.
fetchTimeoutMsinteger10000Per-request timeout in milliseconds.
includeReportbooleantrueCreates JSON, CSV, summary, and Markdown files.

Each source is limited to 100 metric columns, 100 group values, and 10,000 input rows, which bounds the maximum dataset size even when a wide table is supplied.

Public retrieval accepts HTTP and HTTPS only. Credentialed URLs, redirects, localhost, private networks, reserved ranges, private DNS answers, oversized bodies, and slow responses are rejected. A source failure produces a free diagnostic row instead of a misleading empty success.

Output Format

Each dataset row represents one numeric metric for one source and optional group:

{
"sourceId": "monthly-sales",
"metricName": "revenue",
"aggregation": "sum",
"metricValue": 385000,
"groupBy": "region",
"groupValue": "North",
"rowCount": 2,
"nonNullCount": 2,
"missingCount": 0,
"sum": 385000,
"average": 192500,
"median": 192500,
"minimum": 184000,
"maximum": 201000,
"firstValue": 184000,
"lastValue": 201000,
"percentChange": 0.092391,
"trend": "up",
"outlierCount": 0,
"outlierFlag": false,
"chartSuggestion": "bar",
"issueCodes": [],
"issueCount": 0,
"status": "ready"
}

Report files include CSV_TO_DASHBOARD_SUMMARY_RESULTS.json, DASHBOARD_METRICS.csv, CSV_TO_DASHBOARD_SUMMARY_SUMMARY.json, and CSV_TO_DASHBOARD_SUMMARY_REPORT.md.

Integration Examples

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('junipr/csv-to-dashboard-summary').call({
records: sourceRows,
metrics: ['revenue', 'orders'],
groupBy: 'region',
aggregation: 'sum',
maxItems: 500
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const kpis = items.filter((row) => row.status === 'ready');
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("junipr/csv-to-dashboard-summary").call(run_input={
"csvText": csv_text,
"metrics": ["revenue", "orders"],
"aggregation": "average",
"maxItems": 500,
})
metrics = client.dataset(run["defaultDatasetId"]).list_items().items

Tips and Advanced Usage

Select the right aggregation

Use sum for additive values such as revenue, orders, hours, or units. Use average or median for rates, durations, prices, and scores. Use count when the number of populated numeric values is the KPI.

percentChange compares the first and last numeric values in input order. Sort the source extract chronologically before running the actor when that field should represent a time trend.

Keep groups bounded

A high-cardinality identifier is usually not a useful dashboard grouping field. Use category-like fields and keep maxGroups low enough that charts remain readable and costs remain predictable.

Understand outliers

Outliers use standard 1.5 IQR fences. They are review signals, not proof of bad data. Small groups can legitimately show no outliers even when values differ substantially.

Pricing

Prices follow the actor's locked pay-per-event contract and include platform usage for this bounded utility.

EventPriceCharged when
actor-start$0.00500Run setup is accepted.
row-checked$0.00390A source row is accepted for metric processing.
issue-detected$0.00372A metric quality issue is emitted.
qa-report-generated$0.05000Metrics JSON/CSV, summary, and report files are created.

FAQ

Does it render a visual dashboard?

No. It produces structured metric rows and chart suggestions for a dashboard, spreadsheet, database, or reporting application.

Can it parse currency and percentages?

Yes. Common currency symbols, comma separators, percentages, and parenthesized negatives are converted to numeric values.

How are numeric columns inferred?

A populated column is inferred when at least 60% of its populated values are numeric.

Why is a metric marked attention?

It contains missing values, an IQR outlier, or fewer than two numeric values.

Can it process multiple CSV files?

Yes. Add one entry per source to targets, subject to maxTargets and per-source caps.

Can it fetch an authenticated CSV export?

Credentialed URLs are intentionally rejected. Submit content directly or use a time-limited public HTTPS URL without embedded credentials.

  • CSV Deduper Normalizer
  • Entity Deduplication Matcher
  • Domain Extractor Grouper
  • URL Canonicalizer

Limitations and Safe Use

The actor calculates descriptive statistics; it does not infer business causality, forecast future results, or verify the correctness of source records. Review quality flags before publishing metrics, and remove confidential columns that are unnecessary for aggregate reporting.