Save Time with Custom Themes! Guest Blog Post by Caroline Swiger

Hey #DataFam! Let’s give a warm welcome to our guest blogger this month, Caroline Swiger! We’re excited to feature her fantastic write-up on Custom Themes—a must read! Dive in and enjoy Caroline’s insights!

Save Time with Custom Themes!

Are you constantly looking for ways to save time?  I think the answer for most of us is a resounding yes – in life, work, & vizzing!  I have been (not-so) patiently waiting for Custom Themes since #TC24, and with Tableau 2025.1, it is finally here!  Read on to hear about my first experience with this new feature!

What are themes?

Themes refers to all stylistic and formatting choices made within a workbook. “Themes” have existed in Tableau for some time, but they never really did what people wanted, and have been largely ignored.

Most of my workbooks, particularly at work, begin with time spent formatting the workbook.  I change the default font & sizes, turn off grid lines, & turn on a thicker zero line.  It is a small investment that saves me time, but one that I repeat for every dashboard.  The formatting options at the workbook level are also limited; I always find myself spending considerable time formatting throughout the viz process, from tooltips to charts to the dashboard itself.

What are Custom Themes?

The Tableau Desktop & Web Authoring guide describes custom themes as the ability to quickly apply formatting choices like fonts and colors to an entire Tableau workbook via a JSON file. 

What style elements are supported?

There are 20 style elements available in Tableau that are currently supported for custom themes in Tableau 2025.1. They include:

Style ElementDescriptionStyle Attributes
allFormats all fonts across the entire workbook.Font – color
Font – family
worksheetFormats the worksheet default font.Font – color
Font – family
Font – size
worksheet-titleFormats the worksheet title font.Font – color
Font – family
Font – size
tooltipFormats the tooltip font.Font – color
Font – family
Font – size
dashboard-titleFormats the dashboard title.Font – color
Font – family
Font – size
story-titleFormats the story title font.Font – color
Font – family
Font – size
headerFormats the header font.Font – color
Font – family
legendFormats the legend body font & background color.Font – color
Font – family
Font – size
Background – color
legend-titleFormats the legend title font on all worksheets.Font – color
Font – family
Font – size
filterFormats the filter body font & background color on all worksheets.Font – color
Font – family
Font – size
Background – color
filter-titleFormats the filter title font on all worksheets.Font – color
Font – family
Font – size
parameter-ctrlFormats the parameter body font & background color on all worksheets.Font – color
Font – family
Font – size
Background – color
parameter-ctrl-titleFormats the parameter control title font on all worksheets.Font – color
Font – family
Font – size
highlighterFormats the highlighter body font & background color on all worksheets.Font – color
Font – family
Font – size
Background – color
highlighter-titleFormats the highlighter control title font on all worksheets.Font – color
Font – family
Font – size
page-ctrl-titleFormats the page card title font on all worksheets.Font – color
Font – family
gridlineFormats the gridlines on a view.Line – visibility
Line – pattern
Line – width
Line – color
zero lineFormats the zero line on a viewLine – visibility
Line – pattern
Line – width
Line – color
markFormats the mark color on a view.Mark – color
viewFormats the background color on a view. 

Source: Tableau Desktop & Web Authoring Help

Action plan!

The Tableau documentation online includes example code that could be used to create the JSON custom theme file.  My background is not coding-heavy, so I decided to:

  1. Create a simple viz using style elements supported with custom themes,
  2. Export my own custom theme, &
  3. Import it to a new workbook to see how well it worked!

Step 1: Format worksheet

Here is the simple Superstore worksheet I created:

Style choices made at the workbook-level (those supported by custom themes have a ✅!):

  • Workbook font: Poppins ✅
  • Grid Lines: Off ✅
  • Zero Lines: Solid Line✅, 1px✅, #1b1b1b✅

Style choices made in the worksheet:

  • Worksheet title: 18pt ✅, #333333✅
  • SUM(Sales) Axis: #1b1b1b, Ticks – none, Numbers: Currency (Custom)
  • Category Header: 11pt, #1b1b1b
  • Color legend: Title – 11pt✅, #1b1b1b✅; Body – 11pt✅, #1b1b1b✅
  • Filter and Set Control: Title – 12pt✅, #1b1b1b✅; Body – 11pt✅, #1b1b1b✅
  • Tooltips: 12pt✅, #1b1b1b✅, Bold variables

