Tableau Serverの各機能を使った時の内部動作について理解する #tableau

Tableau Serverを丸裸にする
2019.07.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どうも。データアナリティクス事業本部@大阪オフィスの玉井です。

米Tableau社のエンジニアの方が、Tableau Serverの内部動作に関するVizを作成していました(しかも2019.2対象なので、Ask DataやPrep Conductorの動作もあり)。

本家が語るTableau Serverの内部動作が図解でわかるようになっているのですが、個人的には、こういうのはVizよりザーッとテキストにするほうが頭に入るので、自分のためにまとめてみました。

本エントリを読む前に、以下に目を通しておくことをお薦めします。

目次

 

Tableau Serverの内部の動きを理解するメリット

Tableau Serverの各プロセスが、どのような時に使われるのかを知ると、以下のようなメリットがあると、上記のTableau本家ブログに記載があります。

  • 特定の要件に合わせてTableau Serverを最適化するのに役立つ
    • 例:リポジトリは、あらゆる操作に関して、多くの異なるプロセスからアクセスされるが、アクティブなリポジトリは1つしか構成できないため、リポジトリを他のプロセスと共存させようとしてもほとんど意味がない。
  • 問題が起こったときに、どの部分で問題があったか(どこのエラーログを確認すればいいか)を予想するのに役立つ
    • 例:データサーバーはパブリッシュされたデータソースへのリクエスト時にのみアクセスされるため、埋め込みデータソースのワークブックに関するエラーが発生した場合、データサーバーのログを見る必要はない。

また、私個人としては、Tableau Server導入時によく話題に上がる「認証」の部分と、運用時によく話題にあがる「抽出の定期更新」の仕組みが理解できるのも大きいと思います。

下記以降の、Tableau Serverの各操作時の動きを見れば、こういったことがわかってきます。ではいってみましょう。

 

パターン別のTableau Server内部の動き

 

認証

 

ローカル認証

  1. Tableau Serverへのリクエストは、Webブラウザ、Tableau Desktop、Tableau Mobileの3つのクライアントから発信されます。
  2. ゲートウェイはリクエストを受信し、それをアプリケーションサーバーに転送します。
  3. アプリケーションサーバーは、ユーザーに、ユーザー名とパスワードの入力を求め、それをリポジトリに転送してユーザーの証明を確認します(ユーザー名、パスワード、パーミッション)。
  4. リポジトリは証明が正いことを確認し、レスポンスをアプリケーションサーバーに送り返します。
  5. アプリケーションサーバーはポジティブレスポンスを登録し、ブラウザからアクセスされた場合にはWebインターフェイスの生成を開始して、リクエストをゲートウェイに転送します。
  6. ゲートウェイはリクエストを受信し、クライアントに転送します。
  7. クライアントは応答を受信し、必要に応じてWebインターフェイスを表示します。

 

Active Directory認証

  1. Tableau Serverへのリクエストは、Webブラウザ、Tableau Desktopの2つのクライアントから発信されます。
  2. ゲートウェイはリクエストを受信し、それをアプリケーションサーバーに転送します。
  3. アプリケーションサーバーは、ユーザー名が有効であることを確認するために、リクエストをリポジトリに転送します。
  4. リポジトリは、ユーザー名が存在することを確認し、適切なパーミッションを収集して、リクエストをアプリケーションサーバーに転送します。
  5. アプリケーションサーバーはポジティブレスポンスを登録し、リクエストをゲートウェイに転送します。
  6. ゲートウェイはリクエストを受信し、ADコントローラーに転送します。
  7. ADコントローラーはパスワードを確認し、レスポンスをゲートウェイに渡します。
  8. ゲートウェイはリクエストを受信し、レスポンスをアプリケーションサーバーに渡します。
  9. アプリケーションサーバーはポジティブレスポンスを登録し、Webインターフェイスの生成を開始して、リクエストをゲートウェイに転送します。
  10. ゲートウェイはリクエストを受信し、クライアントに転送します。
  11. クライアントは応答を受信し、必要に応じてWebインターフェイスを表示します。

 

