reports
Reports

Reports

A report combines a SQL query, a cron schedule, an output format, and one or more delivery channels. DataRunner runs the query on schedule and delivers the output automatically — no infrastructure required.

Read
6 min
Sections
6
Formats
CSV · Excel · PDF

Creating a report

Go to Reports → New report. The report wizard has four steps:

  1. Queryselect an existing saved query or write one inline
  2. Scheduleset a cron expression and timezone
  3. Outputchoose CSV, Excel (XLSX), or PDF format
  4. Deliveryconfigure one or more channels (email, Slack, S3, webhook)

Save the report and DataRunner schedules it immediately. The first run fires at the next matching cron time. You can also trigger a manual run at any time from the report detail page.

Cron schedules

DataRunner uses standard 5-field cron syntax: minute hour day-of-month month day-of-week. The schedule editor has a visual builder if you're not familiar with cron expressions.

ExpressionMeaning
0 8 * * 1-5Every weekday at 8:00 AM
0 9 * * 1Every Monday at 9:00 AM
*/15 * * * *Every 15 minutes
0 0 1 * *First day of each month at midnight
0 9 1-7 * 1First Monday of each month at 9:00 AM
0 */6 * * *Every 6 hours
30 17 * * 5Every Friday at 5:30 PM

Schedules run in the timezone you specify. DataRunner converts to UTC internally. If you change the timezone on an existing report, the next run fires at the next matching time in the new timezone.

Tip: For time-sensitive reports, use the Failure alerts setting on the report to get notified by email or Slack if a run errors out.

Output formats

CSV

Standard comma-separated values, UTF-8 encoded. Column headers come from the query's SELECT column aliases. Null values are exported as empty strings. You can configure the delimiter (comma, tab, pipe, semicolon) in the report settings.

Excel (XLSX)

A formatted Excel workbook with one sheet. Features:

  • Column headers in row 1 with bold formatting
  • Auto-width columns based on content
  • Data types preserved (numbers as numbers, dates as date cells)
  • Configurable sheet name (defaults to the report name)

PDF

A paginated PDF with:

  • Report title as the page header
  • Full result table with alternating row shading
  • Page numbers and generation timestamp in the footer
  • Configurable page size (A4 or Letter) and orientation (portrait or landscape)

PDF output is best for reports with fewer than ~1,000 rows. For large datasets, CSV or Excel is more practical.

Delivery channels

A report can have multiple delivery channels. DataRunner sends to all of them on every run. Configure channels on the Delivery tab of the report detail page.

Channel
Email

Send to any email addresses with a custom subject line and body. Attach the report file. Configure SMTP or a transactional API (SendGrid, Mailgun, etc.) in Settings → Email. Use broadcast lists to define reusable recipient groups.

Channel
Slack

Post a message or file to any Slack channel or DM. Configure a Slack integration in Settings → Channels. Customize the message body with the report name, run time, and row count using template variables.

Channel
Amazon S3

Upload the report file to any S3-compatible bucket. Configure the bucket, region, and credentials in Settings → Channels. The file path supports template variables: {{report_name}}, {{date}}, {{time}}.

Channel
Webhook

POST a JSON payload to any HTTP endpoint after each run. Configure custom headers and an auth token. The request body includes the report name, run timestamp, row count, and a download URL for the output file (valid for 24 hours).

Run history

Every report has a Run history tab showing all past executions. For each run:

  • Timestamp and trigger type (scheduled or manual)
  • Duration (query execution time + delivery time)
  • Row count of the result set
  • Status per delivery channel (delivered, failed, pending)
  • Download link for the output file
  • Full error message if the run failed