knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = FALSE, fig.path = "man/figures/README-", out.width = "100%" ) # R chunks knitr::read_chunk(path = "inst/plumber/capitalize/plumber.R", from = 9, labels = "capitalize")
plumbertableau lets you call external R code in real time from Tableau workbooks via Tableau Analytics Extensions. You achieve this by writing a plumbertableau extension, which is a Plumber API with some extra annotations — comments prefixed with #*
.
plumbertableau extensions are used in Tableau's calculated fields. Let's imagine we've published our extension to RStudio Connect and have given it the custom URL stringutils
. To use our capitalize
extension, we'd type the following into a Tableau calculated field, or just copy and paste it from the automatically generated code samples. (In real usage, you'll probably replace "Hello World"
with references to Tableau data.)
SCRIPT_STR("/stringutils/capitalize", "Hello World")
Before you use the extension in Tableau, Tableau needs to be able to access it. plumbertableau integrates seamlessly with RStudio Connect, a commercial publishing platform that enables R developers to easily publish a variety of R content types. Connect lets you host multiple extensions by ensuring that requests from Tableau are passed to the correct extension. It's also possible to host plumbertableau extensions on your own servers.
You can install plumbertableau from CRAN or install the latest development version from GitHub.
# From CRAN install.packages("plumbertableau") # From GitHub remotes::install_github("rstudio/plumbertableau") library(plumbertableau)
Tableau's current support for R as an analytics extension is built on
Rserve
. This approach requires
configuring Rserve in a separate environment and then passing R code as plain
text from Tableau calculated fields to be executed by Rserve.
The approach suggested here allows specific endpoints to be called, rather than requiring the Tableau user to write and submit R code in a plain text field from Tableau. This allows Tableau users to be seperate from the extension developers. R developers can build extensions that are then used by Tableau developers who may have no working knowledge of R.
While this package has been designed specifically with RStudio Connect in mind, it will work independent of RStudio Connect.
RStudio Connect offers a number of advantages as a deployment platform for Tableau Analytics Extensions:
Tableau Analytics Extensions are configured to reach out to two specific endpoints:
/info
: Information about the extension/evaluate
: Execution endpoint for the extensionplumbertableau automatically generates the /info
endpoint and reroutes
requests to /evaluate
to the endpoint defined in the script
value of the
request body. This allows multiple endpoints to function as extensions, rather
than relying on a single extension operating under /evaluate
. These features
are intended to allow the R developer to easily create Tableau Analytics
Extensions as standard Plumber APIs without needing to worry about the lower
level implementation.
You can read more about plumbertableau at https://rstudio.github.io/plumbertableau/. There, you'll find more detail about writing plumbertableau extensions, publishing them to RStudio Connect, configuring Tableau, and using your extensions in Tableau.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.