Hiding the home screen banner in Tableau Server 2019.2
Yesterday I had someone ask if it was possible to hide the new “Welcome to your Tableau Site” banner that appears on the Home Page of every site in the new version of Tableau Server (2019.2). Each user can hide it themselves by clicking the little ‘X’ in the top right corner of the banner which ensures that it is not shown again.
However, this particular server admin wanted to hide it for all his users. Digging a little into this functionality led me to a table in the Tableau Server postgres repository, with a boolean column called ‘show_welcome_screen’, where you’ll find a list of users (for each site, so there might be duplicates if a user has access to multiple sites on your server) and by setting this value to False for every user/site combination, the banner disappers from their view.
So, how do you do it? Well first, you need to gain write access to the Tableau Server repository, which is a PostgreSQL database that forms the backbone of the server. It is the central storage repository for the server and contains all the workbooks, users, permissions, and metadata that allows the server to function.
You can gain read-only access to this database by following well-documented instructions on Tableau’s help guide here:
To gain write access is obviously a much riskier matter, and doing so is unsupported, so effectively voids your warranty. But if you’re just playing around in your Dev environment and you don’t care about trashing your server, then you can give this a go.
But let me just repeat, THIS IS COMPLETELY UNSUPPORTED, not by me, nor The Information Lab, nor Tableau, or anyone else for that matter. You break it, you fix it. If you get something wrong here you could completely trash your server, and I mean completely. So definitely take a backup before you even attempt this!
Firstly, we need to find the password for the repository database superuser. This user is called ‘tblwgadmin’, and we can get its password with the following TSM command which we run from a command prompt/terminal on the server machine itself:
tsm configuration get -k pgsql.adminpassword
While still on the server, we then need to log in to the repository database with these superuser credentials and grant our lowly readonly user some write permissions. Log in to the pgsql command line client with the tblwgadmin credentials
Go to the following directory:
C:\Program Files\Tableau\Tableau Server\packages\pgsql.<version number>\bin
Run the following command:
psql -h localhost -p8060 -Utblwgadmin workgroup
When prompted, enter the password we found earlier.
Now you should be in the PostgreSQL console, and you’ve got two choices:
- Run the script below and get out or,
- Grant your ‘readonly’ user write access, which will then allow you to quit out of this command line console and sign-in to the repository remotely, using the ‘readonly’ user, from a nice GUI SQL editor, like PGAdmin.
I’m going to go with option 2 in this example, so go ahead and run the following commands to give your readonly user the correct permissions to make the changes we need:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public to readonly; GRANT ALL ON SEQUENCE public.site_user_prefs_id_seq TO readonly;
Then you can quit out of the pgsql console and sign-in to your repository from a GUI like PGAdmin using the readonly user, and there you’ll want to paste in the below statement and hit enter. This will populate the site_user_prefs table with a list of all your users across all your sites, and set their show_welcome_screen value to false, thereby hiding the banner for all your users. Shout out here to my colleague and “old SQL hand” Mike Lowe for the help with the SQL insert statement. How funny that this took me about 3 minutes to do in Alteryx, but 30 minutes to write (and troubleshoot syntax errors) in SQL!
INSERT INTO site_user_prefs (show_welcome_screen, refresh_failure_notification_enabled, notification_enabled, user_id ) SELECT false , coalesce(site_user_prefs.refresh_failure_notification_enabled,true) AS refresh_failure_notification_enabled , site_user_prefs.notification_enabled AS notification_enabled , users.id AS user_id FROM users LEFT JOIN site_user_prefs ON users.id = site_user_prefs.user_id WHERE show_welcome_screen is null;
One caveat – the above script also sets the users refresh failure notification preference to true. This value cannot be null it seems, so you need to choose whether to set them all to true or false. True is a good choice, default to true if you’re not sure.
….aaand you’re done. You should be able to see that users no longer see the banner when they look at their home screens.
If you don’t fancy trying this (and I don’t blame you), then why don’t you upvote this idea on the Tableau Ideas page instead, so we can encourage our friendly Tableau server devs to incorporate this option into the software!