Everything you need to know about the #DataDev Challenges

Between April and July 2020, you have may have noticed the excitement over a new series of challenges hosted by the Tableau Developer Team. In April, Tableau announced the DataDev Challenges! Every other week a new theme was announced, each with it’s own trio of challenges, focusing on projects in extensibility, automation/integration and embedding Tableau.

Not only could you come out of the challenges with new knowledge, Tableau even provided swag for completionists. Complete level 1 of a challenge, you get a #DataDev sticker pack, level 2 will get you an exclusive #DataDev water bottle and submitting a level 3 will snag you a 2020 DataDev T-shirt and beanie. Count me in!

You can also watch the intro video from the Tableau team below.

What was in it for me?

Aside from excellent swag, learning more about the API’s in Tableau can be a reward in itself. Personally, I’ve had it on my list to focus more on projects to expand my knowledge of the Tableau developer tools and this was the perfect opportunity to do so. There’s something about the satisfaction of executing code and having it run perfectly. Don’t get me wrong, sometimes it can take dozens of attempts and slight changes before you get to that point, but it’s worth it in the end.

So What did I learn?

Through these challenges, I learned tons of new things! Before the first set of challenges, I’d never worked on any extensions. It was awesome building them from scratch to both update a parameter list and to refresh the data against the source. I can definitely see taking this back into my work and finding ways to expand this into other extensibility options.

My favorite challenges were in the second set, in the topic of Automation & Integration. This is an area that I’ve worked in the most, but still was able to learn several new things. Throughout these challenges alone, I used the new Personal Access Tokens for REST API authentication, the Tableau Server Client library to build a list of workbook owners and the HYPER API to programmatically build a data source.

But my favorite challenge was level three of Automation & Integration which asks you to email the owner of a data source if it contained poorly formed names. This was my first time using the metadata API and I was very surprised by its possibilities. I’m excited to take my knowledge on this topic into new systems and tools in my place of work. This became an even better challenge when I was asked to present my solution to the DataDev community, which you can watch here.

In the final theme, I was able to work directly with the JavaScript API alongside some of the embedding challenges. I’ll share more details once those challenges are closed!

You can do them too!

Although the initial time frame for each challenge is now over, that doesn’t mean you still can’t take advantage of the learning opportunity. These challenges are for everyone of all skill levels. Are you new to programming? The resources below have you covered. Are you an experienced developer? You still just might pick up some new skills. All you need to do is:

  • Sign up for the Tableau Developer Program here. This gives you access to your very own sandbox, inclusion on the newsletters and announcements and unique opportunities to test new features.
  • Learn more about the developer tools via their individual guides here.
  • Check out the Developer Program Portal. This has more information, discussions and how-to videos on each of the challenges.
  • Start doing the challenges. They are all below.

The Challenges

With all of that said, let’s get into the challenges themselves. Below, I’ve included every challenge and the requirements. I’ve also included the associated videos to match.

Theme 1: Extensibility

April 6th – April 20th 2020

How to Video

Challenge 1: Complete an Extension Mini Project

Complete one of the below Extension mini projects:
https://github.com/tableaHu/datadev-hackathon/wiki/Update-a-date-filter-t…
https://github.com/tableau/datadev-hackathon/wiki/Refresh-All-Data-Sources

Challenge 2: Search fields in a worksheet with an extension

You enter text, and it selects any item in your viz that match that text. For example, in Superstore ‘table’ should match the ‘Tables’ sub-category and ‘KI Conference Tables’ product name.

Challenge 3: Build a write-back Extension

Build an extension that writes back to a data source of file. You can pick any data source/file types. For example, the extension would allow the end-user to update a salesperson’s quota.

Theme 2: Automation & Integration

April 20th – May 4th 2020

How To Video

Challenge 1: Sign-in to your site using a Personal Access Token

Before doing any request using the REST API or Tableau Server Client (TSC), you will need to sign in to your site. You can use your username and password or a Personal Access Token (PAT). For this challenge, we want you to use a PAT to sign-in. A sign-in using a PAT returns the same info as a username and password sign-in (a credentials token, site LUID, and user LUID), but without the security risk of exposing hard-coded usernames and passwords, or an interactive login experience.

Challenge 2: Programmatically Build List of Workbook Owners

Oftentimes you need to programmatically do things with Tableau or the data & content within Tableau. The level 2 challenge for A&I asks you to figure out all the owners of workbooks on your Tableau site and then use this list as a datasource so that we can build a viz to better understand the owners of workbooks.

Challenge 3: Programmatically Email the owner of the bad named calculated fields

Dashboard creators when working on a dashboard create a lot of calculated fields. Sometimes, they forget to rename them and Profit is going to stay forever Calculation1 (name that Tableau gives by default when creating a calculated field). Or while they are testing their calculations, they have 10 ‘test’ fields: test1, test2, etc. Having these badly named fields doesn’t help end users to understand what is the output of the calculations and take space on your site/server.

