開発部の「エイジ」です。
今回はTableau Hyper APIを使ってcsvファイルをhyperファイルに変換する手順を記したいと思います。
一般的にはDBサーバーをTableauサーバーにつないでデータの反映をすると思いますが、
csvファイルからのデータの運用が発生する機会に備えて手順を残しておきます。
★関連記事
・VPS環境構築からTableau Server on Linux導入手順
・Tableau server運用手順〜外部DBサーバーの連携〜
環境
CentOS Linux release 7.8.2003 (Core)
Hyper APIのインストール
.zip,.whiの二つをダウンロードします。私はpythonを選びました。
.whiをインストール
1 2 3 |
# pip install tableauhyperapi.whi |
書き換えたいCSVファイルをインポート
.zipを開いた先の/example/data内にcsvファイルを置きます。
ファイイル内を書き換えます。
csvファイルをhyperに変換させたいのでサンプルのcreate_hyper_file_from_csv.pyを使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# table_nameをcsvファイルと同名に変更 customer_table = TableDefinition( table_name="ファイル名", # そのテーブルのデータ型を全て書き込む columns=[ TableDefinition.Column(ID", SqlType.text(), NOT_NULLABLE), TableDefinition.Column("Mathematics", SqlType.text(), NOT_NULLABLE), TableDefinition.Column("Science", SqlType.text(), NOT_NULLABLE), TableDefinition.Column("English", SqlType.big_int(), NOT_NULLABLE), TableDefinition.Column("Japanese", SqlType.text(), NOT_NULLABLE), TableDefinition.Column("History", SqlType.text(), NOT_NULLABLE), TableDefinition.Column("Geography", SqlType.text(), NOT_NULLABLE), ] ) |
出力されるファイル名を指定
1 2 3 |
path_to_database = Path("****.hyper") |
使うデータを指定
1 2 3 |
path_to_csv = str(Path(__file__).parent / "data" / "****.csv") |
実行コマンド
1 2 3 |
# python examples/create_hyper_file_from_csv.py |
これで****.hyperが作成されます。
Server上にファイルを送りデータをTableua Serverにpublishする
ローカルで作成したhyperファイルを作成済のデータソーズに上書きします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# tabcmd publish 保存先のファイルパス.hyper --username ユーザー名 --server IPアドレス -password パスワード -o --save-oauth -n 上書きするデータソースを指定 ===== 新しいセッションを作成しています ===== Server: http://IPアドレス ===== Username: ユーザー名 ===== サーバーに接続しています... WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.dom4j.io.SAXContentHandler to method com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser$LocatorProxy.getEncoding() WARNING: Please consider reporting this to the maintainers of org.dom4j.io.SAXContentHandler WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release ===== サインインしています... ===== 正常に終了しました ===== サーバーに '保存先のファイルパス.hyper' をパブリッシュしています。この処理には数分かかることがあります... ===== ファイルがサーバーの次の場所に正常にパブリッシュされました: ===== http://******/datasources/上書きするデータソース |
ワークシートの更新
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# tabcmd refreshextracts -username ユーザー名 --server IPアドレス -password パスワード --workbook ワークシート名 ===== 新しいセッションを作成しています ===== Server: http://IPアドレス ===== Username: ユーザー名 ===== サーバーに接続しています... WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.dom4j.io.SAXContentHandler to method com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser$LocatorProxy.getEncoding() WARNING: Please consider reporting this to the maintainers of org.dom4j.io.SAXContentHandler WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release ===== サインインしています... ===== 正常に終了しました ===== workbook ワークシート名 の抽出の更新をスケジュールしています... ===== 正常に終了しました |
このように成功するとジョブに履歴が残ります。
一連の流れは以上です。お疲れ様でした。
このブログは株式会社CoLabMixによる技術ブログです。
GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。
Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。
開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。