SAML認証

  1. Tableau Serverへのリクエストは、Webブラウザ、Tableau Desktopの2つのクライアントから発信されます。
  2. ゲートウェイはリクエストを受信し、それをアプリケーションサーバーに転送します。
  3. アプリケーションサーバーはリクエストを受信し、そのリクエストを登録済みのSAML IdPにリダイレクトします。
  4. SAML IdPはユーザー名とパスワードのリクエストを受信し、ユーザーを認証します。 SAML IdPはSAML認証の成功したというレスポンスをアプリケーションサーバーに返します
  5. アプリケーションサーバーがリクエストをリポジトリに送信します
  6. リポジトリは、ユーザー名がTableau Serverのユーザー名と一致することを確認してから、リクエストをアプリケーションサーバーに返します。
  7. アプリケーションサーバーはポジティブレスポンスを登録してから、そのリクエストをゲートウェイに転送します。
  8. ゲートウェイはリクエストを受信し、クライアントに転送します。
  9. ユーザーはTableau Serverにログインできます

 

Kerberos認証

  1. ユーザーは自分のActive Directoryドメインにログインし、Kerberos Key Distribution Center(KDC)がユーザーを認証して、ユーザーのPCにTGT (Ticket Granting Ticket)を送信します。
  2. Tableau Serverへのアクセスリクエストがクライアントから送信されます
  3. ゲートウェイはリクエストを受け取り、それをアプリケーションサーバーに転送します。
  4. アプリケーションサーバーは、TGT内のユーザープリンシパル名(UPN)がリポジトリ内のdomain \ usernameと一致することを確認します。
  5. リポジトリはリクエストをアプリケーションサーバーに返します。
  6. アプリケーションサーバーはゲートウェイにリクエストを返します
  7. ゲートウェイはクライアントにレスポンスを返します
  8. ユーザーはTableau Serverにログインできます

 

ビューの閲覧

 

キャッシュされたビュー

  1. Tableau Serverへのリクエストは、Webブラウザ、Tableau Desktop、Tableau Mobileの3つのクライアントから発信されます。
  2. ゲートウェイはリクエストを受信し、それをアプリケーションサーバーに転送します。
  3. アプリケーションサーバーは認証を完了し、VizClientを使用してVizのレンダリングを開始します。その後、ワークブックのリクエストがVizClientからVizQLサーバーに送信されます。
  4. VizQLサーバは、表示するユーザーパーミッションを検証するために、リポジトリにクエリを実行し、.twbファイルをリクエストします。
  5. リポジトリは、ビューの作成に必要な.twbファイルとともに、クエリの結果をVizQLサーバーに送信します。
  6. VizQLサーバは、キャッシュされたクエリについて、現在存在するキャッシュをチェックします。クエリの結果が存在しない場合は、キャッシュサーバーをチェックします。
  7. キャッシュサーバーは、キャッシュされたクエリを外部クエリキャッシュから取得し、VizQLサーバーに渡します。
  8. VizQLサーバはビューをレンダリングし、ビューをゲートウェイに配信します。
  9. ゲートウェイはレンダリングされたビューを、リクエストに対するレスポンスとしてユーザーに送信します。
  10. クライアントはレンダリングされたビューを表示します。

 

ビューのデータソースが埋め込み抽出ファイル

  1. Tableau Serverへのリクエストは、Webブラウザ、Tableau Desktop、Tableau Mobileの3つのクライアントから発信されます。
  2. ゲートウェイはリクエストを受信し、それをアプリケーションサーバーに転送します。
  3. アプリケーションサーバーは認証を完了し、VizClientを使用してVizのレンダリングを開始します。その後、ワークブックのリクエストがVizClientからVizQLサーバーに送信されます。
  4. VizQLサーバーは、表示するユーザーパーミッションを検証するために、リポジトリにクエリを実行し、.twbファイルをリクエストします。
  5. リポジトリは、ビューの作成に必要な.twbファイルとともに、クエリの結果をVizQLサーバーに送信します。
  6. VizQLサーバーがデータエンジンから必要なデータをリクエストします
  7. データエンジンがディスクに接続し、データエンジンフォルダからデータを抽出します
  8. VizQLサーバーは、必要なデータをデータエンジンに問い合わせます
  9. データエンジンが問い合わせ済みデータをVizQLサーバーに渡します
  10. VizQLサーバはビューをレンダリングし、ビューをゲートウェイに配信します。
  11. ゲートウェイはレンダリングされたビューを、リクエストに対するレスポンスとしてユーザーに送信します。
  12. クライアントはレンダリングされたビューを表示します。

 