Build a script that will get all the bad named calculated fields (like Calculation1) and email the owners of these fields to ask them to rename these.

Theme 3: Embedding

May 4th – May 18th 2020

Challenge 1: Create a basic embedded page

Copy and paste the basic code for JavaScript API on our resource page and replace the embedded dashboard with one of your dashboards on your Developer Site. You can host your code on Glitch for example, or just save it locally on your laptop.

Challenge 2: Spice up your embedded page by adding more functionality

One of the benefits of using the JavaScript API to embed your viz in your application is the two-way communication between the viz and your application. Your application can respond to events in the viz, but also the other way around, the viz can respond to events in the application.

For this challenge you are going to: 1) Add a text zone in the web page that is going to display all the values that are currently set on the filter. For example, if you are using the Superstore dataset, and you have filtering on Category, the web page should display: Furniture, Office Supplies and Technology if all the values are selected and 2) Add a button to clean any filters on your viz

Challenge 3: Build your own portal with Tableau recommendations

Build an interface that would display all the visualizations recommended (to the signed-in user) by Tableau. The recommendations will be shown first as thumbnail images. When the users click on a thumbnail, the fully interactive embedded viz (and the power of Tableau’s interactive experience) is displayed and made available for use.

Build a script that will get all the bad named calculated fields (like Calculation1) and email the owners of these fields to ask them to rename these.

Theme 4: Extensibility

May 18th – June 1st 2020

Challenge 1: Start a dashboard extensions tutorial

Tutorials are a great way to get started with a new API and to learn the basics. Follow the first three steps from our Dashboard Extensions Tutorial:

https://github.com/tableau/extensions-api/tree/master/Tutorial

Challenge 2: Finish the Dashboard Extensions Tutorial and implement the show/hide feature

Complete the last three steps from our Dashboards Extensions Tutorial:

https://github.com/tableau/extensions-api/tree/master/Tutorial

Once you built the final extension, it’s time to do the happy T-Rex dance and implement the show/hide feature. You can use the ZoneVisibilityType enum and setZoneVisibilityAsync method to control whether the objects in a dashboard are visible or hidden. The goal is to hide the extension when the end-user is not selecting any marks.

Challenge 3: From here to there

I am here and I need to go there: how many miles/kilometres are between the two points? For this challenge, you need to build an extension that calculates the distance between two selected points on a map in a dashboard. For example, if the end-user selects Mauritius-Seattle, the extension is going to display: 16,973 km.

Theme 5: Automation & Integration

June 1st – June 15th 2020

Challenge 1: Set up a Webhook Using Postman

We released Webhooks in the Tableau 2019.4 release. Webhooks are a common method whereby a computer system can notify another that an event has occurred using standard web technologies such as HTTP and JSON.

In this mini-challenge, you are going to set a Webhook to get notified when a workbook is deleted (API Event Name is: webhook-source-event-workbook-deleted). You can use the Postman Collection to set it up. For testing the Webhook, you can use the webhooks site, it will let you test a Webhook without setting anything up – they provide a free, temporary URL to point to your Webhook.

Challenge 2: Create custom workflows triggered by events with Webhooks

Now that you set up a Webhook and tested it, the next step is to build processes and procedures around events happening in your Tableau deployment. In this challenge, you are going to use Webhooks to send a notification when a workbook is created.

Challenge 3: Please tweet every time an extract is failing

When an extract is failing, you want your entire community to know. Using Tableau Webhooks, create a workflow every time an extract is failing on Tableau Online, send a Tweet with #DataDev out.

Theme 6: Embedding

June 15th – July 6th 2020

Challenge 1: Learn the basics

When starting to use a new API, tutorials are a great way to learn. For this level, you are going to follow along with the below tutorial. This tutorial is a sample web application, created with Tableau’s JavaScript API. It’s designed to help you explore and learn about the API using a series of steps that guide you through the basics.

https://help.tableau.com/samples/en-us/js_api/tutorial.htm

Challenge 2: Select marks and get data

The JavaScript API lets you get the underlying data for an embedded viz. It is really handy when you want to bring data into other applications or libraries such as D3.js to build custom charts. For this challenge, embed a viz from your Developer Sandbox and when a user selects marks, your web page displays the underlying data.

Challenge 3: Add visualizations to text

Telling a story with words is great but imagine saying it with words and data visualization, that would be awesome! In this challenge, you are going to have an HTML page with plain text telling you a story about Superstore and an embedded viz published on your Developer Sandbox. Use the words and numbers in your text to trigger filtering of the viz. For example, when the user clicks on ‘Tables’ in the following sentence ‘Tables are not profitable’, the viz should filter to show everything in the Tables category.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s