LoginSignup
0
0

More than 5 years have passed since last update.

Tableauで使用可能なオンラインストレージのファイルをLinuxから更新する

Last updated at Posted at 2018-12-15

仕事上、とあるサイトから毎日エクセルファイルをダウンロードしてTableauのデータソースとして使用しなければならなくなりました。
すんなり行けると思ったのですが、いろいろ苦労したので共有したいと思います。

Tableauだけでできないかとおもいましたが、どうやらできない様子。Tableau Desktopで抽出ファイルの更新をサポートしていますが、Windowsです。バッチファイル作ってスケジューラ登録して、24時間365日動かすことはしたくありません。。。
そして、Tableau ServerもWindows Serverです。ここでもやりたくないです。
tabcmdはLinux上で動作させることができますが、tabcmdでは更新スケジュールを動かすことはできてもローカルファイルから抽出更新してパブリッシュができないようです。(もしできるようなら教えてください)

ということで、長い旅の始まりになります...

最初は、AWSのS3にファイルを保存してAthena経由でTableauに入れてやれば楽ちん!とおもって試してみたのですが、思った通りにできませんでした。
やったことは、xlsx2csvでcsvファイルに変換してS3に保存してからAthenaでデータセットを作成したのですが、データセル内に改行された項目があったため、これは正式にサポートしておらず前処理が必要になるということで面倒なので却下。

そこで、Tableauはオンラインストレージを複数サポートしています。
対応しているオンラインストレージは、Box, Dropbox, Googleスプレッドシート, OneDriveです。
これらを使用するのであればわざわざcsvファイルに変換する必要がありません。
BOXは、Linux環境のコマンドラインツールがそろっていないのと、webdav経由でマウントして使えるのですが、これが2019年にはサポートされなくなるので継続的に利用できないので却下。
DropBoxは基本同期になるのでそれはしたくないので却下
OneDriveですが、https://github.com/skilion/onedrive でとりあえずできそうな雰囲気でした。
ところが、任意フォルダーでの同期をかけると、<ファイル名>-<ホスト名>.xlsxとなってどんどんファイルが増えていきます。
https://github.com/skilion/onedrive/issues/338
の問題で、https://github.com/abraunegg/onedrive を使用しても結局は同じ結果になり、却下。

ということで、最後の頼みの綱。Googleスプレッドシートです。
google driveを使えるようにすればよいので、https://centossrv.com/gdrive.shtml を参考にgdrive を入れました。
gdrive upload だけで行けるだろうと思ったら、File IDが異なる同じファイル名が大量生産されました。だめなんですね。。。
そして、一旦ファイルを消してuploadする方法をとりました。これで行けるだろうとおもったら、こんどはTableau Server側から抽出失敗のメールが。
そう、TableauのデータセットもFile IDを見ているようでファイルがなくなった状態になってしまいました。
ということで最終的に落ち着いたのは、
gdrive update <ファイルID> <更新するファイル名>
で、無事更新されるようになりました。

tabcmdですべてできれば何の問題もなかったのに...

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0