ビューのデータソースが認証情報埋め込みのライブ接続

  1. Tableau Serverへのリクエストは、Webブラウザ、Tableau Desktop、Tableau Mobileの3つのクライアントから発信されます。
  2. ゲートウェイはリクエストを受信し、それをアプリケーションサーバーに転送します。
  3. アプリケーションサーバーは認証を完了し、VizClientを使用してVizのレンダリングを開始します。その後、ワークブックのリクエストがVizClientからVizQLサーバーに送信されます。
  4. VizQLサーバーは、表示するユーザーパーミッションを検証するために、リポジトリにクエリを実行し、.twbファイルをリクエストします。
  5. リポジトリは、ビューの作成に必要な.twbファイルとともに、クエリの結果をVizQLサーバーに送信します。
  6. VizQLサーバーはデータコネクションに接続します
  7. データコネクションは、データソースへのアクセスに使用されます
  8. データベースからのデータがVizQLサーバーに渡されます
  9. VizQLサーバーはビューをレンダリングし、ビューをゲートウェイに配信します。
  10. ゲートウェイはレンダリングされたビューを、リクエストに対するレスポンスとしてユーザーに送信します。
  11. クライアントはレンダリングされたビューを表示します。

 

ビューのデータソースが外部ファイル(Excelとか)

  1. Tableau Serverへのリクエストは、Webブラウザ、Tableau Desktop、Tableau Mobileの3つのクライアントから発信されます。
  2. ゲートウェイはリクエストを受信し、それをアプリケーションサーバーに転送します。
  3. アプリケーションサーバーは認証を完了し、VizClientを使用してVizのレンダリングを開始します。その後、ワークブックのリクエストがVizClientからVizQLサーバーに送信されます。
  4. VizQLサーバーは、表示するユーザーパーミッションを検証するために、リポジトリにクエリを実行し、.twbファイルをリクエストします。
  5. リポジトリは、ビューの作成に必要な.twbファイルとともに、クエリの結果をVizQLサーバーに送信します。
  6. VizQLサーバーがリポジトリにクエリを送信し、必要なデータを取得します
  7. リポジトリがクエリの結果をVizQLサーバに送り返します
  8. VizQLサーバーはビューをレンダリングし、ビューをゲートウェイに配信します。
  9. ゲートウェイはレンダリングされたビューを、リクエストに対するレスポンスとしてユーザーに送信します。
  10. クライアントはレンダリングされたビューを表示します。

 

ビューのデータソースがパブリッシュ済の抽出ファイル

  1. Tableau Serverへのリクエストは、Webブラウザ、Tableau Desktop、Tableau Mobileの3つのクライアントから発信されます。
  2. ゲートウェイはリクエストを受信し、それをアプリケーションサーバーに転送します。
  3. アプリケーションサーバーは認証を完了し、VizClientを使用してVizのレンダリングを開始します。その後、ワークブックのリクエストがVizClientからVizQLサーバーに送信されます。
  4. VizQLサーバーは、表示するユーザーパーミッションを検証するために、リポジトリにクエリを実行し、.twbファイルをリクエストします。
  5. リポジトリは、ビューの作成に必要な.twbファイルとともに、クエリの結果をVizQLサーバーに送信します。
  6. VizQLサーバーは、必要なデータを取得するために、クエリをデータサーバーに発行します。
  7. データサーバーは、パブリッシュされた抽出ファイルにアクセスし、クエリをデータエンジンに送信するプロキシとして機能します。
  8. データエンジンはディスクに接続し、データエンジンフォルダからデータを抽出します。
  9. 抽出されたデータはデータサーバに渡されて解釈され、データサーバーからVizQLサーバーに渡されます。
  10. VizQLサーバーはビューをレンダリングし、ビューをゲートウェイに配信します。
  11. ゲートウェイはレンダリングされたビューを、リクエストに対するレスポンスとしてユーザーに送信します。
  12. クライアントはレンダリングされたビューを表示します。

 

