Tableauで使用可能なオンラインストレージのファイルをLinuxから更新する
仕事上、とあるサイトから毎日エクセルファイルをダウンロードして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ですべてできれば何の問題もなかったのに...
Author And Source
この問題について(Tableauで使用可能なオンラインストレージのファイルをLinuxから更新する), 我々は、より多くの情報をここで見つけました https://qiita.com/crosspointst/items/3f7b5eb2be3ca4d3edec著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .