Tableau Serverでサイトのエクスポートとインポートをやってみた #tableau

はじめに

こんにちは。大阪オフィスのDI部メンバー、tamaです。

Tableau Serverには「サイトのインポート」「サイトのエクスポート」という機能があります。どういう機能かというと、まあ言葉そのままなのですが、サイト(とその中にあるコンテンツ)を、別のサイトにコピれちゃうという機能です。

しかし、このインポートとエクスポート、Tableau社のヘルプを見る限り、ちょっとクセのある設定が必要っぽいです。ということで、実際にやってみました。

環境

  • AWS EC2 m4.2xlarge
  • Windows Server 2016
  • Tableau Server 2018.2.1

  • 今回は同一インスタンス上で、サイトのエクスポート→別サイトのインポート、を行います。

事前にやっておくこと

インポート先のサイトを先に作成しておく

今回は「復元用」という名前のサイトを作成しました。

エクスポート元から、サイトをエクスポートする

サイトをエクスポートするには、下記のTSMコマンドを実行します。

tsm sites export --site-id <source-siteID> --file <filename>

エクスポートするサイトの「サイトID」を指定する必要があります。「サイトID」ってどこで確認すんのよ?って感じですが、それは実際にサイトにアクセスした時のURLを見れば分かります。

https://xxxxx/#/site/<ここがサイトID>

では、実際にエクスポートしてみます(testというサイトIDをエクスポートしています)。

C:\Users\Administrator>tsm sites export --site-id test --file export-file
サイト ?test? のエクスポートを開始しています。
ジョブ ID ?41?、タイムアウトは 720 分です。
25% - サーバーでサイトのインポート/エクスポートに必要なサービスがインストールおよび開始されていることを確認します。 。
50% - サイトをロックしています。 。
75% - サイトのエクスポートを実行しています。 。
100% - サイトをロック解除しています。
サイト ?test? をコントローラー ノードのファイル ?C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\siteexports\export-file.zip? に正常にエクスポートしました。

デフォルト設定では、エクスポートファイルは下記に保存されます。これはTableau Serverのインストール先や、その他設定によって変わりますので、設定を変更している場合は、別途保存先を確認しましょう(上記の通り、コマンド後に保存先は表示されます)。

C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\siteexports

普通の感覚だと「で、このエクスポートファイルをインポート先のサイトに読み込ませるんでしょ」ってなりますが、その前にちょっと作業が発生します。

インポート用マッピングファイルを作成する

本格的にインポートを行う前に「マッピングファイル」を作成する必要があります。簡単にいうと、エクスポート元とインポート先で、各コンテンツがそれぞれどこに割り当てるかが記述された設定ファイル的なものです。

まず、先ほど作成したエクスポートファイルを、下記にコピーします。

C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\sitesimports

コピーが済んだら、下記のTSMコマンドを実行します。

tsm sites import --site-id <target-siteID> --file <export-file.zip>

C:\Users\Administrator>tsm sites import --site-id test_import --file export-file.zip
サイト ?test_import? のインポートを開始しています。
ジョブ ID ?42?、タイムアウトは 120 分です。
25% - サーバーでサイトのインポート/エクスポートに必要なサービスがインストールおよび開始されていることを確認します。 。
50% - サイトのインポートを開始しています。 。
75% - サイトのインポートに必要な一時データベースの移行を実行しています。 。
100% - マッピングの生成中です。. .
次の手順に従ってサイト ?test_import? のインポートを終了してください。
1) ?C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\siteimports\working\import_e03243f2_20181128032500428\mappings? のファイルのマッピングを確認します。
2) コマンド ?tsm sites import-verified --id test_import --import-job-dir import_e03243f2_20181128032500428? を実行します。

実行が完了すると、マッピングファイルが下記(デフォルト設定の場合)に作成されます(5つほどCSVファイルが作成されるはずです)。

C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\sitesimports\working\import_<id>_<date-time>\mappings

マッピングファイルの確認

各コンテンツが正しく割り当てたれてるようになっているか、マッピングファイルの中身を確認します。詳細はTableau社のドキュメントに書いてありますが、「???」という文言があった場合、それは正常にマッピングできなかったことを表すので、その場合は何らかの割り当て先を手動で修正する必要があります。

また、???で無くとも、割り当て先がおかしい場合は、別途修正する必要があります。

source〜がエクスポート元で、target〜がインポート先という解釈で問題ないと思います。

インポート先サイトにインポートする

マッピングファイルに問題が無いことを確認したら、満を持してインポートです。エクスポート時はTSMコマンドで行いましたが、インポートもTSMコマンドで実行します。

tsm sites import-verified --import-job-dir <import-id-directory> --site-id <target-siteID>

インポート先のサイトにIDは「test_import」なので、それを指定して実行です。

C:\Users\Administrator>tsm sites import-verified --import-job-dir "C:\ProgramData\Tableau\Tableau Server\data\tabsvc\files\siteimports\working\import_e03243f2_20181128032500428" --site-id test_import
マッピングを手動で確認した後、サイト ?test_import? のインポートを再開しています。
ジョブ ID ?43?、タイムアウトは 120 分です。
25% - サーバーでサイトのインポート/エクスポートに必要なサービスがインストールおよび開始されていることを確認します。
50% - サイトをロックしています。
75% - サイトのインポートを完了しています。 。
100% - サイトをロック解除しています。
サイト ?test_import? が正常にインポートされました。

確認します。

ユーザー

コンテンツ(ビュー)

ユーザーやらワークブックやらが復元されております!

サイトのインポートのメリット

別のTableau Server(Online)へ移行できる

今回は同一Tableau Serverで行いましたが、別インスタンスのTableau Serverや、Tableau Onlineへ行うこともできます(Tableau Online→Tableau Serverもアリ)。そういったお引越しでも活躍する機能ではないでしょうか。

認証方式が異なるTableau Serverへのバックアップ&復元に使える

Tableau Serverのバックアップ方法として、一番メジャーなのでTSMコマンド「tsm maintenance backup」で取得した.tsbakファイルを使用することですが、これは認証方式が違うTableau Serverでは使えません。そういった場合の代替手段としてサイトにエクスポート&インポートが使用できるかと思います。

注意事項

エクスポート元とインポート先のTableau Serverのバージョンは同じじゃないとできない

  • 別インスタンスへインポートする時は注意。
  • 今回は2018.2.1だったので、インポート先も2018.2.xxである必要があります。
    • 10.5のエクスポートファイルを2018.1にインポートする…ということはできません。

インポート先のサイトは空の状態が望ましい

  • 全く異なるコンテンツ構成をしているサイトへのインポートは、マッピングがカオスになるため、オススメしません。
    • 特にユーザーまわりが複雑になると思います。
  • インポート用のサイトを新規作成して、そこに流し込む方がシンプルだと思います。

管理ビューの情報はインポートできない

  • 管理ビューに表示される利用状況データは移すことができません。

おわりに

頻繁に使用する機能ではないと思いますが、いざという時は便利な機能ということで、ごま塩程度に覚えておきましょう。