ビューのデータソースがパブリッシュ済のライブ接続

  1. Tableau Serverへのリクエストは、Webブラウザ、Tableau Desktop、Tableau Mobileの3つのクライアントから発信されます。
  2. ゲートウェイはリクエストを受信し、それをアプリケーションサーバーに転送します。
  3. アプリケーションサーバーは認証を完了し、VizClientを使用してVizのレンダリングを開始します。その後、ワークブックのリクエストがVizClientからVizQLサーバーに送信されます。
  4. VizQLサーバーは、表示するユーザーパーミッションを検証するために、リポジトリにクエリを実行し、.twbファイルをリクエストします。
  5. リポジトリは、ビューの作成に必要な.twbファイルとともに、クエリの結果をVizQLサーバーに送信します。
  6. VizQLサーバーは、必要なデータを取得するために、クエリをデータサーバーに発行します。
  7. データサーバーは、データソースにアクセスするためのプロキシとして機能し、クエリをデータコネクションに送信します。
  8. データコネクションは、データソースへのアクセスに使用されます。
  9. データベースからのデータはデータサーバーに渡されます。
  10. データサーバーは解釈されたデータをVizQLサーバーに渡します
  11. VizQLサーバーはビューをレンダリングし、ビューをゲートウェイに配信します。
  12. ゲートウェイはレンダリングされたビューを、リクエストに対するレスポンスとしてユーザーに送信します。
  13. クライアントはレンダリングされたビューを表示します。

 

ワークブックのパブリッシュ

 

データソースが抽出ファイル

  1. Tableau Desktopは、ワークブックのサムネイルを生成し、ワークブックのアップロードをリクエストし、.twbxファイルを送信します。
  2. ゲートウェイは、アプリケーションサーバーにリクエストを渡します。
  3. アプリケーションサーバーがリクエストを処理し、リポジトリに格納するためにXMLとして送信します。
  4. リポジトリには、サムネイルとワークブックのXML(接続情報を含む)が格納されます。
  5. アプリケーションサーバーがリクエストをファイルストアに渡します。
  6. ファイルストアは相対パス(GUID)をリポジトリに送信し、他のファイルストアのノードへのデータの複製プロセスを開始します。
  7. リポジトリには、データソースへの新しい相対パスが格納されます。
  8. アプリケーションサーバーが 「ワークブックのパブリッシュの結果」 ダイアログウィンドウを作成します
  9. ゲートウェイがユーザーにレスポンスを送信します。
  10. [ワークブックのパブリッシュの結果] ダイアログウィンドウが表示されます。

 

データソースがライブ接続

  1. Tableau Desktopは、ワークブックのサムネイルを生成し、ワークブックのアップロードをリクエストし、.twbxファイルを送信します。
  2. ゲートウェイは、アプリケーションサーバーにリクエストを渡します。
  3. アプリケーションサーバーがリクエストを処理し、リポジトリに格納するためにXMLとして送信します。
  4. リポジトリには、サムネイルとワークブックのXML(接続情報を含む)が格納されます。
  5. アプリケーションサーバーが 「ワークブックのパブリッシュの結果」 ダイアログウィンドウを作成します
  6. ゲートウェイがユーザーにレスポンスを送信します。
  7. [ワークブックのパブリッシュの結果] ダイアログウィンドウが表示されます。

 

データソースのパブリッシュ

 

抽出ファイルのパブリッシュ

  1. Tableau Desktopがデータソースのアップロードをリクエストします。
  2. ゲートウェイは、アプリケーションサーバーにリクエストを渡します。
  3. アプリケーションサーバーがリクエストを処理し、XMLにしてリポジトリに送信します。
  4. リポジトリはXML(接続情報を含む)を格納し、リクエストをアプリケーションサーバーに返します。
  5. アプリケーションサーバーがデータエンジンにリクエストを渡します。
  6. データエンジンはディスクに接続し、抽出したデータをデータエンジンフォルダに保存してファイルストアに渡します。
  7. ファイルストアは相対パス(GUID)をリポジトリに送信し、他のファイルストアのノードへのデータの複製プロセスを開始します。他のタスクを開始する前に複製が完了される必要はありません。
  8. リポジトリはデータソースへの新しい相対パスを保存し、リクエストをゲートウェイに返します。
  9. ゲートウェイがユーザーにレスポンスを送信します。
  10. [データソースのパブリッシュの結果] ダイアログウィンドウが表示されます。

 

