A recent comment on the app store caught our attention and got us thinking a bit. One user characterized DataGraph as “Powerful, customizable, and a bit quirky”.
Certainly we like being called powerful and customizable, but we weren’t sure quirky was a good thing. This comment got me thinking about what may have seemed different or quirky to me when I first started using DataGraph about five years ago.
“Powerful, customizable, a bit quirky”
by zfirst, App Store Reviewer
Prior to DataGraph, I had a lot of experience using spreadsheets and databases for organizing and processing data. I used spreadsheets for many years but found the freeform nature of spreadsheets was a problem with larger datasets. Moving to databases solved many of the problems I had with spreadsheets, but the table structure could be limiting.
The way data is organized in DataGraph is very different from spreadsheets and databases. In general, DataGraph is more structured than a spreadsheet, but more flexible than a database.
In this post, we will compare DataGraph to spreadsheets and databases, with a focus on how data is organized and some benefits of this approach.
Spreadsheets and DataGraph
At first glance, the DataGraph data table looks similar to a spreadsheet. There are columns of data with a header; however, the data table is very different than a spreadsheet.
In DataGraph, your data is much more structured. Data is organized in columns with names you specify. Rows get added when you add more data. You manipulate data in terms of entire columns or rows, rather than cells or cell ranges.
This leads us to the concept of ‘granularity’. You can think of granularity as the smallest unit that you use to refer to data. In a spreadsheet, the granularity is a single cell. In DataGraph, the granularity is the column.
Using columns as the fundamental unit for storing data makes formulas easier to create and understand. No need to have each cell contain individual formulas. Calculations are done on entire columns.
DataGraph also contains a number of column properties for commonly used calculations. For example, the following video demonstrates how to calculate a running sum for a column using the ‘isum’ property of the column.
As demonstrated above, the Running Sum column is calculated by adding an Equation column to the column definition list on the left side of the screen. The equation is simply the name of the column followed by ‘.isum’. Using this approach is fast and ensures that every row is calculated correctly, even when we add more data.
Compare this to a spreadsheet where a running sum equation for the example sheet above would have the following equations: D3=C3, D4=C4+D3, D5=C5+D4, and D6=C6+D5. If you added more data you also have to add more equations.
Of course there are somethings that you can do in a spreadsheet that are difficult or impossible in DataGraph. If you want each cell to have different color shading or outlines you could not do this in DataGraph. Decidedly, DataGraph is geared toward to visualizing large data sets in graphical form, rather than in table view.
DataBases and DataGraph
For larger datasets, databases have an advantage over spreadsheets. Databases, specifically relational databases, impose a table structure. This can be an improvement over the freeform approach of spreadsheets; however, not all data fits well into this format. Moving datasets in and out of databases can also be a challenge.
Databases are similar to DataGraph in that calculations are also done on entire columns of data and you can specify column names. The big difference is that DataGraph does not impose a specific table structure.
In databases, data is organized in tables where every column in the table has to have the same number of rows. In DataGraph, data is organized in groups, that can be viewed simultaneously, where every column can have its own length.
Many databases also have a relational structure, where tables have a relationship based on some key variables. In DataGraph, data is organized in groups that can be nested in multiple levels, creating a hierarchical approach to managing your data.
Similar to a relational database, you can make connections between data groups using a Map column, which allows you to lookup items in a list based on a key value. This approach is similar to a query, but there is no need to compose and run an SQL statement. See the DataGraph on-line help for more information on Map columns.
Data groups also make it easy to replace data used in a graph. In the following example, there are two data groups with columns called ‘Day’ and ‘Amount’. Note how the data is updated by simply dragging and dropping the groups contents on the command that is plotting the data.
Using groups makes it easy to reuse commands and graphics. If your data changes it can easily be updated with a simple drag and drop.
The Design of DataGraph
The foundational structure of a program will determine which functionality is easy or difficulty to implement and understand. DataGraph is not trying to clone a spreadsheet program or be a new type of database.
DataGraph has a unique approach that includes the strengths of spreadsheets and databases. In particular, DataGraph has a design structure that makes many operations that are difficult to express in spreadsheets more intuitive, especially for large datasets.
So yes – DataGraph is different and some aspects of the program may seem unusual, unexpected, and even a bit quirky. To end this post, I thought it would be fitting to provide the full review that inspired it.
“This app is a godsend after struggling with the many data-display shortcomings of Excel and Numbers. It lets you customize nearly every aspect of your outputs, and with a refreshing layers-style interface for controlling and formatting each visual element. As other reviewers have noted, the interface elements are quirky and often nonstandard. But the rewards of spending a bit of time to master this app are vast.”