This documentation page assumes that you already have a SeekTable account. You can create free account by signing up
Create pivot table by CSV
CSV (or TSV) file is a simplest data source in SeekTable: it is enough to click on Upload Data, choose a local file,
and wait until file is uploaded. That's all: now you can create summary report (pivot table, chart) or view/filter/sort CSV data rows with usual
All parameters are detemined automatically:
- CSV separator: comma, semicolon, pipe or tab.
- File encoding: UTF-16, UTF-8, Windows-1252, Windows-1251/KOI8-R (Cyrillic), Windows-1253 (Greek), ISO-2022-JP, ISO-2022-KR, ISO-2022-CN and others.
- First row should contain column names. If your CSV file doesn't contain headers row you have to add it.
- Data types: string, number, date. Other types may be parsed with custom expressions.
- For number columns sum/average/min/max measures are suggested.
- For date columns 3 derived dimensions (year, month, day) are configured automatically.
- Columns with many unique values (like IDs) may be excluded from dimensions. You can add them explicitely if needed.
CSV file may be compressed with zip or gzip, and this is only option if you want to upload large CSV file that is greater than upload limit (50Mb).
Uncompressed CSV size might be up to 500Mb; SeekTable works fine with files of this size and pivot table generation should not take more than 5-10 seconds.
It is possible to define special expressions for custom handling of CSV values (parse timespans, apply replace rules etc).
Refresh CSV data
In some cases you might need to refresh saved pivot table reports by uploading newer version of the dataset.
This is possible in one of the following ways:
- If CSV file name is the same as previously uploaded file: just upload new file and choose Refresh Existing Cube in the confirmation dialog.
Determine ID of CSV-based cube you want to refresh; it is present in the address bar, for example:
In this case cube ID is
Rename new CSV file and use cube ID as file name. For example:
feb3828c57474791a5ee92b83d4195e0.zip (if CSV file is zipped)
- Upload renamed file in a usual way (with Upload Data button).
- Instead of creating new cube SeekTable will replace old CSV file with a new version. All saved reports will be refreshed.
- Use Zapier and create a task to automate CSV data refresh.
For example, you can refresh reports automatically each time when you change Google Sheets document.
- Use Microsoft Flow for the same purpose.
Note: data refresh is possible only if new CSV file has all columns present in the old version of CSV file (with the same names); new columns are OK.
Calculated columns row-level expressions
It is possible to define expression-based (calculated) dimensions that are evaluated before aggregation step (on row-level).
For example, if you have date column (say, "Some Date") it is possible to calculate quarter or day-of-week in the following way:
- add new dimension with Type=
- fill Name with some unique value: say, "Some Date (Quarter)" or "Some Date (DayOfWeek)"
- add one Parameter which should be an expression (syntax is the same as for calculated members):
Date.Quarter(Column["Some Date"]) (for quarter)
Date.DayOfWeek(Column["Some Date"]) (for day-of-week)
Date.Week(Column["Some Date"]) (for week number)
Column is a special variable that provides access to the context CSV row values; you can use column name directly
if it doesn't contain spaces or special symbols - for example,
SomeDate. More details about expression syntax you can found
Analyze very large CSV file
In case if you want to create a pivot table by CSV file that exceeds upload limit (even zipped) you still can do that in one of the following ways:
Use self-hosted SeekTable that doesn't have any limitations on file upload and
run it on your computer (or server).
Pivot table generation by 1GB file might take up to 10-15 seconds.
Import your CSV data into a database (cloud or on-premise) that is supported by SeekTable.
If you interested in real-time analytics by many millions of rows you can try Amazon Redshift, MemSql or Yandex ClickHouse.
If your dataset has unstructured text and you want to filter by this content consider usage of ElasticSearch.