ライブ接続のパブリッシュ

  1. Tableau Desktopがデータソースのアップロードをリクエストします。
  2. ゲートウェイは、アプリケーションサーバーにリクエストを渡します。
  3. アプリケーションサーバーがリクエストを処理し、XMLにしてリポジトリに送信します。
  4. リポジトリはXML(接続情報を含む)を格納し、リクエストをアプリケーションサーバーに返します。
  5. アプリケーションサーバーが [データソースのパブリッシュの結果] ダイアログウィンドウを作成します。
  6. ゲートウェイがユーザーにレスポンスを送信します。
  7. [データソースのパブリッシュの結果] ダイアログウィンドウが表示されます。

 

サブスクリプションの送信

 

対象ワークブックのデータソースが、埋め込み抽出ファイル

  1. バックグラウンダーは、「どのユーザー」の「どのビュー」に対して「どのサブスクリプション」を実行する必要があるかをリポジトリに問い合わせます。
  2. リポジトリは、実行する必要があるサブスクリプションに関する情報を返します。
  3. バックグラウンダーは、更新されたデータに対するリクエストをデータエンジンに送信します。
  4. データエンジンはディスクに接続し、データエンジンフォルダから抽出ファイルを引き出して、それをバックグラウンダーに返します。
  5. バックグラウンダーはリクエストをVizQLサーバーに送信して、リクエストされたビューをレンダリングします。
  6. VizQLサーバーはビューをレンダリングし、ビュー画像とユーザー情報(Eメール)をSMTPサーバーに送信します。
  7. SMTPサーバーはEメールを生成し、それをエンドユーザーに送信します。

 

対象ワークブックのデータソースが、認証情報埋め込みのライブ接続

  1. バックグラウンダーは、「どのユーザー」の「どのビュー」に対して「どのサブスクリプション」を実行する必要があるかをリポジトリに問い合わせます。
  2. リポジトリは、実行する必要があるサブスクリプションに関する情報を返します。
  3. バックグラウンダーは、更新されたデータに対するリクエストをデータコネクションに送信します。
  4. データコネクションはデータソースへのアクセスに使用されます。
  5. データベースからのデータはバックグラウンダーに渡されます。
  6. バックグラウンダーはリクエストをVizQLサーバーに送信して、リクエストされたビューをレンダリングします。
  7. VizQLサーバーはビューをレンダリングし、ビュー画像とユーザー情報(Eメール)をSMTPサーバーに送信します。
  8. SMTPサーバーはEメールを生成し、それをエンドユーザーに送信します。

 

対象ワークブックのデータソースが、パブリッシュ済の抽出ファイル

  1. バックグラウンダーは、「どのユーザー」の「どのビュー」に対して「どのサブスクリプション」を実行する必要があるかをリポジトリに問い合わせます。
  2. リポジトリは、実行する必要があるサブスクリプションに関する情報を返します。
  3. バックグラウンダーは、更新されたデータに対するリクエストをデータサーバーに送信します。
  4. データサーバーはプロキシとして機能し、データソースに接続するネイティブドライバーに接続します。
  5. データエンジンはディスクに接続し、データエンジンフォルダから抽出ファイルを引き出して、それをデータサーバーに返します。
  6. 抽出データはデータサーバーによって解釈され、次にバックグラウンダーに渡されます。
  7. バックグラウンダーはリクエストをVizQLサーバーに送信して、リクエストされたビューをレンダリングします。
  8. VizQLサーバーはビューをレンダリングし、ビュー画像とユーザー情報(Eメール)をSMTPサーバーに送信します。
  9. SMTPサーバーはEメールを生成し、それをエンドユーザーに送信します。

 

対象ワークブックのデータソースが、パブリッシュ済のライブ接続

  1. バックグラウンダーは、「どのユーザー」の「どのビュー」に対して「どのサブスクリプション」を実行する必要があるかをリポジトリに問い合わせます。
  2. リポジトリは、実行する必要があるサブスクリプションに関する情報を返します。
  3. バックグラウンダーは、更新されたデータに対するリクエストをデータサーバーに送信します。
  4. データサーバーはデータソースにアクセスするためのプロキシとして機能し、クエリをデータコネクションに送信します。
  5. データコネクションはデータソースへのアクセスに使用されます
  6. データベースからのデータは解釈のためにデータサーバーに渡されます
  7. データサーバーはデータを解釈し、それをバックグラウンダーに渡します。
  8. バックグラウンダーはビューをレンダリングし、ビュー画像とユーザー情報(Eメール)をSMTPサーバーに送信します。
  9. SMTPサーバーはEメールを生成し、それをエンドユーザーに送信します

 

