I'm overhauling the reporting features of a B2B web app whose users are usually smart but not-very-technical managers in blue-collar workplaces. Report generator apps like Microsoft Reporting Services and Crystal Reports are usually targeted at more sophisticated users. Some of our users barely know how to use Excel! So I'd like to provide simple reporting workflow to guide our low-tech users to the right results.
I'm willing to trade off flexibility ("build any kind of report") for ease of use, but I can't limit to a set of canned reports because we need ability to easily add and remove columns (a competitive product offers this feature and users love it!)
So far the workflow I like best is a wizard-like approach that limits complexity at each step, like this:
- Is an existing report close to what you need? If no, keep going. Otherwise, pick an existing "canned report" and edit it.
- One row for every __________ ? Choose from a list: Year, Month, Day, Week, Customer, User, Warehouse, Product, etc. This is a "dimension" in BI terminology, but I'd avoid that term here-- too confusing. The dimension's primary key (won't use that term either!) will be the first column in the report.
- What columns? Each dimension has a default set of columns (e.g. for Product dimension the defaults may be SKU, Price, Last Month Sales). Users can rearrange (drag-and-drop) or remove columns, or add new ones from a list of applicable columns (each with a friendly name and plain-English explanation).
- What filters? Allow filtering results based on 1+ values, e.g. (SKU = 12345 or 34567) and (Customer = Acme Corp.). Ideally, allow "contains" filtering on text fields, e.g. "all customers with XYZ in their names". By default, all reports will have a Date Range filter.
- Group By / Total By _________? Show totals or not? Group results (with subtotals?) by _____ ? Show visual examples of what "group by" vs. "not group by" looks like.
- Run Report. If we can get the performance good enough, skip this step-- just populate the grid in real-time as the user picks columns and filters. Otherwise, use a button!
- What's next? Enable saving report for later use, exporting to Excel or PDF. Provide an easy way to edit columns and filters from here.
Any thoughts about how to improve this kind of workflow to allow it to be conceptually simpler for the user? Are the steps in the right order to simplify use?
Finally, custom reporting for non-technical users seems like a problem that's probably been adequately solved by smarter people than me. Any pointers to existing implementations that you think are successful?