Tableau と Databricksの接続

この記事では、Partner Connect を使用して Databricks から Tableau Desktop に接続する方法、および Tableau Desktop または Tableau Cloud から Databricks に接続する方法について説明します。 この記事には、Tableau Server on Linux に関する情報も含まれています。

Tableau Server からの Databricks サインオンを構成するには、 Tableau Server からの Databricks サインオンの構成を参照してください。

Tableau で Databricks をデータ ソースとして使用すると、強力な対話型アナリティクスを提供し、大規模なデータセットにスケーリングすることで、データ サイエンティストやデータ エンジニアの貢献をビジネス アナリストにもたらすことができます。

Tableau と Databricksを接続するための要件

Partner Connectを使用した Databricks の Tableau Desktop への接続

Partner Connect を使用すると、数回クリックするだけでコンピュート リソースや SQLウェアハウスを Tableau Desktop に接続できます。

  1. Databricks アカウント、ワークスペース、およびサインインしているユーザーがすべて Partner Connectの 要件を満たし ていることを確認します。

  2. サイドバーで、「 Partner Connect ボタン Partner Connect 」をクリックします

  3. [ Tableau ] タイルをクリックします。

  4. [ パートナーへの接続 ] ダイアログの [コンピュート] で、接続する Databricks コンピュート リソースの名前を選択します。

  5. [ 接続ファイルのダウンロード] を選択します。

  6. ダウンロードした接続ファイルを開くと、Tableau Desktop が起動します。

  7. Tableau Desktop で、認証資格情報を入力し、[ サインイン] をクリックします。

    • [ユーザー名] に「token」と入力し、[パスワード] に Databricks personal アクセストークンを入力します。

Tableau Desktop を Databricksに接続する

次の手順に従って、 Tableau Desktop からコンピュート リソースまたは SQLウェアハウスに接続します。

Tableau Desktop でより高速に接続するには、 Partner Connectを使用します。

  1. Tableau Desktop を起動します。

  2. [ ファイル] > [新規作成] をクリックします。

  3. [データ] タブで、[データに接続] をクリックします。

  4. コネクタのリストで、[ Databricks] をクリックします。

  5. サーバのホスト名HTTP パスを入力します。

  6. [認証] で、認証方法を選択し、認証資格情報を入力して、[サインイン] をクリックします。

    • Databricks の個人用アクセストークンを使用するには、[個人用アクセストークン] を選択し、[パスワード] に 個人用アクセストークンを入力します。

Tableau Cloud を Databricksに接続する

次の手順に従って、 からコンピュート リソースまたはSQL ウェアハウスに接続します。Tableau Cloud

  • 新しいワークブックを開始する

  • メニューバーで、[ データ ] > [新しいデータソース] をクリックします。

  • [データに接続] ページで、[ コネクタ ] > [Databricks] をクリックします。

  • [Databricks] ページで、[ サーバー ホスト名 ] と [HTTP パス ] の値を入力します。

  • 認証方法を選択し、必要な情報を入力します(ある場合)。

  • [サインイン] をクリックします。

Tableau Server on Linux

/etc/odbcinst.ini を編集して、以下を含めます。

[Simba Spark ODBC Driver 64-bit]
Description=Simba Spark ODBC Driver (64-bit)
Driver=/opt/simba/spark/lib/64/libsparkodbc_sb64.so

Tableau Server on Linux では、64 ビット処理アーキテクチャを推奨しています。

Tableau Desktopから Tableau Cloud にワークブックをパブリッシュおよび更新する

この記事では、Tableau Desktop から Tableau Cloud にブックをパブリッシュし、データソースが変更されたときに最新の状態に保つ方法について説明します。Tableau Desktop の ワークブックTableau Cloud アカウントが必要です。

  1. Tableau Desktop からワークブックのデータを抽出する: Tableau Desktop で、パブリッシュするワークブックが表示された状態で、[データ] > <data-source-name> > [データの抽出] をクリックします。

  2. [ データの抽出 ] ダイアログ ボックスで、[ 抽出] をクリックします。

  3. 抽出したデータを保存するローカル コンピューター上の場所を参照し、[ 保存] をクリックします。

  4. ワークブックのデータソースを Tableau Cloudにパブリッシュする : Tableau Desktop で、[ サーバー] > [データソースのパブリッシュ] > <data-source-name>] の順にクリックします。

  5. [Tableau Server サインイン] ダイアログ ボックスが表示された場合は、[Tableau Cloud] リンクをクリックし、画面の指示に従って Tableau Cloud にサインインします。

  6. [Publish Data] to Tableau Cloudダイアログボックスで、[更新 Not Enabled] の横にある [Edit] リンクをクリックします。

  7. 表示されるポップアップ ボックスで、[ 認証] で [更新 が有効になっていない ] を [ 更新アクセスを許可する] に変更します。

  8. このポップアップの外側をクリックして非表示にします。

  9. [ ワークブックの更新] を選択して、パブリッシュされた DATA を使用します

  10. 「公開」をクリックします。データソースが Tableau Cloudに表示されます。

  11. Tableau Cloud の [パブリッシュ完了 ] ダイアログ ボックスで [スケジュール] をクリックし、画面の指示に従います。

  12. ワークブックを Tableau Cloud にパブリッシュする: Tableau Desktop で、パブリッシュするワークブックを表示した状態で、[ サーバー] > [ワークブックのパブリッシュ] をクリックします。

  13. [ワークブックを Tableau Cloud にパブリッシュ] ダイアログ ボックスで、[パブリッシュ] をクリックします。ワークブックが Tableau Cloud に表示されます。