定期実行

 

抽出ファイルの定期更新

  1. バックグラウンダーは、どの抽出ファイル/ワークブックでスケジュールを実行する必要があるかについて、10秒ごとにリポジトリ内のbackground_jobsテーブルを照会します。
  2. リポジトリは、実行する必要があるスケジュールに関する情報をバックグラウンダーに返します。
  3. 利用可能なバックグラウンダーは更新抽出タスクを選択し、進行状況を-1から0(進行中)に設定します。
  4. バックグラウンダーは接続を確認し、埋め込まれた資格情報を使用して、基となるデータソースに接続します。
  5. データエンジンはlocal.hyperデータベースを作成します。
  6. データコネクションは、抽出を更新するためのデータを、基になるデータソースにクエリするために使用されます。
  7. 外部データソースはデータをバックグラウンダーに返します。
  8. バックグラウンダーは、TableauTempフォルダ内のローカルデータベースにタプルを挿入するようデータエンジンにリクエストします。
  9. データエンジンは、ファイルシステムのデータエンジンフォルダにローカルのHyper/TDEファイルをアップロードし、相対パスを書き換えます。
  10. ファイルストアは相対パス(GUID)をリポジトリに送信し、他のファイルストアのノードへのデータの複製プロセスを開始します。
  11. リポジトリによってxmlテーブルとextractテーブルが更新され、background_jobsテーブルのタスクの優先度が100(完了)に更新されます。

 

フロー(Tableau Prep Conductor)の定期実行

  1. バックグラウンダーは、どの抽出ファイル/ワークブックでスケジュールを実行する必要があるかについて、10秒ごとにリポジトリ内のbackground_jobsテーブルを照会します。
  2. リポジトリは、実行する必要があるスケジュールに関する情報をバックグラウンダーに返します。
  3. ノードのロールがflowまたはall-jobsであるノードで、使用可能なバックグラウンダーがあると、フロータスクが選択され、進行状況が-1から0(進行中)に設定されます。
  4. バックグラウンダーはフロータスクからフローIDをPrep Conductorに送信します。
  5. Prep ConductorはフローIDをファイルストアに送信し、フローファイル(.tflまたは.tflx)を要求します。
  6. ファイルストアはフローファイルをPrep Conductorに送信します。
  7. Prep Conductorはフローをコンパイルします(一連のクエリと実行計画に変換します)。
  8. Prep Conductorは外部データソースに対してフローを実行します(クエリを実行します)。
  9. Prep Conductorは、ローカルのHyperファイルをディスク上に作成し、処理されたデータをそのファイルにアップロードします。
  10. フローの出力タイプに応じて、Prep ConductorはHyperファイルをTableau Serverの抽出ファイルとしてパブリッシュするか、またはネットワーク共有内のファイルに書き込みます。

 

(Tableau Server上で)新しいワークブックを作成

 

データソースが抽出ファイル

  1. ユーザーがWebブラウザからWebインターフェイスを使用して、パブリッシュされているデータソースから新しいワークブックを作成するようにリクエストします。
  2. ゲートウェイはリクエストを受け取り、それをアプリケーションサーバーに転送して、ユーザーがすでに認証されているかどうかを確認します。
  3. アプリケーションサーバーは認証を完了し、VizClientを使用してVizのレンダリングを開始します。データソースのリクエストが開始されます。
  4. VizQLサーバーは、新しいセッションと新しい空のワークブックとワークシートを作成し、リポジトリに対するクエリを実行して表示するためのユーザー権限を検証し、次に.tdsファイルをリクエストします。
  5. リポジトリは、クエリの結果と、データのロードに必要な.tdsファイルをVizQLサーバーに送り返します。
  6. VizQLサーバーはデータサーバーを介して公開されたデータソースに接続します。
  7. データサーバーは、パブリッシュされた抽出ファイルにアクセスするためのプロキシとして機能し、クエリをデータエンジンに送信します。
  8. データエンジンはディスクに接続し、データエンジンフォルダから抽出を引き出します
  9. 抽出からのデータは解釈のためにデータサーバーに渡され、データサーバーはそれをVizQLサーバーに渡します。
  10. VizQLサーバーは空白のWeb編集インターフェースを表示します
  11. アプリケーションサーバーはWeb編集インタフェースを囲むインタフェースをロードします。
  12. ゲートウェイはユーザーにレスポンスを送信します
  13. ユーザーは選択したパブリッシュデータソースでWeb編集画面を表示して使用できるようになります。

 

