Tableau と Databricks の接続
Tableau は、インタラクティブなダッシュボードとレポートを作成することで、ユーザーがデータを接続、分析、共有し、最終的にデータドリブンな意思決定を可能にする、ビジネスインテリジェンスおよびデータビジュアライゼーションプラットフォームです。この記事では、Partner Connect を使用して Databricks から Tableau Desktop に接続する方法、および Tableau Desktop または Tableau Cloud から Databricks に接続する方法について説明します。この記事には、Tableau Server on Linux に関する情報も含まれています。
Tableau Server からの Databricks サインオンを構成するには、 Tableau Server からの Databricks サインオンの構成を参照してください。
Databricksで をデータソースとして使用すると、強力なインタラクティブTableau アナリティクスを提供し、data scientists とデータ エンジニアの貢献を大規模なデータセットにスケーリングすることでビジネスアナリストに提供できます。
Databricks から Tableau Cloud で探索する
Tableau Cloud で Databricks をデータ ソースとして使用する場合、Databricks UI から直接テーブルまたはスキーマから Tableau データソースを作成できます。
必要条件
- データは Unity Catalogにあり、コンピュート (クラスター) が Unity Catalog 有効になっている必要があります。 Hive metastore は現在サポートされていません。
Tableau Cloud で Databricks テーブルを探索する
- Databricks ワークスペースにサインインし、サイドバーの [ カタログ] をクリックして
[カタログ エクスプローラー] を開きます。
- 左上のカタログパネルからコンピュートリソースを選択します。
- カタログを開き、探索するスキーマまたはテーブルを選択します。Hive metastoreやサンプルカタログから選択しないでください。
- スキーマ右上の [ BI ツールと併用 ] をクリックするか、テーブル右上の [ ダッシュボードで開く ] をクリックします。
- ドロップダウンメニューから [Tableau Cloud で探索 ] を選択します。
- 選択した コンピュート とスキーマまたはテーブルが正しいことを確認し、[ Explore in Tableau Cloud ] をクリックします。
- 新しいタブが開き、Tableau Cloud アカウントにサインインするように求められます。
- Tableau にサインインすると、Databricks に再度サインインするように求められます。
- Databricks にログインしたら、ワークブック エディターで Tableau ダッシュボードの作成を開始できます。
機能と注意事項
- テーブルまたはスキーマを探索できます。スキーマを探索するときは、ダッシュボードの構築を開始する前に、 Tableau データソース パネルからテーブルを選択する必要があります。
- Databricks は、Tableau Cloud にパブリッシュするときに認証モードとして OAuth を強制します。
- パブリッシュされたデータソースはドラフトモードであり、どこにも保存されません。他のユーザーがアクセスできるようにするには、Tableau Cloud 内に保存する必要があります。
Tableau と Databricks を接続するための一般的な要件
接続情報
コンピュート リソースまたは SQLウェアハウスの接続の詳細、特に [Server Hostname ] と [HTTP Path ] の値。
Databricks Unity Catalog で管理されるデータを Tableau Desktop に接続する
- Tableau Desktop 2021.4 以降。 Tableau Desktop をコンピューターにダウンロードしてインストールします。
- Databricks ODBC ドライバー バージョン 2.6.19 以降。 ダウンロードしたインストール ファイルを使用してドライバーをインストールします file デスクトップに。 Tableau の指示に従って、Databricks への接続を設定します。Tableau Desktop と ODBC ドライバーの連携の詳細については、 Tableau と ODBC を参照してください。
従来の Databricks Hive metastore で管理されているデータを Tableau デスクトップに接続
- Tableau Desktop 2019.3 以降。
- Databricks ODBC ドライバー 2.6.15 以降。
認証オプション
次のいずれかの認証オプションを使用します。
-
(推奨)アカウントで OAuth アプリケーションとして有効になっている Tableau 。 Tableau Desktop と Tableau Cloud は Default によって有効になります。 Tableau Server を有効にするには、 Tableau Server からの Databricks サインオンの構成を参照してください。
デフォルトでは、Tableau の OAuth トークンは 90 日後に期限切れになります。 トークンの有効期間を変更するには、「 パートナー OAuth トークンの有効期間ポリシーを上書きする」を参照してください。
-
Databricks 個人用アクセス トークン。
Partner Connect を使用した Databricks の Tableau Desktop への接続
Partner Connect を使用すると、数回クリックするだけでコンピュート リソースや SQLウェアハウスを Tableau Desktop に接続できます。
-
Databricks アカウント、ワークスペース、サインインしているユーザーがすべて Partner Connect の 要件を満たしている ことを確認します。
-
サイドバーで、
Marketplace をクリックします。
-
Partner Connect 統合で 、[ すべて表示 ] をクリックします。
-
Tableau タイルをクリックします。
-
[ Connect to パートナー ] ダイアログの [コンピュート ] で、接続する Databricks コンピュート リソースの名前を選択します。
-
「 接続ファイルをダウンロード 」を選択します。
-
ダウンロードした接続ファイルを開き、Tableau Desktop を起動します。
-
Tableau Desktop で、認証資格情報を入力し、[ サインイン ] をクリックします。
- Databricks個人用アクセス トークンを使用するには、 [ユーザー名 ] に トークン を入力し、 [パスワード ] に個人用アクセス トークンを入力します。
- OAuth/Microsoft Entra ID 。 エンドポイント OAuth
https://{<server-hostname>}/oidc
には、「<server-hostname>
SQL 」と入力します。ここで、 はコンピュート リソースまたは ウェアハウスの サーバー ホスト名 です。ブラウザウィンドウが開き、IdP にサインインするように求められます。
Tableau Desktop を Databricks に接続する
次の手順に従って、 Tableau Desktop からコンピュート リソースまたは SQLウェアハウスに接続します。
Tableau Desktop ですばやく接続するには、Partner Connect を使用します。
-
Tableau Desktop を起動します。
-
「ファイル」>「新規」 をクリックします。
-
「 データ 」タブで、「 データに接続 」をクリックします。
-
コネクタの一覧で、 [Databricks ] をクリックします。
-
サーバーのホスト名 と HTTPパス を入力します。
-
認証では 、認証方法を選択し、認証情報を入力して、「 サインイン 」をクリックします。
- Databricks 個人用アクセス トークンを使用するには、 [ 個人用アクセス トークン ] を選択し、 [パスワード ] に個人用アクセス トークンを入力します。
- OAuth/Microsoft Entra ID 。 エンドポイント OAuth
https://{<server-hostname>}/oidc
には、「<server-hostname>
SQL 」と入力します。ここで、 はコンピュート リソースまたは ウェアハウスの サーバー ホスト名 です。ブラウザウィンドウが開き、IdP にサインインするように求められます。
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 アカウントが必要です。
- Tableau Desktop からワークブックのデータを抽出する: Tableau Desktop で、パブリッシュするワークブックを表示した状態で、[ データ] >
<data-source-name>
> [データの抽出 ] をクリックします。 - [データの抽出 ] ダイアログ ボックスで、[ 抽出] をクリックします。
- 抽出したデータを保存するローカル コンピューター上の場所を参照し、[ 保存 ] をクリックします。
- ワークブックのデータソースを Tableau Cloudにパブリッシュする : Tableau Desktop で、[ サーバー] > [データソースのパブリッシュ] >
<data-source-name>
] の順にクリックします。 - [Tableau Server サインイン ] ダイアログ ボックスが表示された場合は、[ Tableau Cloud ] リンクをクリックし、画面の指示に従って Tableau Cloud にサインインします。
- [Publish Data] to Tableau Cloud ダイアログボックスで、[ 更新 Not Enabled ] の横にある [Edit ] リンクをクリックします。
- 表示されるポップアップ ボックスで、[ 認証] で [更新が有効になっていません ] を [ 更新アクセスを許可する ] に変更します。
- このポップアップの外側の任意の場所をクリックして非表示にします。
- パブリッシュされたデータソースを使用するには、[ワークブックの更新 ] を選択します。
- 「公開」 をクリックします。データソースが Tableau Cloudに表示されます。
- Tableau Cloud の [パブリッシュ完了 ] ダイアログ ボックスで [スケジュール ] をクリックし、画面の指示に従います。
- ワークブックを Tableau Cloud にパブリッシュする: Tableau Desktop で、パブリッシュするワークブックを表示した状態で、[ サーバー] > [ワークブックのパブリッシュ ] をクリックします。
- [ワークブックを Tableau Cloud にパブリッシュ ] ダイアログ ボックスで、[ パブリッシュ] をクリックします。ワークブックが Tableau Cloud に表示されます。
Tableau Cloud は、設定したスケジュールに従ってデータソースへの変更を確認し、変更が検出された場合はパブリッシュされたワークブックを更新します。
詳細については、 Tableau Web サイトの以下を参照してください。
ベストプラクティスとトラブルシューティング
Tableau クエリを最適化するための 2 つの基本的なアクションは次のとおりです。
- 1つのグラフまたはダッシュボードでクエリされ視覚化されるレコードの数を減らしてください。
- Tableau が 1 つのグラフまたはダッシュボードで送信するクエリの数を減らします。
どちらを最初に試すかは、ダッシュボードによって異なります。 個々のユーザーごとに異なるグラフがすべて同じダッシュボードにある場合は、Tableau が Databricks に送信するクエリが多すぎる可能性があります。 グラフが数個しかないのに読み込みに時間がかかる場合は、Databricks から返されるレコードが多すぎて効果的に読み込まれない可能性があります。
Tableau Desktop と Tableau Server の両方で利用可能な Tableau パフォーマンス記録は、特定のワークフローまたはダッシュボードの実行時にレイテンシーを引き起こすプロセスを特定することで、パフォーマンスのボトルネックを特定するのに役立ちます。
パフォーマンス記録を有効にして Tableau の問題をデバッグ
たとえば、クエリの実行が問題である場合、クエリを実行しているデータ エンジン プロセスまたはデータソースに関係していることがわかります。 ビジュアル レイアウトのパフォーマンスが遅い場合は、それが 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 のプロセスに問題を安全に絞り込むことができます。
構成
By デフォルトでは、接続 URL のパラメーターが シンバ ODBC DSN。 ODBC 構成をカスタマイズするには、2 つの方法があります Tableau から:
-
.tds
単一のデータソースのファイル:- 「データソースの保存」の手順に従って、データソースの
.tds
ファイルをエクスポートします。 .tds
ファイルで敷地境界線odbc-connect-string-extras=''
を見つけて、パラメーターを設定します。たとえば、AutoReconnect
とUseNativeQuery
を有効にするには、行をodbc-connect-string-extras='AutoReconnect=1,UseNativeQuery=1'
に変更できます。- 接続を再接続して、
.tds
ファイルを再読み込みします。
コンピュート リソースは、大きな結果を収集するために使用するヒープ メモリが少なくなるように最適化されているため、Simba ODBCのデフォルトよりも多くの行をフェッチ ブロックごとに提供できます。
odbc-connect-string-extras
プロパティの値にRowsFetchedPerBlock=100000'
を追加します。 - 「データソースの保存」の手順に従って、データソースの
-
.tdc
すべてのデータソースのファイル:.tdc
ファイルを作成したことがない場合は、TableauTdcExample.tdc をDocument/My Tableau Repository/Datasources
フォルダーに追加できます。- すべての開発者の 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(Sales)、Count(orders)、Sum(Cost) を返し、将来のクエリで 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 は接続ダイアログにエラー メッセージを表示し、ドライバーのダウンロード ページへのリンクが表示されます。そこにはドライバーのリンクとインストール手順があります。
原因 : 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 の論理レイヤーから物理レイヤーに移行するには、論理レイヤーのテーブルをダブルクリックします。