Getting your Tableau Cloud Data into CRMA
Last time we dove into the “CRMA Output connector” that was shipped in the latest Tableau Prep release. This output connector in Tableau Prep allows you to write data straight into Salesforce CRM Analytics as a dataset, on a schedule if needed. The newly created CRMA dataset can then, in turn, be used as an input dataset for a CRMA recipe or just to start dashboarding right away.
In this blog, we’ll have a look at an alternative way of getting data that lives in your Tableau Cloud as a published datasource into your Salesforce environment as a synced object. This time making use of the Tableau Cloud input connector in CRM Analytics.
Our Use Case
Our use-case will be the following: we have a Tableau workbook (“MyDashboard”) that is connected to a published datasource (“MyData”) with a schedule that syncs data hourly from a Google sheet to our Tableau Cloud. That data is also considered to be relevant for our Salesforce CRM users and we want to bring it into the CRMA ecosystem, but only on a weekly basis. How can we accomplish this given that CRM Analytics as we write does not have an out of the box google sheet input connector?
Are you with me?
Let’s start from the beginning and break it down.
PART I: Setting it up in Tableau Cloud
Step 1: set up our datasource: a Google sheet
Imagine that my company uses Google sheets (this can be Google forms too!) to capture some performance metrics. Consider it a log with two columns that gets enriched (grows in records) on a frequent basis. I have a Google sheet called “MyData” with a tab called “MyData”.
A Google sheet that logs data
Step 2: Connect to our Google sheet data with Tableau Desktop
We open Tableau Desktop and connect to the “MyData” sheet using the Google input connector. Next, we right-click on the connection and run an extract.
Use extract is enabled
After that, I will immediately publish this as a published datasource to my Tableau Cloud. Publishing the source and the workbook separately seemed to be required to make this connection work.
Publish the data to your Tableau Cloud
I will, for later testing, make a small graph before also publishing the workbook (we need a workbook name when specifying the credentials in CRMA!). This will make it easy to check that new data flows correctly.
A small graph for testing
If everything went well you’ll now have 2 things published on your server by now:
-1 published datasource called “MyData”
-1 published dashboard called “MyDashboard” (which makes use of “MyData”)
Now before anything else, I want to make sure that the data sync between my Google sheet and Tableau Cloud works well, so I will add 2 lines of data to my Google sheet and see that (after an extract refresh) the data flow into my dashboard.
we add 2 test records
Next, we manually trigger the extract on our Tableau Server:
Navigating to our dashboard called “MyDashboard”, we notice the new data was synced correctly after the extract was refreshed. The records “test” and “test2’ are now visible in our little graph.
Proof that the records “test” and “test2” came through
PART II: Setting it up in CRM Analytics
We have completed the minimum required steps from the Tableau Cloud side, now we head to Salesforce for Part II.
The Tableau Cloud input connector
We navigate to our Analytics Studio and look for the “Connections” tab within the Data Manager. The connections tab is where we will define our connection to Tableau Cloud.
The connections tab in the Data Manager
Configuring the connection
When in the connections pane, hit “new connection” in the top right. Notice that the input connector is called “Tableau Online Connector” and not “Tableau Cloud Connector”. This is because of a recent renaming from Tableau Online to Tableau Cloud. This name change has not made it to the CRMA interface just yet.
Which credentials do you need?
Connection Name: This can be anything! It is used to provide a meaningful name in case you set up multiple connections.
Developer Name: Also a free text field, for transparency reasons, fills in your name so others know who configured this connection.
Description: A free text field which describes what the connection is about.
Authentication Type: There are two possibilities here. I ran into trouble due to the fact there was a Google authentication on Tableau Cloud when I wanted to configure the connection with a password and login, I therefore used a Personal Access Token instead. This token can very easily be obtained via the “My Account Settings” when logged into your Tableau Cloud.
Log into Tableau Cloud and find “My Account Settings” in the top right
Personal Access Token Name:
This is the name you have given your Personal Access Token in the previous step. In my case that is SFC (see screenshot above).
This one has nothing to do with the workbook or datasource you are calling, it is simply your Tableau Cloud site name. This one got me confused originally.
This is for me where the biggest point of improvement could be made on the connector. Why does it require a workbook? A Published Datasource can technically perfectly well be published on Tableau Cloud independently without any reference to the content item called “workbook”. It would have made more sense to me that this connector connects directly to the Published Datasource.
Data Source Name:
The name of the published data source to which the workbook connects, in our case “MyData”.
As we will be working with an extract, we can leave this value to “Extract”. I have not tested the connection with a live setup yet.
Carefully enter all your connection credentials
After you have entered all your credentials carefully and have hit “Save and test”, a green banner on the top of your browser will confirm the connection details are valid. If not, a red banner will appear with an error. If you are lucky, that error will describe where it went wrong.
Getting to the data
The connection will be added on the left side of your screen when successful. The only thing that remains is to select the “data object” we want to pull into our CRMA environment. Hit “Edit objects” and select our dataset ”MyData”.
A Tableau Cloud connection was added to the connection pane
To populate the synced object “MyData” I manually trigger the dataset for testing purposes.
Ready to go!
This connected object is now available within CRMA and can be used for dashboarding or as an input for your CRMA recipes!
Look at that, our data!
As a final test, I will add 2 more test lines and trigger both of my refresh schedules manually before I set the final schedule for them.
We add 2 more lines
Trigger the extract schedule manually in Tableau Cloud:
Trigger the sync flow in CRM Analytics Manually:
Once we have tested our data flows, the only thing left to do is setting up the data flows on a daily schedule in Tableau Cloud and on a weekly schedule in CRM Analytics. And that’s it! We now have our google data available in both Tableau Cloud and in CRM Analytics, fully automated.
When you load your “refreshed” connected object “MyData” into a recipe, it looks like the recipe keeps showing the original records it showed on the initial load, although it has refreshed in the background. It was only after running a 1:1 (synced object to CRMA Dataset) that we noticed the new records came through in the preview.
The Tableau Cloud input connector in CRM Analytics works. It allows companies that use both Tableau Cloud and CRM Analytics to manage datasource proliferation (single source of truth) by connecting to sources that already are in place in their Tableau Cloud environment, instead of recreating that same connection once again in CRMA. The fact that one needs to publish an actual “workbook” together with the published data source one wants to push to CRMA might feel a bit unusual for the more experienced Tableau user as the concept of a “published datasource” can be seen as independent from any workbook on a server.
Yet, taking into account the strategic importance of these two eco-systems working together flawlessly, Salesforce most likely will continue to invest time and effort into fully optimizing the way this connector interacts with Tableau Cloud. Taking all things into consideration, when I am asked to sync data from Tableau Cloud to CRM Analytics on a regular basis, I will most likely still go for setting up a Tableau Prep flow on a schedule that writes to CRMA using the Tableau Prep output connector.
And finally, when one is serious about storing and maintaining company data, as always, we would recommend storing the google data first into a real data warehouse like Snowflake before connecting to it with Tableau or CRMA. Google sheets fundamentally are no database and very fragile in terms of data loss and governance, but that’s a topic for another blog.