Is it possible to create visualizations(charts) on our own using tableau? - tableau-api

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

Related

What is the easiest way to fetch data dynamically from a cloud storage to a flutter app

I am looking for a way to fetch data to my flutter app which can be adjusted and modified dynamically after deploying the app. As an example, if I want to change the images of the carousel depending on promotions or launch new books to the digital library. I need an economic option to host the data in cloud storage and fetch it from there.
I have considered firebase as well as google drive, but have yet to find a good guide. being a beginner and having concerns about security I want some expert advice if possible.
*edit-
Seeing many a tutorial I assume there is no better way than linking file URLs from the
Cloud Storage. So to dynamically change those is it possible to refer the URLs to some excel sheet fields to obtain URLs. Those fields can certainly be adjusted then without any hard coding. but the question is how to refer to such a sheet file? *
I also want to segregate the users into paid and free users, I have successfully proceeded with the authentication with firebase but still don't understand(I do have some concepts but don't know where to do that) how to put them in groups and impose limitations on them about accessing the data. any guidance, links and helpful advice will be cordially appreciated.
According to what you are looking for, I highly recommend you to use Firebase Remote Config, which is a cloud tool that allows you to modify your app's functionality and appearance without forcing users to download an update. You define in-app default values that control the functionality and appearance of your app when you use Remote Config. Then, for all app users or for subsets of your user base, you may utilize the Firebase console or the Remote Config backend APIs to modify in-app default values.
Your program can control when updates are applied, and it can check for updates regularly and apply them with minimal performance impact.
Remote Config comes with a client library that takes care of essential functions like fetching parameter values and caching them while still allowing you to manage when new values are active and how they affect the user experience in your app.
Here is a tutorial that uses Flutter and Firebase Remote Config that could also help you.

Displaying web based visualisation or graphing of data based on a postgresql database?

I am working on a web application for a client that uses a postgresql database. I want the client to be able to go to a certain area of the site where the data from the database is displayed in graph form (for example, sales figures over a 6 month period). Is there a plugin I could use for this (I don't have any experience of this, so an easy one, or one with tutorials available would be great). I had a look at BIRT, which says it has a web based option but I couldn't really figure it out. I don't want the client to have to download and go through another program, I just want them to go to a url within their site, and it's all just presented to them there and then.
Any sort of pointers in the right direction would be greatly appreciated.
Thank you.
HighCharts, at http://www.highcharts.com/, works well for this case -- I use it fairly often. It supports Ajax data feeds in JSON format, so you can write an endpoint which returns the JSON representing the data from Postgres and which gets called from a JavaScript function which creates the graphs using that data (you would place that call in a ready function).
Also, if you're using Postgres 9.3 or higher, it supports JSON natively, so you can do the JSON conversion in the SQL query itself, as opposed to post-processing the results in your Python or other backend code.
Highcharts is reasonably flexible and allows for a variety of nice-looking, functional charts and graphs. If you want to get much fanicer, d3 may be worth a look. These are some the types of graphs/charts it can do: https://github.com/mbostock/d3/wiki/Gallery
I have not used d3 myself, however.
For the scenario you described above, Highcharts seems like it would work just fine.
It's been a while, and a lot has happened since 2016. There is now ChartJS as well - http://chartjs.org/, for example, which is easier to use than HighCharts and very flexible (I've used both).
What they both don't do is dynamic data. If you want that your client decides which data he wants to watch - that part you need to write yourself.

Scripts or plug-ins for Tableau?

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.

Understanding data privacy with Google Web Toolkit, and Google Charts

I have been playing around with GWT and GWT Visualization Wrapper API. One thing I learned recently is that GWT Visualization API does not work without an internet connection (I was working offline the other day and it took me a good half hour to figure out why my charts were not loading)
After doing a lot of reading online about privacy, data, and GWT, it seems that many people, including me, have a concern about sending data to Google when trying to display graphs. I already searched through many sources, including stackoverflow, and I would like to 100% confirm that my assumptions are correct.
The reason for people's concern about sending data to Google was when you tried to get an image of the said chart. This required data to be sent to Google, they processed it, and then they returned an image to be embedded in your website. According to my studies, that feature has been deprecated from Google charts (and for good reason). The way it works now, to my understanding, is that every time you want to display a chart, you download the most up-to-date library on the client side and perform all the calculations on the client. This makes it so that Google doesn’t actually get any information you will display on the charts.
Thus, I can continue using the visualization API as long as I keep using interactive charts and keep checking on the Google charts documentation page that it says that for this particular chart i.e Line Chart:
https://developers.google.com/chart/interactive/docs/gallery/linechart
(SEE BOTTOM OF PAGE) “All code and data are processed and rendered in the browser. No data is sent to any server” I do not have to worry about anyone getting my data because all information is processed client side.
Please correct any incorrect assumptions that I may have. Thank you.
The charts on this page, https://developers.google.com/chart/interactive/docs/gallery, all include a "Data Policy" section which details whether the chart is rendered on the client and what data will leave the client. Currently, only GeoChart communicates with Google (in order to do the Geocoding); obviously, this could change in the future.
The charts on this other page, https://developers.google.com/chart/interactive/docs/more_charts, include some that were written by Google, and some that were written by third parties. These also include a Data Policy section. For those written by Google, you can rely on this policy. For those written by third parties, Google has not validated the claims and cannot guarantee them.

Web frameworks oriented towards graph databases?

I am to build a web app and I have realized that my domain data will be best represented by a graph structure. Which web frameworks out there does the greatest job at integrating with graph databases (neo4j in my case) and thereby gives me the easiest time getting up and running? I am open for all languages (mostly..)
EDIT:
My use case:
I am creating a bug tracker for a university department. It will track all kinds of issues (eg.: the classroom 1-0-24 needs chalk for the whiteboard, the course 'Introduction to programming sucks because of...', The alarm on the door into the library is way too strict, etc.)
I have defined loads of 'Areas of responsibility' (AoR) that are related to each other in terms of 'topically relatedness', 'is a super-AoR', 'is a sub-AoR', 'the responsible team is also responsible for this other AoR' and such. I want to present a graph of these areas of responsibility to the user. This is my wishlist for the graph:
Initially only show a subset of the graph
The user can pan around
As the user pans in one direction, new areas of the graph is revealed.
The user can click on a node to a) read more about that AoR, b) assign the users current Issue to that AoR (or maybe even drag issues to a AoR, just like with friends in Google+)
Currently I am considering using Grails (for the non-graphy parts like security and user management) and raw neo4j for the graph parts (that is, not using the GORM plugin that tries to fit a circle in a square hole)
I have now read about InfoGrid and it sounds quite interesting - especially the view-part (though I don't know how close it will bring me to my UX goal). I'm also worryed that it will not be as productive as Grails for the non-graphy parts.
Neo4j doesn't seem completely lost when it comes to visualisation either:
http://wiki.neo4j.org/content/Visualization_options_for_graphs
The InfoGrid project built its own web framework on top of the InfoGrid graph database -- precisely because existing web frameworks don't match graphs very well.
For example, we have custom tags for traversing (simple and compound) edges, detecting certain topologies, converting node identifiers into URLs etc.
Disagreeing with the other commenter, it would be so much harder (and so much less fun) to use a non-graph-aware web framework. We used to :-(
Any web framework you'll choose, should be absolutely independent on the DB integration. From my experience, the best web framework is the one you know the best.
When choosing web frameworks, it is better to consider different criteria than DB integration, (like: public vs intranet application, statless vs statefull model, number of expected concurrent users, etc).