Admittedly, this is not an extensive list of formatting choices on my part – just 23; 27 if you include the tab in the tooltip, deselecting the command buttons & allow selection by category options, & choosing to show tooltips on hover.  I anticipated that custom themes would cover 17 of them – not too shabby if all went well.

Step 2: Export custom theme

After formatting my worksheet, I went to Format > Export Custom Theme… and saved it in My Tableau Repository as ‘Custom Theme 1.json’ (original 😂).

Step 3: Recreate worksheet in new workbook & import custom theme

I opened a fresh workbook & recreated the basic view without adjusting any of the default formatting.

Then, I went to Format > Import Custom Theme… and selected ‘Custom Theme 1.json’ from the list.

When the Apply Custom Theme message popped up, I clicked Override.

Drum roll, please…

And here is the resulting worksheet with my very first custom theme applied!

So how did it do?

Style ElementSuccess?
Workbook font = Poppins
Grid lines = off
Zero line = solid
Zero line = 1pt
Zero line = #1b1b1b
Worksheet-title = 18ptFont size remained default 15pt
Worksheet-title = #1b1b1b
Color legend (title) = 11pt
Color legend (title) = #1b1b1b
Color legend (body) = 11pt
Color legend (body) = #1b1b1b
Filter & set control (title) = 11pt
Filter & set control (title) = #1b1b1b
Filter & set control (body) = 11pt
Filter & set control (body) = #1b1b1b
Tooltip font = 12ptFont size remained default 10pt
Tooltip font = #1b1b1bPartial credit? The headers remained the default gray but the variables were #1b1b1b (maybe this is all it applies to?)
But extra credit for maintaining my tab! I will take it!

I looked at the troubleshooting guide because it was probably me & not Tableau 😉.

Aha! The key is to use the formatting pane:

I exported & imported again with success!  17/17 expected style elements present!

Hey, look! Now my highly original name for my very first custom theme appears in the list of options!  Neat!

Final thoughts

I am excited about the initial release of custom themes and pumped for my organization to upgrade to 2025.1 so I can create my standard template go-to.  What may have been 20+ clicks is now just one, and that is awesome.

Custom themes may not be a radical time saver yet, but it has so much potential.  Can you imagine if you were able to choose more of your own defaults?  Sit down to start a viz and import a theme where all the styling is suited to your preferences, down to the charts?  I can hear a choir of angels singing now…

Note from Sarah:

Thanks to Caroline this comprehensive guide on Custom Themes! If you’re interested in connecting with Caroline, you can find her on LinkedIn or Tableau Public. I especially love her #VizoftheDay about UFO Sightings!

Happy Vizzing!

Interactive Text Tables with Custom Sort Order

Make your text tables on dashboards shine with an easy, interactive, custom sort order feature. 

The concept is simple: give your dashboard viewers a handy-dandy drop-down menu so they can sort their table with the rows of most importance to them at the top.  I deployed this technique on my Help Desk Dashboard – click here to see it in action.

Begin by building your text table and determining the various ways in which the table can be sorted. For my Help Desk Dashboard, I chose Ticket Priority, # of Days Open, and Ticket Number. I also wanted to be sure the table always defaulted to show the rows by Ticket Number when the workbook is opened. Once you’ve established these values, you can create a calculation to set the default value and a parameter with the list of sort options.

Note the Default Sort Order calculation appears in the “Value when workbook opens” spot in the parameter.

Once the parameter is created, you can show the parameter and take a sneak peak at the appearance of the toggle.  

Looks good! We are now ready for our next step, which requires us to use this parameter in a calculation.  A CASE statement works beautifully in this step. 

With this calculation, we are asking Tableau to do the following:

When the toggle is set to Priority, Tableau will check the Priority ID and sort by this value. For your reference, the Priority ID in this dataset assigns High Priority the value of 20, Medium is 30, and Low is 40. For the rows to be listed from High to Low, we will want to use this calculation in Ascending Order: 20-30-40  (Tuck away that thought for later!)

When the toggle is set to # of Days Open, we want Tableau to reference a calculation by the same name that counts the difference in days between Created Date and Closed Date, or in the case of tickets still open, the difference between Created Date and Today. Now, recall that we will be using this calculation in Ascending Order per the note above regarding Priority. This means we must place a negative sign in front of # of Days Open in order for the tickets with the longest # of days open to appear at the top. For example, if a ticket has been opened for 35 days, it will appear above a ticket that has only been opened for 2 days if we assign it a negative value (ascending order is -35 then -2). 