データソースがライブ接続

  1. ユーザーがWebブラウザからWebインターフェイスを使用して、パブリッシュされているデータソースから新しいワークブックを作成するようにリクエストします。
  2. ゲートウェイはリクエストを受け取り、それをアプリケーションサーバーに転送して、ユーザーがすでに認証されているかどうかを確認します。
  3. アプリケーションサーバーは認証を完了し、VizClientを使用してVizのレンダリングを開始します。データソースのリクエストが開始されます。
  4. VizQLサーバーは、新しいセッションと新しい空のワークブックとワークシートを作成し、リポジトリに対するクエリを実行して表示するためのユーザー権限を検証し、次に.tdsファイルをリクエストします。
  5. VizQLサーバーはデータサーバーを介して、パブリッシュされたデータソースに接続します。
  6. データサーバはデータコネクションに接続します。
  7. データコネクションは外部データソースへの問い合わせに使用されます。
  8. 外部データソースは、データをデータサーバーに返します。
  9. データサーバーは解釈されたデータをVizQLサーバーに渡します。
  10. VizQLサーバーは空白のWeb編集インターフェースを表示します。
  11. アプリケーションサーバーはWeb編集インタフェースを囲むインタフェースをロードします。
  12. ゲートウェイはユーザーにレスポンスを送信します。
  13. ユーザーは選択したパブリッシュデータソースでWeb編集画面を表示して使用できるようになります。

 

Ask Data

  1. ユーザーはパブリッシュされたデータソースのページにアクセスします。
  2. ゲートウェイはリクエストを受け取り、それをアプリケーションサーバーに転送して、ユーザーがすでに認証されているかどうかを確認します。
  3. アプリケーションサーバーは認証を完了してページをレンダリングします。
  4. アプリケーションサーバーは、自然言語(NL)サービスの「semantic-model/initialize APIエンドポイント」に対して、データソースIDとユーザーセッションでセマンティックモデルを初期化するようにリクエストします。
  5. セマンティックモデルコントローラは、コンテンツモデルからデータを取得し、データサーバーから、値と、値の統計情報を取得し、Recommendationsから人気データを取得し、ジオコーディングデータベースからジオコーディングデータを取得することによって、指定されたデータソースのセマンティックモデルをアセンブルして保管します。Elasticsearchの値をインデックスするバックグラウンドプロセスが起動されます。
  6. Elasticsearchは値にインデックスを付けます。
  7. データソースページに「NLP」タブが表示され、VizClientセッション内のNLボックスがロードされます。ユーザーは、データソースに関連するNLボックス内でクエリを発行します。(例:sales by country
  8. VizClientはVizQLサーバーにコマンドを発行し、VizQLサーバーはクエリ、データソースID、およびクエリを解釈するためのその他のメタデータを使ってNLサービスのクエリAPIエンドポイントにリクエストを行います。
  9. パーサーは、ランク付けされたArkLang式の形式で、クエリの解釈のリストを生成して返します。これには、Elasticsearchで索引付けされたデータを照会してクエリ内のトークンを認識し、文法規則と推論規則を使用して式を組み立てます。
  10. VizClientはArkLangの解釈の自然言語をドロップダウンメニューに表示し、ユーザーは視覚化したい解釈を選択します。
  11. VizClientは、選択されたArkLang式のコマンドをVizQLサーバーに発行します。VizQLサーバーは、NLボックスの下にビジュアライゼーションをレンダリングするコマンドを実行します。
  12. 次に、ユーザーは絞り込みUIを使用してクエリを絞り込みこむか、新しいワークブックにビジュアライゼーションを保存するか、まったく新しい質問をするためにクエリをクリアするかのいずれかをとることができます。

 

おわりに

動作について一通りわかったところで、Tableau Serverをよりよく改善していくためにはどうすればいいのかという話ですが、公式ドキュメントに情報がまとまっていました。こちらも読んでおきたいですね。