Tableau Cloud は、設定したスケジュールに従ってデータソースへの変更を確認し、変更が検出された場合はパブリッシュされたワークブックを更新します。

詳細については、Tableau Web サイトの以下を参照してください。

ベスト プラクティスとトラブルシューティング

Tableau クエリーを最適化するための 2 つの基本的なアクションは次のとおりです。

  • クエリーされ、1 つのグラフまたはダッシュボードで視覚化されるレコードの数を減らします。

  • Tableau から 1 つのグラフまたはダッシュボードで送信されるクエリーの数を減らします。

どちらを最初に試すかは、ダッシュボードによって異なります。 同じダッシュボードに個々のユーザーの異なるグラフが多数ある場合は、Tableau が Databricks に送信するクエリーが多すぎる可能性があります。 グラフが 2 つしかないが、読み込みに時間がかかる場合は、Databricks によって返されるレコードが多すぎて効果的に読み込むことができない可能性があります。

Tableau Desktop と Tableau Server の両方で利用可能な Tableau パフォーマンス記録は、特定のワークフローまたはダッシュボードの実行時にレイテンシーを引き起こすプロセスを特定することで、パフォーマンスのボトルネックを特定するのに役立ちます。

パフォーマンスの記録を有効にして Tableau の問題をデバッグする

たとえば、クエリーの実行が問題である場合は、クエリを実行しているデータ エンジン プロセスまたは Data に関係していることがわかります。 ビジュアル レイアウトのパフォーマンスが遅い場合は、それが VizQL であることがわかります。

パフォーマンス記録で、実行中のクエリにレイテンシーがあることが示されている場合は、Databricks が結果を返すのに時間がかかりすぎているか、ODBC/Connector オーバーレイがデータを VizQL の SQL に処理している可能性があります。 これが発生した場合は、返しているものを分析し、すべてを 1 つのダッシュボードに詰め込んでクイックフィルターに頼るのではなく、グループ、セグメント、または記事ごとにダッシュボードを持つように分析パターンを変更してみてください。

パフォーマンスの低下が並べ替えや視覚的なレイアウトによって引き起こされている場合、問題はダッシュボードが返そうとしているマークの数である可能性があります。 Databricks は 100 万件のレコードをすばやく返す Tableau ことができますが、レイアウトをコンピュートして結果を並べ替えることができない場合があります。 これが問題になる場合は、クエリを集約し、下位レベルにドリルダウンします。 Tableau は、それが実行されているマシン上の物理リソースによってのみ制約されるため、より大きなマシンを試すこともできます。

パフォーマンス レコーダーの詳細なチュートリアルについては、「 パフォーマンス記録の作成」を参照してください。

Tableau Server と Tableau Desktop でのパフォーマンス

一般に、Tableau Desktop で実行されるワークフローは、Tableau Server では高速ではありません。 Tableau Desktop で実行されないダッシュボードは、Tableau Server では実行されません。

Tableau Server にはトラブルシューティング時に考慮すべきプロセスが多いため、Desktop を使用すると、トラブルシューティング手法がはるかに優れています。 Tableau Desktop では機能するが Tableau Server では機能しない場合は、Tableau Desktop にない Tableau Server のプロセスに問題を安全に絞り込むことができます。

構成

