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を接続するための要件
コンピュート リソースまたはウェアハウスの接続の詳細 SQL具体的には 、Server ホスト名 と HTTP Path の値。
Tableau Desktop 2019.3 以降。
Databricks ODBC ドライバー 2.6.15 以降。
Databricks の個人用アクセストークン。
注
セキュリティのベスト プラクティスとして、自動化されたツール、システム、スクリプト、アプリを使用して認証する場合、 Databricksでは、ワークスペース ユーザーではなく、サービス プリンシパルに属する個人のアクセス トークンを使用することをお勧めします。 サービスプリンシパルのトークンを作成するには、 「サービスプリンシパルのトークンの管理」を参照してください。
Partner Connectを使用した Databricks の Tableau Desktop への接続
Partner Connect を使用すると、数回クリックするだけでコンピュート リソースや SQLウェアハウスを Tableau Desktop に接続できます。
Databricks アカウント、ワークスペース、およびサインインしているユーザーがすべて Partner Connectの 要件を満たし ていることを確認します。
サイドバーで、「 Partner Connect 」をクリックします 。
[ Tableau ] タイルをクリックします。
[ パートナーへの接続 ] ダイアログの [コンピュート] で、接続する Databricks コンピュート リソースの名前を選択します。
[ 接続ファイルのダウンロード] を選択します。
ダウンロードした接続ファイルを開くと、Tableau Desktop が起動します。
Tableau Desktop で、認証資格情報を入力し、[ サインイン] をクリックします。
[ユーザー名] に「token」と入力し、[パスワード] に Databricks personal アクセストークンを入力します。
Tableau Desktop を Databricksに接続する
次の手順に従って、 Tableau Desktop からコンピュート リソースまたは SQLウェアハウスに接続します。
注
Tableau Desktop でより高速に接続するには、 Partner Connectを使用します。
Tableau Desktop を起動します。
[ ファイル] > [新規作成] をクリックします。
[データ] タブで、[データに接続] をクリックします。
コネクタのリストで、[ Databricks] をクリックします。
サーバのホスト名 と HTTP パスを入力します。
[認証] で、認証方法を選択し、認証資格情報を入力して、[サインイン] をクリックします。
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 アカウントが必要です。
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] リンクをクリックします。
表示されるポップアップ ボックスで、[ 認証] で [更新 が有効になっていない ] を [ 更新アクセスを許可する] に変更します。
このポップアップの外側をクリックして非表示にします。
[ ワークブックの更新] を選択して、パブリッシュされた DATA を使用します。
「公開」をクリックします。データソースが Tableau Cloudに表示されます。
Tableau Cloud の [パブリッシュ完了 ] ダイアログ ボックスで [スケジュール] をクリックし、画面の指示に従います。
ワークブックを Tableau Cloud にパブリッシュする: Tableau Desktop で、パブリッシュするワークブックを表示した状態で、[ サーバー] > [ワークブックのパブリッシュ] をクリックします。
[ワークブックを 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 /コネクタ オーバーレイがデータを SQL for VizQL に処理するために時間がかかりすぎる可能性があります。 これが発生した場合は、返される内容を分析し、すべてを 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
単一のデータソースのファイル:「データソースの保存 」の手順に従って、データソースの
.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
すべての DATA のファイル:.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 を使用してマーク (マップ上の州など) をクリックすると、クリックした州に基づいてフィルタリングされる別のダッシュボードに移動します。 これにより、1 つのダッシュボードに複数のフィルターを配置する必要性が減り、生成する必要のあるレコードの数が減ります。 (フィルタリングする述部を取得するまでレコードを生成しないようにアクションを設定しています。
詳細については、「 ダッシュボードのパフォーマンスを向上させるためのアクションと 6 つのヒント 」を参照してください。
キャッシング
データのキャッシュは、ワークシートまたはダッシュボードのパフォーマンスを向上させるための優れた方法です。
Tableau でのキャッシュ
Tableau には、データがライブ接続にあるか抽出にあるかに関係なく、データに戻る前に 4 つのキャッシュ層があります。
タイル: 誰かがまったく同じダッシュボードを読み込んでいて、何も変更がない場合、Tableau はチャートに同じタイルを再利用しようとします。 これはGoogleマップのタイルに似ています。
モデル: タイルを使用できない場合にビジュアライゼーションを生成するために使用される数学的計算があります。 Tableau Server は同じモデルを使用しようとします。
要約: クエリーの集計結果も保存されます。 これは3番目の「防御」レベルです。 以前のクエリーで Sum(売上)、カウント (注文)、Sum(コスト) が返され、将来のクエリーが Sum(Sales) だけを必要とする場合、Tableau はその結果を取得して使用します。
ネイティブ キャッシュ: クエリーが別のクエリーとまったく同じ場合、Tableau は同じ結果を使用します。 これはキャッシュの最後のレベルです。 これが失敗した場合、Tableau はデータに移動します。
Tableau でのキャッシュ頻度
Tableau には、キャッシュの頻度を増減するための管理設定があります。 サーバーが [更新頻度を低くする] に設定されている場合、Tableau はデータを最大 12 時間キャッシュに保持します。 「 更新頻度が高い」に設定されている場合、 Tableau は更新するたびにデータに戻ります。
同じダッシュボードが繰り返し使用されている顧客 ("月曜日の朝のパイプライン レポート" など) は、すべてのダッシュボードが同じキャッシュを使用するように、[更新頻度を減らす] に設定されたサーバー上にある必要があります。
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 のデータ モデルが論理レイヤーと物理レイヤーの 2 つのレベルのモデリングを提供していることを理解する必要があります。 Tableau データ モデルを参照してください。この 2 レベルのデータ モデルが、Tableau でリレーションシップとして認識される Databricks 制約に与える影響については、以下で説明します。
Databricks を Tableauに接続する
Databricks を Tableau に接続すると、Tableau は既存のキー制約と一致するフィールドに基づいて、テーブル間の物理レイヤーで関係を作成しようとします。 Tableau は、Databricks で定義された主キーと外部キーの制約に基づいて、物理レイヤーでリレーションシップを自動的に検出し、作成しようとします。 キー制約が定義されていない場合、Tableau は一致する列名を使用して結合を自動生成します。 論理レイヤーでは、1 列の名前の一致のみを使用してリレーションシップが決定されます。 物理レイヤーでは、この列名の一致により、単純 (単一列) と複合 (複数列) の両方のキー関係が検出されます。
Tableau が一致するフィールドを特定できない場合は、物理レイヤーで 2 つのテーブル間の結合関係を手動で指定し、列、条件、および制約のタイプを指定する必要があります。 UI の論理レイヤーから物理レイヤーに移行するには、論理レイヤーのテーブルをダブルクリックします。