Tableau is the best tool for doing visual analysis, building jaw dropping dashboards, and telling great stories. Yet I’m guessing Tableau can do a lot more. In this blog, I’m trying to find out if Tableau is also suitable for different tasks, such as:
- Can you use it for invoicing?
- Can you re-create your bank statements
- Can it do the dishes?
Well, probably not the last one. Let’s find out if I can use Tableau to create invoices.
First thing I need, of course, is data. I would like to make a distinction among three types of data: fixed, occasionally changing, and volatile. Fixed data rarely changes. Examples would be the business address or bank account number. Occasionally changing data is data such as a customer's address or an hourly rate. The last type of data -- volatile data -- is different on each invoice. For example, the hours worked and the invoice date.
First, let’s look at the data structure. For now, it is a simple one: three tables with the three types of data.
Fixed:
CompanyName | AddressLine#1 | AddressLine#2 | Phone | Website |
bbgdesignstudio | 100 denniston ave. #434 | pittaburgh, pa 15206 | 4.125.126.294 | bbgdesignstudio.com |
Occasionally changed:
ClientName | JobNumber | AddressLine#1 | AddressLine#2 | Phone |
Via Boutique | VB0030 | 2720 Sidney St. | Pittsburgh, PA 15203 | 4.124.318.000 |
Volatile:
Invoice# | InvoiceDate | Item | Description | Qty | Price |
12345 | 15-Sep | Web Design | 1 concept | 5 | 1200 |
12345 | 15-Sep | Web Design | Flash/HTML | 2800 |
Next up, the design. I need to choose the correct size for the dashboard. Most invoices are on A4 so I choose A4 Portrait (827 x 1169). You can break down the dashboard page into three main areas: top, middle and bottom. I will start with a vertical lay-out container. To help identify the layout containers in this design stage, I find it helpful to show a colored border. I use a horizontal layout container for the top, a vertical layout container for the middle, and again a horizontal container for the bottom. My invoice design now looks like this:
Then, adding the two horizontal lines to the invoice is easy. If you are unfamiliar with how to create horizontal lines, please read Timothy’s blog post on the topic: biztory.com/nl/2016/12/06/tableau-tip-easy-lines-dashboard/
Once the lines have been added the top can be build. Because your invoices probably have a different top than this one, I will leave it to you how to organize the horizontal and vertical lay-out containers. In this example this is the top without data:
Now, let's add the data items. The first one is date, and it's straightforward. Just add "Invoice Date" to the "Text" mark, change it to exact date, and hide the title.
The next section is client information. This is a bit harder because it consists of more lines. The easiest way is to deal with this is to add all lines to columns. Your first result will look like this:
Now format it. Hide title, hide field levels for columns, set mark to polygon, set row divider and column divider to none and align the header to left. Finally, add the data items to the header and it’s done.
Using the same steps, I'll build the footer.
The only thing left to do is to build the middle. The middle section is all data. I need to create two sheets: one with detail lines and one with summary. To create the detail lines, drag all the items needed to the rows. Make sure they are all set to discrete. This should be the result:
The first issue you will notice is that the item value is not repeated. Instead of grouping on “Web Design,” I want it every row. One way to “trick” Tableau into repeating the item is by adding a calculated field with INDEX() set to discrete and placing it as the first pill on the Rows shelf.
Now hide the index field, set marks to polygon, and remove row and column dividers.
For the summary, we simply create new calculated fields for every item in the summary and add them to the summary view. Format it to create the same look, and it’s done!
Now let’s add the final views to the dashboard, using horizontal and vertical layout containers and blanks to align. There you have it: an invoice completely built, from data, in Tableau.
Of course, there is the opportunity to make further improvements. We could make the customer and month user-selectable, create a parameter to add an invoice number, etc. We can also print or save the dashboard as PDF (making sure all sheets are hidden), and we can directly invoice our customers.
So, in answer to the question: "Can you use Tableau for invoicing?" My verdict: YES!