デフォルトでは、接続 URL のパラメーターが Simba ODBC DSN のパラメーターをオーバーライドします。 Tableau から ODBC 構成をカスタマイズするには、次の 2 つの方法があります。

  • .tds 単一のデータソースのファイル:

    1. 「データソースの保存 」の手順に従って、データソースの .tds ファイルをエクスポートします。

    2. .tds ファイルで敷地境界線 odbc-connect-string-extras='' を見つけて、パラメーターを設定します。たとえば、 AutoReconnectUseNativeQueryを有効にするには、行を odbc-connect-string-extras='AutoReconnect=1,UseNativeQuery=1'に変更します。

    3. 接続を再接続して、 .tds ファイルをリロードします。

    コンピュートリソースは、大きな結果を収集するために使用するヒープメモリが少なくなるように最適化されているため、Simba ODBC のデフォルトよりもフェッチブロックごとに多くの行を処理できます。 odbc-connect-string-extras プロパティの値に RowsFetchedPerBlock=100000' を追加します。

  • .tdc すべての DATA のファイル:

    1. .tdc ファイルを作成したことがない場合は、 TableauTdcExample.tdcDocument/My Tableau Repository/Datasourcesフォルダーに追加できます。

    2. すべての開発者の Tableau Desktop インストールにファイルを追加して、ダッシュボードが共有されているときに機能するようにします。

グラフの最適化 (ワークシート)

Tableau ワークシートのパフォーマンスを向上させるのに役立つ戦術的なグラフの最適化がいくつかあります。

頻繁に変更されず、操作を意図していないフィルターの場合は、実行時間を短縮するコンテキスト フィルターを使用します。 別の良い経験則は、クエリで case/when ステートメントの代わりに if/else ステートメントを使用することです。

Tableau はフィルターをデータソースにプッシュダウンできるため、クエリの速度を向上させることができます。 データソース プッシュ ダウン フィルターの詳細については、「 パラメーターを使用した複数のデータソース間でのフィルター処理 」および「 複数のデータソース間でのデータのフィルター処理」を参照してください。

テーブル計算は、データセット全体をスキャンするため、避けてください。 表計算の詳細については、 表計算による値の変換を参照してください。

ダッシュボードの最適化

以下は、Tableau ダッシュボードのパフォーマンスを向上させるために適用できるヒントとトラブルシューティングの演習です。

Tableauダッシュボードが Databricksに接続されている場合、さまざまなユーザー、機能、またはセグメントに対応する個々のダッシュボードのクイック フィルターは、問題の一般的なソースになる可能性があります。クイック フィルターは、ダッシュボード上のすべてのグラフにアタッチできます。 5 つのグラフを含むダッシュボードで 1 つのクイック フィルターを実行すると、少なくとも 10 個のクエリが Databricks に送信されます。 これは、フィルターを追加すると数が増える可能性があり、 Spark は同じ瞬間に開始する多数の並列クエリを処理するように構築されていないため、パフォーマンスの問題が発生する可能性があります。 これは、使用している Databricks クラスターまたは SQLウェアハウスが大量のクエリを処理するのに十分な大きさでない場合に、より問題になります。

最初のステップとして、Tableau パフォーマンス記録を使用して、問題の原因をトラブルシューティングすることをお勧めします。

パフォーマンスの低下が 並べ替え視覚的なレイアウトによって引き起こされている場合、問題はダッシュボードが返そうとしているマークの数である可能性があります。 Databricks は 100 万件のレコードをすばやく返す Tableau ことができますが、レイアウトをコンピュートして結果を並べ替えることができない場合があります。 これが問題になる場合は、クエリを集約し、下位レベルにドリルダウンします。 Tableau は、それが実行されているマシン上の物理リソースによってのみ制約されるため、より大きなマシンを試すこともできます。

Tableau でのドリルダウンに関する情報については、 詳細へのドリルダウンを参照してください。

詳細なマークが多数見られる場合、これは多くの場合、知見が得られないため、分析パターンが不十分です。 より高いレベルの集計からドリルダウンする方が理にかなっていますし、処理して視覚化する必要があるレコードの数を減らすことができます。

アクションを使用してダッシュボードを最適化する

