CUEBiC TEC BLOG

キュービックTECチームの技術ネタを投稿しております。

Tableau REST APIのエラーコード400081と格闘した話

ポイント! どうもキュービックのテックリードの尾﨑です。本日はTableau Server REST APIのエラーコード400081と格闘した記録をお話しします。 おそらくベストプラクティスがまとまっていない事例なので、同じ課題を持つ方の参考になれば嬉しいです

はじめに

エラーコード400081とは? Tableau Server REST APIでViewの詳細情報を取得する際に稀に発現するエラー
公式ではGENERIC_QUERY_VIEW_DATA_ERRORとして定義されています

{
    "error": {
        "summary": "Bad Request",
        "detail": "There was a problem querying the data for view '3a912663-29ae-46f7-8634-f663d65b0929'.",
        "code": "400081"
    }
}

どうやらAPIの戻り値云々ではなく、APIのリクエストの段階で問題が起きているようですね

判明している発現パターン

パターン

  • 1.APIのアクセスキーを発行したユーザーの権限が足りない
  • 2.Viewがパブリッシュされていない
  • 3.ワークブックブックがパブリッシュされた直後
  • 4.データソースのパスワードが埋め込まれていない
  • 5.Tableau Cloud WEB でマルチデータソースでカスタムSQLを作成している
  • 6.データソースにRedshiftを使用している

原因と解消方法

他のエンドポイントで判明するもの

以下の3つに関してはViewの詳細をする以前に別のエンドポイントを使用することで切り分けが可能です

  • 1.APIのアクセスキーを発行したユーザーの権限が足りない
  • 2.Viewがパブリッシュされていない
  • 3.ワークブックブックがパブリッシュされた直後

Query Workbooks for Site(WORKBOOK情報取得) ワークブック情報が取得できない場合は、アクセス権限が足りないか、パブリッシュが正常にされていない(完了していない)可能性が高いです

Query Views for Workbook(Viewsリスト取得) Viewの一覧に対象のViewが含まれていない場合は、Viewが下書きモードでパブリッシュされていないなど不完全な状態である可能でしが高いです

APIの使用方法に関してはこちらで詳しく解説しているのでご参照ください

4.データソースのパスワードが埋め込まれていない

原因

データソースの接続設定をした際に、パスワードを埋め込んでいないことにより認証ができていない

解消方法

ワークブックからデータソース>アクション>接続設定の編集へと進み

「必要な場合はユーザーにパスワード用のメッセージを表示」から「接続に埋め込まれたパスワード」を設定すると解消されます

5.マルチデータソースでカスタムSQLを作成している

原因

Tableauではデータソースの設定し、設定したデータソースに対してカスタムSQLを投げることができます。
しかし、TableauのWEB上でカスタムSQLでデータを取得もでき、View上でもデータが確認できるのにREST APIではエラーとなることが判明しました。
※マルチデータソースだけでなく、Mysqlなど1つのデータソースに複数のDBが含まれている場合なども同様でした。

解消方法

Tableau Cloud上でマルチデータソース設定とカスタムSQL設定はあくまで疎通確認ぐらいとし、 運用ベースで設定する際はTableau DesktopまたはTableau Prepで設定を行う

6.データソースにRedshiftを設定している

原因

これが一番難解でした。複数のテーブルの結合などもなく、View自体は認識されているのに詳細は取れない。
どうやらTableau CloudでRedshiftをデータソースとしてパブリッシュしたワークブックのViewは取得できないことがあるようですね。
もし取得方法をご存知の方がいたら是非教えて欲しいです><

解消方法

解決方法! 1.Tableau DesktopでRedshiftのドライバーをインストールする
2.Tableau DesktopでRedshiftをデータソースとして設定して、カスタムSQLで任意のワークブックをpublishする
3.Tableau Server REST APIでパブリッシュしたワークブックのViewを取得する

こちらで実際に解消することはできました。ただ、設定がmysqlのドライバーのインストールする際などより 数倍は手間がかかったため「Tableau DesktopでRedshiftをデータソースに設定する方法 - CUEBiC TEC BLOG」 で詳細は解説したいと思います。

まとめ

エラーコード400081が出たらまずは以下を疑う。

ポイント

  • 1.APIのアクセスキーを発行したユーザーの権限が足りない
  • 2.Viewがパブリッシュされていない
  • 3.ワークブックブックがパブリッシュされた直後
  • 4.データソースのパスワードが埋め込まれていない
  • 5.Tableau Cloud WEB でマルチデータソースでカスタムSQLを作成している
  • 6.データソースにRedshiftを使用している

原因切り分け方法

  • 1〜3は該当のワークブックまたはviewが取得できているかをまずは確認する
  • それでも解決しない場合は4,5,6を疑う

確認された以外でも扱うデータソースによってはまだまだエラーになるパターンは存在しそうです。 発見し次第、更新したいとお思います。
現状は原因に対してエラーコード/メッセージの内容がかなり不親切なので、細分化されたり、公式で トラブルシューティング方法が発表されることを願います。