And last but not least, when the toggle is set to Ticket Number, we want Tableau to return a 0. Why? We built our text table with Ticket Number as the first value on the Rows shelf, so Tableau will use this value to sort the orders because our Sort Order calculation assigns a 0 to all rows in this setting.

Last but not least, we need to activate this calculation by accessing the drop-down from the Ticket Number field on the rows shelf > Sort and follow the prompts to select the Sort Order field and Ascending order. 

So there you have it – with a couple of calculations and one parameter, you can add interactivity to your text table and give the dashboard viewer the control to see the rows of data in the order most relevant to them! 

Feel free to download my viz on Tableau Public and take a look under the hood! 

Happy Vizzing! 

Dashboard toggles made easy with Tableau’s Single Checkbox Parameter Dashboard Extension

Toggle buttons are a great way to add interactivity to a dashboard, and Tableau’s Single Checkbox Parameter dashboard extension is a quick & easy way to do so! 

A few months ago, I came across a twitter post by Fredrick Frey that referenced this technique, which inspired me to give it a try. You can check out Fredrick’s ‘Fix the Bruce!, Australia’s most dangerous road’ viz here.

This got me thinking: if this dashboard extension is new to me, it may be new to others as well. And with that idea, a blog post was born! 

Before we jump into the “how-to” part of this blog post, there are two things you should know. 

First, a note about the name. “Single Checkbox Parameter” is slightly misleading. It can be a checkbox, but it can also be displayed as a toggle button as shown in Fredrick’s viz and the method I chose for my viz as well. The key point to emphasize is that this extension allows for single selection only, meaning only one item can be true at any given time.

Second, you may be wondering what exactly are dashboard extensions anyway??? Dashboard extensions allow you to add features to a dashboard as you would add standard objects to a dashboard, and can be found in the left bottom corner of the Dashboard pane, under “Objects’.

When you drag the Extension object on to a dashboard, a dialog box appears. I used the search box to find the Single Checkbox Parameters extension. Click on this item and follow the prompts to add it to your dashboard.  

In the case of the Single Checkbox Parameter, you will need a parameter set up before adding the extension to your dashboard. Let’s take a closer look at how I did this for my Ohtani vs Top Home Run Hitters viz. For this dashboard, I wanted the audience to have the ability to show or hide the Top 40 Club. To do this, I created a parameter [Show 40-40 Club?] with a string data type and a specific List of Allowable Values. You’ll notice in this screenshot the first item in my list is actually a space, instead of ‘Show 40-40’. I used a blank space to accommodate formatting choices later on in the design process. 

Next, I used this parameter in a calculated field, and placed this calculation on the Filter Shelf set to Show.

With these items in place, I was now ready to add this sheet to my dashboard, along with the Single Checkbox Parameter extension object. Following the prompts, Tableau will ask you to confirm the parameter you wish to use.

Tableau also provides you with some options to customize the appearance of the extension. This is where you will find the option to choose between the checkbox or the toggle. I chose to display the parameter name, toggle style, and selected a white background with grey text color.

Presto! A toggle button that adds interactivity without having to create a custom shape or image.

Feel free to download my workbook if you’re interested in reverse engineering this solution. If you are curious to learn more about dashboard extensions, you can check out this page on Tableau’s website or this blog post by Ewald Hofman and Wilson Po.

Happy Vizzing! 

Databricks Data Analyst Exam prep as easy as 1, 2, 3!

Earlier this year, I had the opportunity to take the Databricks Certified Data Analyst Associate exam, and I’m thrilled to share that I passed! Preparing for the exam gave me a chance to strengthen my skills in SQL and deepen my understanding of data storage, cleaning, and shaping.

