はじめてのTableauで外部ページからグラフを呼び出すまで
初めてtableauに触ったので覚えたことなどをメモしつつ、任意のページでjs APIからグラフを呼び出してみよう。
Tableau?
読み方:タブロー
言語:フランス語
できること:データビジュアライゼーションが簡単にできる。
データはエクセルやらCSVやらJSONやらいろんなデータが読み込める。
ACCESSとかEXCELとかよりすごいぞ!
Tableauにはいろんな種類がある
Tableau Server…サーバーにインストールするタイプ。ちょっとした事はwebからも変更できるけど、基本的にデスクトップにアプリケーションをDLしてそこからデータ操作。
Tableau Public…作ったデータビジュアライゼーションを世界と共有できる。デスクトップにアプリケーションをDLしてそこからデータ操作。無料で使える。
Tableau Online…クラウド版。web上で操作が完結。
社で依頼されて触ったので私が初めて触った環境はTableau Server
学んだことをまとめようとTableau Publicでアカウントを作ってみたので、この記事の動作確認はServerとPublicのみです。
jsで任意のページに呼び出した結果
シンプルに呼び出したものがこちら
地獄のような見づらいグラフが出ていますね。これは私のグラフづくりのセンスの問題なのでタブローのせいじゃないです。
最近「Githubを積極的に使おう運動」をはじめましたので、その一環でgistでコードを表示します。うまくできるかな?
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="UTF-8"> | |
<title>tableau js API test</title> | |
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> | |
<script src="//online.tableau.com/javascripts/api/tableau-2.0.0.min.js"></script> | |
<script type="text/javascript"> | |
var viz; | |
var sheet; | |
var current_sheet; | |
function initViz() { | |
var placeholderDiv = $("#tableau-root"); | |
var url = 'https://public.tableau.com/views/pokemon_28/dashboard'; | |
options = { | |
width: "1400px", | |
height: "600px", | |
hideTabs: true, | |
hideToolbar: true | |
}; | |
viz = new tableau.Viz(placeholderDiv, url, options); | |
} | |
</script> | |
</head> | |
<body onload="initViz();"> | |
<div id="tableau-root"></div> | |
</body> | |
</html> |
こちら今はただ表示しているだけなので、こちらをかっこよくカスタムしていくのが着地点です。つづきは長くなるので、別の記事で。
色々やってみた際の壁と解決策
誰もやらなさそうな凡ミス集です。
壁1:403 Forbiddenが…
js APIで呼び出そうとしたら以下のようなエラーが…。
http://public.tableau.com/vizportal/api/web/v1/auth/signin?path=... 403 (Forbidden)
URL、間違ってた。
http://public.tableau.com/views/{workbookName}/{viewName}
こちらのviewNameに存在しないviewを指定していましたね。
ちなみにこの場合、Vizが出るはずの場所に403 Forbiddenの表示が出るんだけど、その際にTableauがnginx/1.8.1で動いている事が確認できるぞ。
壁2:getUnderlyingDataAsyncがない…
Tableau 10から導入されたというfunctionが動かない。なぜだ。
と思っていたら呼び出しているjsが違ったのであった。
参考:https://onlinehelp.tableau.com/current/api/js_api/en-us/JavaScriptAPI/js_api_concepts_get_API.htm?Highlight=tableau%20public%20js%20api
本来tableau-2.min.jsを呼び出すべきところを、tableau-2.0.0.min.jsを呼び出していたのでした。
8系まではv8なのに9.0から2.0.0となり、9.1から2になっているので注意ですな。