Superstore Dashboard Project | #4 Building an Orders Table (the "hacky" way)

Orders tables are a valuable asset in any dashboard. They offer a structured, detailed view of transactions, perfect for diving deep into what’s really happening at the order level allowing you to spot anomalies, track performance trends, or filter down to specific customers. An orders table provides the granular visibility that decision-makers will love.

As mentioned back in the second part of this blog series (still calling it this), I knew early on that I wanted to include an Orders Summary page in my dashboard. My sketch included a line/ area chart which could be used to track the number of orders over time as well as the detailed orders table. However, the way I went about building this table was, well... a bit unconventional (which I refer to as being “hacky”). Instead of using Tableau’s default formatting options, I had to get creative with dummy columns, and some dashboard layout trickery to make it all work.

So let’s break down how the visuals for this page were made.

 

Part 1 - Building the Orders graph

Before diving into the table, I wanted to set the scene with a high-level view of order volume over time. This became a simple but effective area chart, showing how many orders were placed throughout the year. For this I had to create a level of aggregation for the dates as holding the data to a daily granularity level would form breaks in the graph (e.g. them not having orders on a certain day)  For this, I chose to do this to the week level to try and show the low level of granularity which would not have gaps between. Within the graph, I also decided to format the tooltips to also show the total sales and profit for that period. This small addition has the potential to bring a lot of value as users can instantly identify high-activity periods and tie that activity to revenue and profitability trends.

 

Part 2 - Building the Orders Table (a.k.a the fun Hacky bit)

Now, onto the core of the summary page - the orders table.

In Tableau, tables are essentially displaying text in the view, separated by columns and rows. Now, importing blue dimension pills such as ‘Measure Names’ into the column shelf would give us distinct columns for each of the measures used, however, this becomes an issue when we try to import dimensions such as Customers Names or Country. To solve this issue, I instead created some dummy columns which I could then go in and fill with whatever text I wanted.  

 

From there, I added in the values I would like to use for the table (OrderID & Order Date, Customer & Segment, City & Country, Sales, Profit, Profit margin) in each of the columns. Having this in this structure also meant I could add colour logic for the columns. I first coloured the OrderID & Order Date as well as the Customer & Segment column blue as this helps represent key identifier information within the table. The next set of colouring I did was on the profit and profit margin, highlighting the values red if it showed a negative number (as this indicates the order resulted in  loss which should be flagged).


 

One thing to note about the orders table is the lack of column headers within the table. The reason for this is because we made these dummy columns using inputted numbers and hence is not actually a column. To counteract this, when we build the dashboard, we can manually add text and align them with the columns to act as the headers (you will see this in the next blog as this cannot be done on the sheet, rather on the actual dashboard itself)

 

And that's it for the visuals created for the orders summary page of the dashboard. In the next and final blog of the series, I will go over how I brought everything together from combining these individual sheets to building interactivity and polishing the user experience.

Thanks for reading! 😊

Victor

Author:
Victor Yuan
Powered by The Information Lab
1st Floor, 25 Watling Street, London, EC4M 9BR
Subscribe
to our Newsletter
Get the lastest news about The Data School and application tips
Subscribe now
© 2025 The Information Lab