If you’re looking to expand your skill set in the New Year, read on for my top three tips to help you prepare for and pass the exam.

    1. Learn the fundamentals

    Everything you need to know is listed here in the exam guide. Databricks recommends registering for Instructor-led training or self-paced training available through their Databricks Academy. I chose to do the self-paced modules and found it extremely helpful. 

    2. Practice, practice, practice

    If you have access to a Sandbox environment, tap into it!  This is the fun part of learning – playing with the tool (they call it ‘sandbox’ for a reason!) I also highly recommend taking some practice exams – Udemy has some excellent ones – as this will help you become familiar with the style of questions on the exam. Multiple choice questions can have some tricky wording so a little preparation in this regard can go a long way.

    3. Find your tribe

    Form a study group with some colleagues or find an accountability study partner to keep you on track. Meet once a week to check-in on progress, share notes, ask clarifying questions. Knowledge sharing in this capacity can lift each other up! 

    Good luck and be sure to share your badge when you successfully pass the exam. Happy studying, and Happy New Year! May 2025 bring you health, happiness, and all the best data!

    Sarah.

    Hello, Tableau Tables!

    With the latest 2024.3 release, Tableau has rolled out a new viz extension called, “Tableau Table”.  I took it for a spin and was delighted to find some very exciting features!  Here’s a quick walkthrough with some key differentiators that make this viz extension a game-changer.

    To begin, you can access this feature by clicking on the Marks Card on a new sheet, and selecting +Add Extension.

    A dialog box will open and you will find it listed under the ones “Built by Tableau + Salesforce”.

    Once you click on Tableau Table, a window appears with additional information. Click Open to proceed. We are now ready to begin building our table.  

    Begin building your table by dragging both the dimensions and measures to the details card. You can add them in any order you wish – measures can be before or after dimensions.  This is pretty revolutionary.  With a traditional crosstab build, all dimensions must be on rows, and therefore appear on the left in the table “header”. Measure Names would be on columns with Measure Values on text, forcing all measures to appear to the left of the dimensions. I’ve come across several real-world examples when there has been a need for a dimension to be mixed in together with measures. In this use case example, you can see I’ve placed Ship Date (a dimension) after SUM(Sales) (a measure). 

    You can rename column headers to be more intuitive. In this example, I’ve renamed SUM(Sales) to Order Amt $. 

    It is also possible to format each column independently with a few easy steps. Click on the drop-down menu button beside the column name, select Format.  This opens a formatting dialog box. Here you have a few choices on how you wish the data to be displayed – for example, you can change it to be data bars, and you can apply rules to format the color and font.  Note, if you change your mind and want to revert back to the original formatting, the back arrow won’t work. You need to access the drop-down menu again and select “Clear Formatting”.  It’s also worthwhile noting there are other options here as well, including specifying how to sort the data.

    Last but not least, you can customize the overall appearance of the table by accessing the ‘format’ button on the toolbar.

    This opens a dialog box with several  options, including adding filters under each column header, and the ability to add “Show Excel Download” button.  This feature in itself is the golden nugget – in most real-world use cases, the purpose of building a text table similar to this would be to provide a validation spreadsheet for end-users.  The excel download button is a dream – with one click, the end-user has a spreadsheet AND the formatting carries over as well.   Brilliant!

    Here’s an example of my formatted Tableau Table:

    And a screenshot of the ‘downloaded to Excel’ version:

    Unfortunately it is not possible to publish this to Tableau Public (yet) but if you’d like to see my workbook with this Superstore example, I’d be more than happy to send it to you!   I think you’ll find it very intuitive and easy to build. Well done, Tableau! 

    Happy Vizzing! 

    L-Shaped Bars: Fresh take on bar charts

    Drumroll, please….! Introducing L-Shaped Bars! 

    Inspired by a viz I saw on Tableau’s Exchange (the Salesforce Admin Insights Accelerator), I decided to take a stab at building what has affectionately become known as L-Shaped bars.   It’s a clever way to address the issue of labels overlapping labels, and delivers the same punch as a regular bar chart with less ink. It’s also a great space-saver since you don’t need space on the side or top of the bar for the long string name.

    Problem: Labels overlapping labels with long string names

    Solution: L-Shaped bars with a measure label at the end of the L, and the string name in the corner of the L

    Pretty neat, eh? Feel free to download this solution from my Tableau Public profile and reverse-engineer for your purposes. To get you started, here are a few key tips:

    Tips to building L-Shaped Bars:

    Tip #1: Use Measure Names and Measure Values!  Also, make sure Measure Names is placed on the row shelf.

    Tip #2: Set the Line Path style to Step.

    Tip #3: To add the second set of labels, place a copy of Max(0) calculation on the Columns shelf (copy it from the Measure Values Shelf) to generate the dual-axis. Don’t forget to synchronize the axis! This mark type could be a line, circle, or gantt – at a later step you can adjust the size & color so that it looks seamless with the first line.  If you use a new max(0) instead of a copy, it will generate a 3rd measure name and force the label to be placed below the L-Shaped bar. 

    Tip #4: Be sure to “shrink up the rows” to tuck the labels into the corner of the L-Shape. This can be done by hovering your cursor on the line between Max(0) and Count of Orders and dragging the line up slightly.

    Tip #5: For the blue pills on the row shelf, uncheck Show Header to hide these from the view. 

    Happy to answer any questions you may have – you can message me on LinkedIn or X (formerly Twitter). Happy Vizzing! 

    Build Your Own Crosstab: from concept to final build

    My “Build Your Own Crosstab” Dashboard empowers Tableau Viewers to customize their experience by selecting and arranging the columns in their crosstab, based on their preferences. The inspiration for this dashboard came from hearing a user express frustration over not being able to reorder columns. This feedback made me pause and ask: Could this be possible? Read on to discover how this idea transformed into a fully functional solution.

    Step 1: Pen & Paper

    This dashboard began with one of my go-to techniques: pen and paper sketching. It’s not only essential for designing the layout but also for working through the technical aspects. In this case, I knew I wanted to incorporate parameters, parameter actions, and dynamic zone visibility. Figuring out how all these elements would interact took some serious brainstorming—and plenty of doodling!  Here are some examples of my early sketches: 

    Step 2: Building in Tableau

    With my wireframe sketches and notes at hand, I turned to Tableau. Once connected to Superstore data, I began building out the parameters and calculations I would need to run the dashboard. I built the necessary sheets, began the dashboard build (Horizontal and Vertical containers are key for this one!), and got to work on implementing dynamic zone visibility and parameter actions. 

    Step 3: Solicit Feedback

    With a working prototype ready, it was time to ask for feedback. I published the dashboard to Tableau Public as a hidden viz, and shared the link with trusted colleagues in the #DataFam. I also brought the concept to #VizOfficeHours, held once a week by Michelle Frayman, Nicole Klassen, and Zak Geis. Having a fresh set of eyes helped me gauge the intuitiveness & functionality. With a few minor tweaks I was able to incorporate the feedback and switched the viz’s visibility from hidden to “Show Viz on Profile”. 

    If you’d like to take the dashboard for a test drive, you can find it on my Tableau Public profile. When you explore it, you’ll notice two key features: the Date field is mandatory (with no option for “no selection”), and all values appear on every row rather than being nested by column 1, as in a traditional Tableau crosstab. These were intentional design choices I set at the start of the project. Since this is a prototype, not built to spec, I established these requirements to give myself a clear framework to work within.

    Happy Vizzing!

    The ‘help’ behind the Help Desk Dashboard

    As a data visualization consultant, having proof-of-concept dashboards is essential for discussing the types of visualizations we want—or, more importantly, don’t want—when starting a new project. The biggest challenge, however, is finding a clean, anonymized dataset to build these demo dashboards. That’s where Tableau Community Projects, like RealWorldFakeData (RWFD), come in handy. RWFD is a treasure trove of business-related datasets.  A more recent initiative, Adam Mico’s Data Mockstar, is incredibly useful as well. This ChatGPT tool allows you to specify the desired columns and it returns a dataset of randomly generated data. For my Help Desk Dashboard, I decided to take Data Mockstar for a test drive. With just a few clicks and the following prompt, I had a mock dataset in csv format ready to use for my demo dashboard.

    Brilliant! I connected Tableau Desktop to the csv file provided by Data Mockstar and began an initial data discovery to determine the best way to visualize the data (hello, bar charts). Early in the process, I realized that the analysis relies heavily on date fields—specifically, Ticket Created Date and Ticket Closed Date. The mock dataset contains two years of daily data (2023 and 2024, per my specifications), which is fine for now. However, to future-proof this dashboard, I needed to shift the rows of data so that it always includes two years up to and including today, rather than a fixed period from January 1, 2023, to December 31, 2024. Shoutout to Andy Kriebel, whose Next-Level Tableau Program inspired the set of calculations needed to perpetually shift the dates. 

    The end result? A dynamic dashboard that appears to update “live” even though the data source is a flat file generated once. You can find the dashboard on my Tableau Public profile page—feel free to download it and take a look under the hood!

    Happy Vizzing! 

    #B2VB Challenge: HBCU College Finder Text Table

    As a mom of two high schoolers, B2VB’s week 3 college-related data set caught my eye. With a plethora of higher-education choices available, wouldn’t it be great if we could generate a list of colleges based on a specific set of criteria? With this idea in mind, I decided to build a text table that could be modified based on the input provided and give the end-user the ability to sort the list based on their priorities.

    With a little “data discovery”, I found fields in the data set for In-State Tuition and Out-of-State Tuition. Bingo! Just the perfect data to put my idea into action. Afterall, isn’t Cost one of the first things families consider when making a short list of colleges?  To make the dashboard user-friendly, I decided to call this out as the first step – selecting the State you live in – using a bold font with an arrow (created in Figma). This bit of information provides the input to display either In-State or Out-of-State $$. To accomplish this, I needed to modify the data source, build a parameter, and write a calculation. 

    The Data Source

    The data set provided had the list of colleges, but no States. With a little bit of effort (thanks, Google!) I was able to add a column to indicate the State for each College. To answer the question regarding tuition (In-State vs Out-of-State), I also needed a way to provide the dashboard user with an input for the State they reside. This required adding another table to the data model – a full list of States. This was accomplished using a right join in the Data Source tab.  

    The Parameter

    Next, I created a string parameter called “Where Do You Live?” and populated it with the values from the full list of States.  

    The Calculation

    Next, I created a calculated field that uses the parameter to tell Tableau if it should pull the value for the In-State or Out-of-State tuition.  This calculated field was brought into the view as one of the measures in the text table.

    I followed similar steps for the Undergrad/Grad selector, using a parameter and calculated field to display the student population based on the dashboard user’s selection.

    Here’s a link to the final result on my Tableau Public Profile – take it for a test drive and let me know what you think! The dashboard incorporates a few other techniques as well – stay tuned for a follow up blog post with more details.

    Thank you to #Back2VizBasics and the #Datafam for these community challenges that help us stay current with our Tableau skills.

    Happy Vizzing! 

    Tableau Certified Data Analyst – Exam Resources

    Exciting news to share – I recently passed the Tableau Certified Data Analyst Exam! 

    For those of you not familiar with this certification, it is offered by Tableau and is valid for two years. Since mine had expired and my employer required it to be renewed, I found myself back in study-mode to prepare. There are several excellent resources available online – here’s a list of my go-to’s: 

    Tableau’s Exam Guide

    https://www.tableau.com/learn/certification/tableau-certified-data-analyst-exam-guide

    This link provides an overview of exam format, grading, and sections to be covered on the exam. Note: the exam is in three sections, and once you complete a section you cannot return to it later. Be sure to review each section before pressing “Finish” and moving on to the next section. The exam is closed-book, meaning you cannot search for answers online, or login to Tableau to verify.  There is one hands-on section which requires you to complete tasks within Tableau Desktop. 

    Study Guide from Learning Tableau

    This is website provides handy links to Tableau documentation for all sections of the exam. I found Domain 1 focused quite a bit on Tableau Prep and Custom SQL, so if you mainly use Tableau Desktop in your daily work, be sure to review these concepts. 

    Practice Questions and Exam Overview

    This is the perfect resource to review a sample of typical exam questions and familiarize yourself with the format. The wording of questions and multiple-choice answers can sometimes be tricky, so practicing ahead of time is well worth the effort!  During the exam I reviewed all of my answers, which was helpful as I caught a couple that needed correcting after re-reading the question.

    #Datafam blog posts from CJ Mayes, featuring Deborah Simmonds and Mehras Abdoli, and Ann Pregler


    Last but not least, this round-up would not be complete without mentioning these #Datafam links – my go-to’s for learning all things Tableau, 365 days of the year!

    Andy Kriebel

    Sqlbelle

    TableauTim

    The Flerlage Twins

    Felicia Styer

    Kim Unger

    Bridget Cogley

    Summary

    Overall, I found the experience to be challenging and reaffirming. It gave me an opportunity to brush up on some concepts I don’t use daily and it was a good test of my Tableau knowledge.  Please feel free to reach out if you are planning to take the exam  – happy to share my tips & knowledge! 

    Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

    Up ↑