Tableau _actions を使用してマーク (マップ上の州など) をクリックすると、クリックした州に基づいてフィルタリングされる別のダッシュボードに移動します。 _actionsを使用すると、1つのダッシュボードで複数のフィルターを使用する必要性と、生成する必要があるレコードの数が減ります。 (フィルタリングする述部を取得するまでレコードを生成し ないように アクションを設定しています。

詳細については、「 ダッシュボードのパフォーマンスを向上させるためのアクションと 6 つのヒント 」を参照してください。

キャッシング

データのキャッシュは、ワークシートまたはダッシュボードのパフォーマンスを向上させるための優れた方法です。

Tableau でのキャッシュ

Tableau には、データがライブ接続にあるか抽出にあるかに関係なく、データに戻る前に 4 つのキャッシュ層があります。

  • タイル: 誰かが同じダッシュボードをロードし、何も変更がない場合、Tableau はチャートに同じタイルを再利用しようとします。 これはGoogleマップのタイルに似ています。

  • モデル: タイル キャッシュを使用できない場合は、数学的計算のモデル キャッシュを使用してビジュアライゼーションが生成されます。 Tableau Server は同じモデルを使用しようとします。

  • 要約: クエリーの集計結果も保存されます。 これは3番目の「防御」レベルです。 以前のクエリーで Sum(売上)、カウント (注文)、Sum(コスト) が返され、将来のクエリーが Sum(Sales) だけを必要とする場合、Tableau はその結果を取得して使用します。

  • ネイティブ キャッシュ: クエリが別のクエリと同じ場合、Tableau は同じ結果を使用します。 これは、キャッシングの最後のレベルです。 これが失敗した場合、Tableau はデータに移動します。

Tableau でのキャッシュ頻度

Tableau には、キャッシュの頻度を増減するための管理設定があります。 サーバーが [更新頻度を低くする] に設定されている場合、Tableau はデータを最大 12 時間キャッシュに保持します。 サーバーが [より頻繁に更新] に設定されている場合、 Tableau はページが更新されるたびにデータに戻ります。

同じダッシュボードを繰り返し使用する顧客 ( たとえば、"Monday morning パイプライン reports") は、すべてのダッシュボードが同じキャッシュを使用するように、更新頻度を [低頻度] に設定したサーバー上に配置する必要があります。

Tableau でのキャッシュのウォーミングアップ

Tableau では、ダッシュボードを表示する前にダッシュボードが送信するサブスクリプションを設定することで、キャッシュをウォームアップできます。 (サブスクリプション Eメール イメージを生成するには、ダッシュボードをレンダリングする必要があります)。 サブスクリプションを使用した Tableau Server キャッシュのウォーミングを参照してください。

Tableau Desktop: エラー The drivers... are not properly installed

問題: Tableau Desktop を Databricks に接続しようとすると、接続ダイアログにエラー メッセージが表示され、ドライバーのダウンロード ページへのリンクが表示され、ドライバーのリンクとインストール手順を確認できます。

原因: Tableau Desktop のインストールで、サポートされているドライバーが実行されていません。

解決策: Databricks ODBC ドライバーの バージョン 2.6.15 以降をダウンロードします。

参照: エラー「ドライバ...正しくインストールされていません」 を Tableau Webサイトに表示してください。

プライマリ/外部キー制約

主キー (PK) と外部キー (FK) の制約を Databricks から Tableau に伝達するには、制約に関する両方のプラットフォームの機能と制限を理解する必要があります。

Databricks の制約を理解する

Databricks では、Databricks Runtime 15.2 以降の主キー制約と外部キー制約がサポートされています。 これらの制約は情報提供を目的としており、デフォルトによって強制されないため、データ完全性違反を防ぐことはできませんが、クエリを最適化し、データ関係に関するメタデータを提供するために使用できます。 プライマリ・キーと外部キーの関係を宣言するを参照してください。

Tableau が制約を使用してテーブルの関係を作成することを理解している

Tableau は、主キーと外部キーの制約を直接適用しません。 代わりに、Tableau はリレーションシップを使用してデータ接続をモデル化します。 Tableau で制約を操作するには、Tableau のデータ モデルが論理レイヤーと物理レイヤーの 2 つのレベルのモデリングを提供していることを理解する必要があります。 Tableau データ モデルを参照してください。この 2 レベルのデータ モデルが、Tableau でリレーションシップとして認識される Databricks 制約に与える影響については、以下で説明します。

Databricks を Tableauに接続する

Databricks を Tableau に接続すると、Tableau は既存のキー制約と一致するフィールドに基づいて、テーブル間の物理レイヤーで関係を作成しようとします。 Tableau は、Databricks で定義された主キーと外部キーの制約に基づいて、物理レイヤーでリレーションシップを自動的に検出し、作成しようとします。 キー制約が定義されていない場合、Tableau は一致する列名を使用して結合を自動生成します。 論理レイヤーでは、1 列の名前の一致のみを使用してリレーションシップが決定されます。 物理レイヤーでは、この列名の一致により、単純 (単一列) と複合 (複数列) の両方のキー関係が検出されます。

Tableau が一致するフィールドを特定できない場合は、列、条件、および制約のタイプを指定して、物理レイヤーで 2 つのテーブル間の結合関係を手動で指定する必要があります。 UI の論理レイヤーから物理レイヤーに移行するには、論理レイヤーのテーブルをダブルクリックします。