feat: add examples/demo.csv and examples/demo.improv

40-row CSV with obviously-fake sales data (fictional companies like
Acme Corp, Wonka Industries, Cyberdyne Systems). demo.improv generated
via headless import with Profit formula and a default view showing
Region+Product on rows, Date_Month+Measure on columns. Added the
import command to the README quick-start section.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Edward Langley
2026-04-09 00:19:00 -07:00
parent d3d1df0be2
commit 08df85664e
4 changed files with 243 additions and 0 deletions

1
.gitignore vendored
View File

@ -12,6 +12,7 @@ bench/*.txt
# Added by git-smart-commit # Added by git-smart-commit
*.patch *.patch
*.improv *.improv
!examples/*.improv
# Beads / Dolt files (added by bd init) # Beads / Dolt files (added by bd init)
.dolt/ .dolt/

View File

@ -33,6 +33,22 @@ Or import your own CSV:
./result/bin/improvise import path/to/data.csv ./result/bin/improvise import path/to/data.csv
``` ```
The included `examples/demo.improv` was generated from `examples/demo.csv`:
```sh
improvise import examples/demo.csv \
--no-wizard \
--category Region --category Product --category Customer \
--measure Revenue --measure Cost \
--time Date --extract Date:Month \
--axis Region:row --axis Product:row \
--axis Date_Month:column --axis Measure:column \
--axis Customer:page --axis Date:none \
--formula "Profit = Revenue - Cost" \
--name "Acme Sales Demo" \
-o examples/demo.improv
```
## Key bindings to try first ## Key bindings to try first
| Key | Action | | Key | Action |

41
examples/demo.csv Normal file
View File

@ -0,0 +1,41 @@
Date,Region,Product,Customer,Revenue,Cost
2025-01-15,North,Widgets,Acme Corp,12000,7200
2025-01-22,North,Widgets,Globex Inc,8500,5100
2025-01-08,North,Gadgets,Acme Corp,6200,4340
2025-01-30,North,Gadgets,Initech,4100,2870
2025-01-12,North,Sprockets,Globex Inc,3400,2380
2025-02-05,North,Widgets,Initech,11000,6600
2025-02-18,North,Gadgets,Acme Corp,7300,5110
2025-02-25,North,Sprockets,Globex Inc,2900,2030
2025-03-10,North,Widgets,Acme Corp,13500,8100
2025-03-19,North,Gadgets,Initech,5800,4060
2025-01-09,South,Widgets,Soylent Ltd,9800,5880
2025-01-20,South,Widgets,Umbrella Co,7200,4320
2025-01-14,South,Gadgets,Soylent Ltd,5500,3850
2025-01-28,South,Sprockets,Umbrella Co,2800,1960
2025-02-03,South,Widgets,Soylent Ltd,10200,6120
2025-02-15,South,Gadgets,Umbrella Co,6100,4270
2025-02-22,South,Sprockets,Soylent Ltd,3100,2170
2025-03-07,South,Widgets,Umbrella Co,8900,5340
2025-03-18,South,Gadgets,Soylent Ltd,6800,4760
2025-03-28,South,Sprockets,Umbrella Co,3500,2450
2025-01-06,East,Widgets,Wonka Industries,14200,8520
2025-01-17,East,Widgets,Stark Enterprises,11800,7080
2025-01-23,East,Gadgets,Wonka Industries,8900,6230
2025-01-31,East,Gadgets,Stark Enterprises,7400,5180
2025-02-10,East,Widgets,Wonka Industries,15000,9000
2025-02-20,East,Sprockets,Stark Enterprises,4200,2940
2025-02-28,East,Gadgets,Wonka Industries,9200,6440
2025-03-05,East,Widgets,Stark Enterprises,12500,7500
2025-03-14,East,Sprockets,Wonka Industries,4800,3360
2025-03-25,East,Gadgets,Stark Enterprises,8100,5670
2025-01-11,West,Widgets,Oceanic Airlines,10500,6300
2025-01-19,West,Gadgets,Cyberdyne Systems,6700,4690
2025-01-27,West,Sprockets,Oceanic Airlines,3200,2240
2025-02-06,West,Widgets,Cyberdyne Systems,11200,6720
2025-02-14,West,Gadgets,Oceanic Airlines,7100,4970
2025-02-24,West,Sprockets,Cyberdyne Systems,3600,2520
2025-03-03,West,Widgets,Oceanic Airlines,12800,7680
2025-03-12,West,Gadgets,Cyberdyne Systems,7500,5250
2025-03-21,West,Sprockets,Oceanic Airlines,4000,2800
2025-03-30,West,Widgets,Cyberdyne Systems,9800,5880
1 Date Region Product Customer Revenue Cost
2 2025-01-15 North Widgets Acme Corp 12000 7200
3 2025-01-22 North Widgets Globex Inc 8500 5100
4 2025-01-08 North Gadgets Acme Corp 6200 4340
5 2025-01-30 North Gadgets Initech 4100 2870
6 2025-01-12 North Sprockets Globex Inc 3400 2380
7 2025-02-05 North Widgets Initech 11000 6600
8 2025-02-18 North Gadgets Acme Corp 7300 5110
9 2025-02-25 North Sprockets Globex Inc 2900 2030
10 2025-03-10 North Widgets Acme Corp 13500 8100
11 2025-03-19 North Gadgets Initech 5800 4060
12 2025-01-09 South Widgets Soylent Ltd 9800 5880
13 2025-01-20 South Widgets Umbrella Co 7200 4320
14 2025-01-14 South Gadgets Soylent Ltd 5500 3850
15 2025-01-28 South Sprockets Umbrella Co 2800 1960
16 2025-02-03 South Widgets Soylent Ltd 10200 6120
17 2025-02-15 South Gadgets Umbrella Co 6100 4270
18 2025-02-22 South Sprockets Soylent Ltd 3100 2170
19 2025-03-07 South Widgets Umbrella Co 8900 5340
20 2025-03-18 South Gadgets Soylent Ltd 6800 4760
21 2025-03-28 South Sprockets Umbrella Co 3500 2450
22 2025-01-06 East Widgets Wonka Industries 14200 8520
23 2025-01-17 East Widgets Stark Enterprises 11800 7080
24 2025-01-23 East Gadgets Wonka Industries 8900 6230
25 2025-01-31 East Gadgets Stark Enterprises 7400 5180
26 2025-02-10 East Widgets Wonka Industries 15000 9000
27 2025-02-20 East Sprockets Stark Enterprises 4200 2940
28 2025-02-28 East Gadgets Wonka Industries 9200 6440
29 2025-03-05 East Widgets Stark Enterprises 12500 7500
30 2025-03-14 East Sprockets Wonka Industries 4800 3360
31 2025-03-25 East Gadgets Stark Enterprises 8100 5670
32 2025-01-11 West Widgets Oceanic Airlines 10500 6300
33 2025-01-19 West Gadgets Cyberdyne Systems 6700 4690
34 2025-01-27 West Sprockets Oceanic Airlines 3200 2240
35 2025-02-06 West Widgets Cyberdyne Systems 11200 6720
36 2025-02-14 West Gadgets Oceanic Airlines 7100 4970
37 2025-02-24 West Sprockets Cyberdyne Systems 3600 2520
38 2025-03-03 West Widgets Oceanic Airlines 12800 7680
39 2025-03-12 West Gadgets Cyberdyne Systems 7500 5250
40 2025-03-21 West Sprockets Oceanic Airlines 4000 2800
41 2025-03-30 West Widgets Cyberdyne Systems 9800 5880

185
examples/demo.improv Normal file
View File

@ -0,0 +1,185 @@
# Acme Sales Demo
## Category: _Index
## Category: _Dim
## Category: Customer
- Soylent Ltd
- Umbrella Co
- Acme Corp
- Stark Enterprises
- Globex Inc
- Cyberdyne Systems
- Initech
- Wonka Industries
- Oceanic Airlines
## Category: Date
- 2025-01-23
- 2025-01-14
- 2025-02-03
- 2025-03-19
- 2025-01-08
- 2025-02-05
- 2025-02-25
- 2025-03-18
- 2025-01-27
- 2025-03-03
- 2025-01-12
- 2025-01-22
- 2025-03-10
- 2025-02-10
- 2025-02-28
- 2025-03-25
- 2025-01-11
- 2025-01-20
- 2025-03-05
- 2025-01-06
- 2025-02-18
- 2025-02-22
- 2025-02-06
- 2025-02-14
- 2025-01-09
- 2025-03-07
- 2025-03-21
- 2025-01-31
- 2025-01-30
- 2025-02-20
- 2025-01-19
- 2025-01-15
- 2025-03-14
- 2025-02-24
- 2025-01-28
- 2025-03-12
- 2025-02-15
- 2025-03-30
- 2025-01-17
- 2025-03-28
## Category: Product
- Sprockets
- Widgets
- Gadgets
## Category: Region
- North
- East
- West
- South
## Category: Date_Month
- 2025-01
- 2025-02
- 2025-03
## Category: Measure
- Cost
- Revenue
## Formulas
- Profit = Revenue - Cost [Measure]
## Data
Customer=Acme Corp, Date=2025-01-08, Date_Month=2025-01, Measure=Cost, Product=Gadgets, Region=North = 4340
Customer=Acme Corp, Date=2025-01-08, Date_Month=2025-01, Measure=Revenue, Product=Gadgets, Region=North = 6200
Customer=Acme Corp, Date=2025-01-15, Date_Month=2025-01, Measure=Cost, Product=Widgets, Region=North = 7200
Customer=Acme Corp, Date=2025-01-15, Date_Month=2025-01, Measure=Revenue, Product=Widgets, Region=North = 12000
Customer=Acme Corp, Date=2025-02-18, Date_Month=2025-02, Measure=Cost, Product=Gadgets, Region=North = 5110
Customer=Acme Corp, Date=2025-02-18, Date_Month=2025-02, Measure=Revenue, Product=Gadgets, Region=North = 7300
Customer=Acme Corp, Date=2025-03-10, Date_Month=2025-03, Measure=Cost, Product=Widgets, Region=North = 8100
Customer=Acme Corp, Date=2025-03-10, Date_Month=2025-03, Measure=Revenue, Product=Widgets, Region=North = 13500
Customer=Cyberdyne Systems, Date=2025-01-19, Date_Month=2025-01, Measure=Cost, Product=Gadgets, Region=West = 4690
Customer=Cyberdyne Systems, Date=2025-01-19, Date_Month=2025-01, Measure=Revenue, Product=Gadgets, Region=West = 6700
Customer=Cyberdyne Systems, Date=2025-02-06, Date_Month=2025-02, Measure=Cost, Product=Widgets, Region=West = 6720
Customer=Cyberdyne Systems, Date=2025-02-06, Date_Month=2025-02, Measure=Revenue, Product=Widgets, Region=West = 11200
Customer=Cyberdyne Systems, Date=2025-02-24, Date_Month=2025-02, Measure=Cost, Product=Sprockets, Region=West = 2520
Customer=Cyberdyne Systems, Date=2025-02-24, Date_Month=2025-02, Measure=Revenue, Product=Sprockets, Region=West = 3600
Customer=Cyberdyne Systems, Date=2025-03-12, Date_Month=2025-03, Measure=Cost, Product=Gadgets, Region=West = 5250
Customer=Cyberdyne Systems, Date=2025-03-12, Date_Month=2025-03, Measure=Revenue, Product=Gadgets, Region=West = 7500
Customer=Cyberdyne Systems, Date=2025-03-30, Date_Month=2025-03, Measure=Cost, Product=Widgets, Region=West = 5880
Customer=Cyberdyne Systems, Date=2025-03-30, Date_Month=2025-03, Measure=Revenue, Product=Widgets, Region=West = 9800
Customer=Globex Inc, Date=2025-01-12, Date_Month=2025-01, Measure=Cost, Product=Sprockets, Region=North = 2380
Customer=Globex Inc, Date=2025-01-12, Date_Month=2025-01, Measure=Revenue, Product=Sprockets, Region=North = 3400
Customer=Globex Inc, Date=2025-01-22, Date_Month=2025-01, Measure=Cost, Product=Widgets, Region=North = 5100
Customer=Globex Inc, Date=2025-01-22, Date_Month=2025-01, Measure=Revenue, Product=Widgets, Region=North = 8500
Customer=Globex Inc, Date=2025-02-25, Date_Month=2025-02, Measure=Cost, Product=Sprockets, Region=North = 2030
Customer=Globex Inc, Date=2025-02-25, Date_Month=2025-02, Measure=Revenue, Product=Sprockets, Region=North = 2900
Customer=Initech, Date=2025-01-30, Date_Month=2025-01, Measure=Cost, Product=Gadgets, Region=North = 2870
Customer=Initech, Date=2025-01-30, Date_Month=2025-01, Measure=Revenue, Product=Gadgets, Region=North = 4100
Customer=Initech, Date=2025-02-05, Date_Month=2025-02, Measure=Cost, Product=Widgets, Region=North = 6600
Customer=Initech, Date=2025-02-05, Date_Month=2025-02, Measure=Revenue, Product=Widgets, Region=North = 11000
Customer=Initech, Date=2025-03-19, Date_Month=2025-03, Measure=Cost, Product=Gadgets, Region=North = 4060
Customer=Initech, Date=2025-03-19, Date_Month=2025-03, Measure=Revenue, Product=Gadgets, Region=North = 5800
Customer=Oceanic Airlines, Date=2025-01-11, Date_Month=2025-01, Measure=Cost, Product=Widgets, Region=West = 6300
Customer=Oceanic Airlines, Date=2025-01-11, Date_Month=2025-01, Measure=Revenue, Product=Widgets, Region=West = 10500
Customer=Oceanic Airlines, Date=2025-01-27, Date_Month=2025-01, Measure=Cost, Product=Sprockets, Region=West = 2240
Customer=Oceanic Airlines, Date=2025-01-27, Date_Month=2025-01, Measure=Revenue, Product=Sprockets, Region=West = 3200
Customer=Oceanic Airlines, Date=2025-02-14, Date_Month=2025-02, Measure=Cost, Product=Gadgets, Region=West = 4970
Customer=Oceanic Airlines, Date=2025-02-14, Date_Month=2025-02, Measure=Revenue, Product=Gadgets, Region=West = 7100
Customer=Oceanic Airlines, Date=2025-03-03, Date_Month=2025-03, Measure=Cost, Product=Widgets, Region=West = 7680
Customer=Oceanic Airlines, Date=2025-03-03, Date_Month=2025-03, Measure=Revenue, Product=Widgets, Region=West = 12800
Customer=Oceanic Airlines, Date=2025-03-21, Date_Month=2025-03, Measure=Cost, Product=Sprockets, Region=West = 2800
Customer=Oceanic Airlines, Date=2025-03-21, Date_Month=2025-03, Measure=Revenue, Product=Sprockets, Region=West = 4000
Customer=Soylent Ltd, Date=2025-01-09, Date_Month=2025-01, Measure=Cost, Product=Widgets, Region=South = 5880
Customer=Soylent Ltd, Date=2025-01-09, Date_Month=2025-01, Measure=Revenue, Product=Widgets, Region=South = 9800
Customer=Soylent Ltd, Date=2025-01-14, Date_Month=2025-01, Measure=Cost, Product=Gadgets, Region=South = 3850
Customer=Soylent Ltd, Date=2025-01-14, Date_Month=2025-01, Measure=Revenue, Product=Gadgets, Region=South = 5500
Customer=Soylent Ltd, Date=2025-02-03, Date_Month=2025-02, Measure=Cost, Product=Widgets, Region=South = 6120
Customer=Soylent Ltd, Date=2025-02-03, Date_Month=2025-02, Measure=Revenue, Product=Widgets, Region=South = 10200
Customer=Soylent Ltd, Date=2025-02-22, Date_Month=2025-02, Measure=Cost, Product=Sprockets, Region=South = 2170
Customer=Soylent Ltd, Date=2025-02-22, Date_Month=2025-02, Measure=Revenue, Product=Sprockets, Region=South = 3100
Customer=Soylent Ltd, Date=2025-03-18, Date_Month=2025-03, Measure=Cost, Product=Gadgets, Region=South = 4760
Customer=Soylent Ltd, Date=2025-03-18, Date_Month=2025-03, Measure=Revenue, Product=Gadgets, Region=South = 6800
Customer=Stark Enterprises, Date=2025-01-17, Date_Month=2025-01, Measure=Cost, Product=Widgets, Region=East = 7080
Customer=Stark Enterprises, Date=2025-01-17, Date_Month=2025-01, Measure=Revenue, Product=Widgets, Region=East = 11800
Customer=Stark Enterprises, Date=2025-01-31, Date_Month=2025-01, Measure=Cost, Product=Gadgets, Region=East = 5180
Customer=Stark Enterprises, Date=2025-01-31, Date_Month=2025-01, Measure=Revenue, Product=Gadgets, Region=East = 7400
Customer=Stark Enterprises, Date=2025-02-20, Date_Month=2025-02, Measure=Cost, Product=Sprockets, Region=East = 2940
Customer=Stark Enterprises, Date=2025-02-20, Date_Month=2025-02, Measure=Revenue, Product=Sprockets, Region=East = 4200
Customer=Stark Enterprises, Date=2025-03-05, Date_Month=2025-03, Measure=Cost, Product=Widgets, Region=East = 7500
Customer=Stark Enterprises, Date=2025-03-05, Date_Month=2025-03, Measure=Revenue, Product=Widgets, Region=East = 12500
Customer=Stark Enterprises, Date=2025-03-25, Date_Month=2025-03, Measure=Cost, Product=Gadgets, Region=East = 5670
Customer=Stark Enterprises, Date=2025-03-25, Date_Month=2025-03, Measure=Revenue, Product=Gadgets, Region=East = 8100
Customer=Umbrella Co, Date=2025-01-20, Date_Month=2025-01, Measure=Cost, Product=Widgets, Region=South = 4320
Customer=Umbrella Co, Date=2025-01-20, Date_Month=2025-01, Measure=Revenue, Product=Widgets, Region=South = 7200
Customer=Umbrella Co, Date=2025-01-28, Date_Month=2025-01, Measure=Cost, Product=Sprockets, Region=South = 1960
Customer=Umbrella Co, Date=2025-01-28, Date_Month=2025-01, Measure=Revenue, Product=Sprockets, Region=South = 2800
Customer=Umbrella Co, Date=2025-02-15, Date_Month=2025-02, Measure=Cost, Product=Gadgets, Region=South = 4270
Customer=Umbrella Co, Date=2025-02-15, Date_Month=2025-02, Measure=Revenue, Product=Gadgets, Region=South = 6100
Customer=Umbrella Co, Date=2025-03-07, Date_Month=2025-03, Measure=Cost, Product=Widgets, Region=South = 5340
Customer=Umbrella Co, Date=2025-03-07, Date_Month=2025-03, Measure=Revenue, Product=Widgets, Region=South = 8900
Customer=Umbrella Co, Date=2025-03-28, Date_Month=2025-03, Measure=Cost, Product=Sprockets, Region=South = 2450
Customer=Umbrella Co, Date=2025-03-28, Date_Month=2025-03, Measure=Revenue, Product=Sprockets, Region=South = 3500
Customer=Wonka Industries, Date=2025-01-06, Date_Month=2025-01, Measure=Cost, Product=Widgets, Region=East = 8520
Customer=Wonka Industries, Date=2025-01-06, Date_Month=2025-01, Measure=Revenue, Product=Widgets, Region=East = 14200
Customer=Wonka Industries, Date=2025-01-23, Date_Month=2025-01, Measure=Cost, Product=Gadgets, Region=East = 6230
Customer=Wonka Industries, Date=2025-01-23, Date_Month=2025-01, Measure=Revenue, Product=Gadgets, Region=East = 8900
Customer=Wonka Industries, Date=2025-02-10, Date_Month=2025-02, Measure=Cost, Product=Widgets, Region=East = 9000
Customer=Wonka Industries, Date=2025-02-10, Date_Month=2025-02, Measure=Revenue, Product=Widgets, Region=East = 15000
Customer=Wonka Industries, Date=2025-02-28, Date_Month=2025-02, Measure=Cost, Product=Gadgets, Region=East = 6440
Customer=Wonka Industries, Date=2025-02-28, Date_Month=2025-02, Measure=Revenue, Product=Gadgets, Region=East = 9200
Customer=Wonka Industries, Date=2025-03-14, Date_Month=2025-03, Measure=Cost, Product=Sprockets, Region=East = 3360
Customer=Wonka Industries, Date=2025-03-14, Date_Month=2025-03, Measure=Revenue, Product=Sprockets, Region=East = 4800
## View: Default (active)
_Index: none
_Dim: none
Customer: page, Oceanic Airlines
Date: none
Product: row
Region: row
Date_Month: column
Measure: column
format: ,.0
## View: _Drill
_Index: row
_Dim: column
Customer: page, Oceanic Airlines
Date: none
Product: page, Widgets
Region: page, West
Date_Month: page, 2025-01
Measure: page, Cost
format: ,.0