Can one write plug-ins for Tableau? Is Tableau equipped with any sort of general-purpose scripting language?
e.g., for generating visualizations that cannot be created using the default Tableau tools, or for doing k-means clustering on a dataset using various metrics, etc...
Tableau has several extension points at the moment.
If you publish to Tableau Server, On-Line or Public, then you can use
Tableau's JavaScript API to interact between your web app client and
the Tableau visualization. Your javascript can be notified of events
in the Tableau viz, and also effectively command it.
Instead of using the JavaScript API, you can include URL query parameters to pass filters, adjust the sizes and control a few other aspects. Similarly, you can append a format string like ".png" or ".pdf" or ".csv" to request a static snapshot in a particular format instead of an interactive object. You can't control as much via the URL as you can via the Javascript API, but the URL approach is very simple and easy for common cases.
With both Tableau Server visualizations and Tableau desktop
visualizations, you can create URL actions, so that users can select
data and then cause HTTP GET requests to URLS that are based on info in the selected data.
If you have a data source that Tableau doesn't yet provide a driver
for (there are many including ODBC), then you can write a program
using their data extract API to extract data from your custom source
and make it available to Tableau. You can also publish that source to
Tableau server as frequently as needed to keep your visualizations
current.
If you have specialized functions on your database server, you can
access them from Tableau calculations using their SQL pass through
functions. You can also define a Tableau connection using arbitrary
custom SQL which gives you another place to insert customizations.
Version 8.1 added integration with R so you can call R scripts from
Tableau calculated fields.
Version 8.2 added a REST API to Tableau Server for administrative functions
Version 9.1 adds a Web Connector that is designed to let you provide custom code to connect to web accessible data sources
Version 10.1 Tableau added TabPy a local HTTP Python server that lets you execute Python functions from Tableau in the same way you can call R functions. The same hooks have now been extended to allow calls to Matlab functions.
There are also command line programs, tabcmd and tabadmin, that work with Tableau server that you can use to send commands to the server from your own scripts, but the REST API may be more convenient in many cases.
Tableau released several open source libraries, tools and examples at https://github.com/tableau One of these libraries, the document API, allows you to programmatically modify some attributes of Tableau workbook files.
Tableau released an extensions API in 2018 to allow developers to add custom functionality to Tableau dashboards.
Version 2019.3 adds a MetaData API using GraphQL to allow clients to query for information about the fields, types and attributes available in data sources published to Tableau Server's data catalog.
Hopefully, they'll continue to add additional APIs and integration hooks, but those are most of the options available now.
At present, Tableau does not support plug-ins and does not provide a general-purpose scripting language.
There is a currently an Idea on the Tableau website to add Ruby as a scripting language which may cover some of the functionality that is required. The Ideas section is regularly reviewed by Tableau's Product Management team and is the best way of suggesting new functionality for Tableau's products.
Related
I have used "Mockaroo" to generate mock table data (in SQL format) for my postgreSQL projects. But now I am experimenting with Apache AGE (a graph database). I wanted to know if there is any website like mockaroo which let you generate mock graph data (in OpenCypher query format).
I didn't know whether this actually answers your question or not but you can try using Neo4j or Neo4j sandbox. Neo4j Sandbox is a web-based platform that allows you to create and experiment with Neo4j graph databases. It comes with several pre-built datasets that you can use to explore different graph use cases. Additionally, you can create your custom datasets using the built-in data generator, which supports generating data in OpenCypher query format.
Here is the GitHub repository. you can also download a desktop application using this link.
There are some tools for generating mock table data for Cypher query language, but they are not like Mockaroo in the sense of just accessing the website and freely creating different kinds of data easily. With these options, you might need to use python or make a new account on a website.
Neo4j Sandbox: Neo4j is a popular graph database management system that supports the Cypher query language. Neo4j provides a free sandbox environment where you can experiment with graph databases and use mock data to test your Cypher queries. https://neo4j.com/sandbox/
Graphgen: Graphgen is an open-source tool that can be used to generate random graph data. It allows you to define a schema and generate data that conforms to that schema using the Cypher query language. https://github.com/idea-iitd/graphgen
I am trying to connect data from a PLM tool to Tableau using the REST API. I am not super familiar with the REST API, so I am unsure how to connect it to Tableau Desktop. Is it even possible to connect a REST API to Tableau Desktop? Do I need additional tools to build the connection between the API and Tableau? Thanks in advance!
Yes, it is possible to connect REST API to Tableau Desktop. And yes, you'll need additional tools to build the connection.
Steps:
Set up an ODBC connection. Visit this website for this step -> https://kb.blackbaud.com/knowledgebase/articles/Article/41081
Open Tableau Desktop and under connect to a server, select "Other Databases (ODBC)".
Connect and in the "String Extras" box, put in your SDSN, HST, and PRT information.
Choose the database that the RESP API is connected to. You can see how to do that in the REST API documentation of the site you're using.
Filter the data you want to see in Tableau and you should have your data there.
There are so many ways to make this connection and this is one of them.
Thanks!
Actually, Tableau doesn't support REST API as a data source directly. You have to use indirect ways to connect to REST API.
One way is to use Web Data Connector, BUT you have to build a web page for each REST API and paste the web page link in Web Data Connector. (I did this before and it's pretty crazy...)
Another way is to use an ETL tool that supports extracting data from API and loading it to Tableau. This way saves you lots of time although you need to pay for additional costs. (I personally recommend Acho. Its API connector is very powerful and easy-to-use)
The time taken to load the charts(visualization) using tableau in my mobile app is close to 10 or 15 secs. So i am looking for alternative methods like creating my own chart but only to use the intelligence tableau provides on creating the visualizations.
In short, i want to know whether there is some support or API available from tableau using which i can draw the visualizations by myself in my mobile app without losing any chart data or functionality like digging deeper in charts.
For example, an API from tableau using which i can create the chart in my mobile app. After creating it, if user touches any data that should be sent again to tableau to get further event action like showing filters/tables etc.
Is this even possible? I did lot of research in tableau and got to know about tableau SDK, tableau API's, tableau extensions etc. but unable to find what i am looking for.
Tableau provides a thorough white paper Designing Efficient Workbooks. I would start by reading that and trying some of the recommendations.
If you are looking for an API driven visualization system, you can check out MuzeJS.
You load your data in an in-browser DataModel, run relational algebra enabled data operators to get the right subset of data, and then just pass to Muze engine, which automatically renders the best visualization for it.
It is similar to the kind of intelligence Tableau provides but since it is a developer first API, you can customize as you want, whether it be for the mobile or the desktop. In fact, most of the charts will be available for both seamlessly.
Any changes to data (including application of data operations) automatically updates the visualization, without you having to do anything else.
Add to that, if you’ve to connect multiple charts (for cross-interactivity, drill-down etc.), you’ve to manually write the ‘glue’ code. With Muze, all charts rendered from the same DataModel are automatically connected (enabling cross-filtering). It also provides composability and the ability to facet your visualization, providing a multi-grid layout.
You can go through some of the examples and the documentation to see if it suits your needs
A question regarding the integration of the document management system Alfresco into Oracle Application Express (APEX) based on CMIs-repository:
The aim is to use APEX as the portal-page and Alfresco showing it's results (document lists) based on search parameters coming form APEX.
A search result from a CMIS-query should be displayed in an APEX page-region.
Unfortunately I have no experience in this sector (REST, CMIS) - so any advice would be welcome!
A related question regarding user authentication and authorization via CMIS does also arise.
Has anyone out there implemented something like this or used these components together, yet?
The first thing that pops into my mind is making the choice where you want your communication with the repository to take place: client side or server side?
Alfresco supports Web Scripts, so I would be possible to create a javascript-heavy thick client which connects to your repository, get information about your files and redirect to their download links.
The alternative would be to design some way to connect to the repository from the database server. Again there are many ways to do this. You can connect to the repository during your page load and use PL/SQL regions to fire scripts that connect to your repository, get the data you want, and render your region with that information.
Another way would be to periodically check the repository for changes, and maintain a 'shadow copy' of the repository within your oracle database tables.
Of course all of these solutions have their own drawbacks.
Domains are virtual view of a data source that presents the data in business terms, allows for localization, and provides data-level security. ADomain is a metadata layer that provides a business view of the data accessed through a data source
this is domain definition as in Jaspersoft reporting tool.
I am currently given the task to build or come with a design to create some domains in tableau.. (like in jaspersoft)
examples of domains in jaspersoft
In jaspersoft when you click on a domain : ex customer domain: you will see the list of tables (that are selected)
How to do the same in tableau?
Please guide me on this..
The meta data layers in Tableau are quite lightweight compared to other BI tools, which is ofter a plus, but seems to fight against your assigned task.
Usually the best approach in Tableau is to learn to use the tool well, build visualizations for your business domain, test and refine them, and then later focus on factoring out common meta-data as your Tableau projects grow. That tends to work better than insisting on a big meta data design up front approach.
Still as you learn to use Tableau, the features that you'll want to understand related to your question are everything about data connections (which define how to connect to a data source, and the fields, data types, calculations, groups, sets, field roles etc). You can start with a data connection in a single workbook and then save the connection separately (typically on the server) so that it can be shared among multiple workbooks (to reduce duplication). You can also use Tableau Server like a proxy for your database.
For security, you can look into the groups and access controls provided by Tableau Server, along with user filters.
Some of the features you ask about might be more properly relegated to the database server, such as by defining common views visible to different users.