データの結合
Tableau で分析するデータは、ビューの特定のフィールド (つまり列) で関連付けられたテーブルの集まりで構成されています。結合は、共通のフィールドに基づいてデータを組み合わせる方法です。結合を使用したデータの組み合わせの結果は、データの列を追加することによって通常は横方向に拡張された仮想テーブルです。
注:
- 結合を表示したり編集したりできるようにするには、リレーションシップ キャンバス (論理レイヤー) で論理テーブルを開く必要があります。リレーションシップ キャンバスは、データ ソースを最初に開いたり作成したりする際に表示されるものです。詳細については、データの関連付けを参照してください。
- テーブルを結合する際は、結合させるフィールドが同じデータ型である必要があります。テーブルの結合後にデータ型を変更すると、結合が壊れます。
- パブリッシュされたデータ ソースは結合で使用できません。
たとえば、パブリッシャー用のデータを分析するとします。パブリッシャーは、2 つのテーブルを持つことができます。最初のテーブルには、ID 番号、姓、名、およびパブリッシャーのタイプが含まれます。2 つ目のテーブルには、出版した書籍の ID 番号、価格、印税、タイトルが含まれます。2 つのテーブルの共有フィールドは ID の可能性があります。
テーブル 1
|
テーブル 2
|
これらの 2 つのテーブルをまとめて分析するには、[ID] でテーブルを結合し、「指定された出版社から作者に支払われた印税の金額」などの質問に回答することができます。結合を使用してテーブルを組み合わせることにより、異なるテーブルからの関連データを分析で表示および使用できます。
ID | 名 | 姓 | パブリッシャーのタイプ | 本のタイトル | 価格 | 印税 |
20034 | Adam | Davis | 独立 | The Magic Shoe Lace | 15.99 | 7,000 |
20165 | Ashley | Garcia | 大 | Weather in the Alps | 19.99 | 5,000 |
結合タイプの概要
一般的に、Tableau で使用できる結合には、内部、左、右、完全外部の 4 つのタイプがあります。結合できるテーブルと使用できる別の結合タイプは、接続しているデータベースまたはファイルによって異なります。データに接続し、キャンバスに 2 つ以上のテーブルが表示された後で結合ダイアログを確認することで、データでサポートされる結合タイプを知ることができます。
複数テーブルのデータを組み合わせるために使用する結合タイプが不明な場合は、リレーションシップを使用する必要があります。
結合タイプ | 結果 | 説明 |
内部 |
内部結合を使用してテーブルを組み合わせると、結果は両方のテーブルに一致がある値を含むテーブルになります。
|
![]() |
左 |
左結合を使用してテーブルを組み合わせると、結果は左のテーブルのすべての値および右のテーブルからの一致する値を含むテーブルになります。 左のテーブルの値に対応する一致が、右のテーブルにない場合、データ グリッドに NULL 値が表示されます。 |
|
右 |
右結合を使用してテーブルを組み合わせると、結果は右のテーブルのすべての値および左のテーブルからの一致する値を含むテーブルになります。 右のテーブルの値に対応する一致が、左のテーブルにない場合、データ グリッドに NULL 値が表示されます。 |
|
完全外部 |
完全外部結合を使用してテーブルを組み合わせると、結果は両方のテーブルのすべての値を含むテーブルになります。 いずれかのテーブルの値が、他のテーブルと一致しない場合、データ グリッドに NULL 値が表示されます。 |
|
ユニオン | ユニオンは結合の一種ではありませんが、1 つのテーブルの行にあるデータを別のテーブルに追加することによって 2 つ以上のテーブルを組み合わせる別の方法です。ユニオンを実行する 2 つのテーブルのフィールド数が同じであり、両方のフィールドで名前とデータ型が一致していることが理想です。ユニオンの詳細については、データのユニオン作成を参照してください。 |
![]() |
結合句
結合は、1 つまたは複数の結合句を設定することによって実行されます。結合句は、どのフィールドをテーブル間で共有し、対応する行をどのように照合するかを Tableau に指示します。上記の例では、共有フィールドは ID です。同じ ID を持つ行は、結果のテーブル内で揃えられます。
ほとんどの場合、結合句は等値演算子 (=) を使用して、同じ値を持つ行を照合します。より小さい (<) や等しくない (<>) などの非等値結合を実行することもできます。
また、結合には複数の結合句を含めることができます。たとえば、姓と名が別々の列に格納されている場合、"First name = First name (名 = 名)" と "Last name = Last name (姓 = 姓)" の場合にのみ結合すると効果的です。行を結合する場合は、両方の条件が true である必要があります。または、姓が共有されているが、名が共有されていないときに結果を返す必要がある場合、結合句は "First name <> First name (名 <> 名)" と "Last name = Last name (姓 = 姓)" になります。
結合句には計算を含めることもできます。たとえば、結合句は名前フィールドの連結 "[First name] + [Last name] = [First name] + [Last name]" になります。すべてのデータ ソース接続が結合句での計算をサポートしているわけではないことに注意してください。
同じデータベースのテーブルを組み合わせる
同じデータベース、ワークブック (Excel の場合)、ディレクトリ (テキストの場合) に保存されているテーブルを分析する必要がある場合は、次の手順に従ってテーブルを組み合わせます。同じデータベースのテーブルを組み合わせるには、データ ソース内で 1 つの接続のみが必要です。一般的に、同じデータベースからテーブルを結合することで、パフォーマンスが向上します。これは、同じデータベース上に保存されているデータのクエリの場合、所要時間が短くなり、データベースのネイティブの機能を活用して結合を実行するためです。
注: 組み合わせるテーブルの詳細レベルによっては、代わりにデータ ブレンドを検討することができます。詳細については、データのブレンドを参照してください。
テーブルを結合するには
-
Tableau Desktop で: スタート ページの [接続] で、データに接続するコネクタをクリックします。この手順では、Tableau データ ソースの最初の接続を作成します。
Web 作成で: [ホーム] または [検索] ページで [作成] > [ワークブック] をクリックし、新しいワークブックを開始してデータに接続します。この手順では、Tableau データ ソースの最初の接続を作成します。
-
ファイル、データベース、またはスキーマを選択した後、テーブルをダブルクリックするか、キャンバスにドラッグします。
注: [データ ソース] ページの既定のビューは論理レイヤーであるため、テーブルはデータ ソースのデータ モデルにある論理テーブルになります。論理テーブルは関連付けることのみでき、結合はできません。Tableau のデータ モデル、論理テーブル、物理テーブルの詳細については、データの関連付けとTableau データ モデルを参照してください。
別のテーブルをこのキャンバスにドラッグすると、結合ではなくリレーションシップが作成されます。結合を追加する前に、このテーブルを開く必要があります。
すべての論理テーブルに、最低 1 つの物理テーブルが含まれています。結合は物理テーブル間でのみ作成できます。
注: データ ソースの設定中に、web で作成しているか、 (Tableau Desktop から)Tableau Server にサインインしている場合は、推奨したテーブルにアクセスするとデータを簡単に結合することができます。詳細については、認定、推奨データ ソースおよびテーブルの使用を参照してください。
-
論理テーブルをダブルクリックして開きます。既定では、物理テーブルが結合/ユニオン キャンバス (物理レイヤー) に同じ名前で表示されます。物理テーブルの名前は変更できます。
論理テーブルをダブルクリックすると、結合/ユニオン キャンバスが開きます。
-
別のテーブルをダブルクリックするか、結合/ユニオン キャンバスにドラッグします。[結合] アイコンをクリックして結合句を追加し、結合タイプを選択します。
-
データ ソースで使用されている利用可能なテーブルからフィールド、追加したテーブルから結合演算子およびフィールドを選択し、1 つ以上の結合句を追加します。結合句を検査し、予想どおりにテーブルを接続しているかどうかを確認します。
たとえば、発注情報のテーブルと別の情報を返すテーブルがあるデータ ソースでは、両方のテーブルにある "Order ID (注文 ID)" フィールドに基づき、内部結合を使用して 2 つのテーブルを組み合わせることができます。
注: 不要な結合句を削除するには、結合句の右側にカーソルを移動すると表示される、 "x" をクリックします。
-
終了したら、[結合] ダイアログを閉じます。
結合を作成した後、データ グリッドを確認し、結合によって期待する結果が得られていることを確認します。詳細については、データ グリッドで結合の結果を確認するを参照してください。結合のトラブルシューティングを行うには、結合のトラブルシューティングを参照してください。
続行して分析用にデータ ソースを準備します。フィールドの名前の変更とリセット、計算の作成、データ インタープリターによるデータのクリーニング、フィールドのデータ型の変更などを実行できます。
結合キーの NULL 値について
一般的に、結合はデータベース レベルで実行されます。テーブルの結合に使用しているフィールドに NULL 値が含まれている場合、ほとんどのデータベースでは NULL 値を含む行以外のデータを返します。ただし、Excel、テキスト、または Salesforce 接続を使用する単一接続データ ソースをセットアップした場合、Tableau によって NULL 値を含むフィールドと NULL 値を含む別のフィールドの結合を許可する追加オプションが提供されます。
NULL 値で結合するには
- データ ソースを設定した後、[データ ソース] ページで [データ] > [Null 値を Null 値に結合する] を選択します。
たとえば、データのテーブルが 2 つあり、それらを結合するとします。(Orders_June と Orders_July)
Orders_June | Orders_July | ||||||||||||||||
|
|
[ID] と [場所] フィールドの両方を結合した場合、ほとんどのデータベースは次のデータのテーブルを返します。
結合 (Orders_June と Orders_July)
ID | 場所 | ID(Orders_July) | Location (Orders_July) |
1 | ニューヨーク | 1 | ニューヨーク |
3 | マイアミ | 3 | マイアミ |
データ ソースで 1 つの Excel、テキスト、または Salesforce 接続を使用している場合は、[データ] > [Null 値を Null 値に結合する] を選択すると次のテーブルが返されます。
結合 (Orders_June と Orders_July)
ID | 場所 | ID(Orders_July) | Location (Orders_July) |
1 | ニューヨーク | 1 | ニューヨーク |
2 | NULL | 2 | NULL |
3 | マイアミ | 3 | マイアミ |
注:このオプションは、テキスト、Excel、および Salesforce を使用する単一接続のデータ ソースで使用できます。このオプションを使用するデータ ソースに 2 つ目の接続を追加すると、結合によって既定の動作 (null 値の行を除外する) に戻されます。
異なるデータベースのテーブルを組み合わせる
Tableau バージョン 10.0 以降、異なるデータベース、ワークブック (Excel の場合)、ディレクトリ (テキストの場合) に保存されているテーブルの分析が必要な場合は、次の手順に従い、クロスデータベース結合を使用してテーブルを組み合わせます。
クロスデータベース結合を行うには、最初にマルチ接続データ ソースを設定する必要があります。つまり、テーブルを結合する前に各データベースに新しい接続を作成します。複数のデータベースに接続する場合、データ ソースはマルチ接続データ ソースになります。別の社内システムを使用する組織でデータを分析する必要がある場合や、社内外のグループと両方で別に管理されるデータを操作する必要がある場合、マルチ接続データ ソースを使用すると都合がよい場合があります。
注:多くの場合、データを組み合わせる主な方法はクロスデータベース結合を使用することです。ただし、代わりにデータ ブレンドを使用してデータを組み合わせなければならない場合があります。詳細については、データのブレンドを参照してください。
クロスデータベース結合を使用してテーブルを組み合わせると、キャンバスのテーブルとデータグリッドの列に色が付けられ、データがどの接続から来ているかが示されます。
異なるデータベースのテーブルを結合するには
-
Tableau Desktop で:スタート ページの [接続] で、データに接続するコネクタをクリックします。この手順では、Tableau データ ソースの最初の接続を作成します。
Web 作成で: [ホーム] または [検索] ページで [作成] > [ワークブック] をクリックし、新しいワークブックを開始してデータに接続します。この手順では、Tableau データ ソースの最初の接続を作成します。
-
ファイル、データベース、またはスキーマを選択した後、テーブルをダブルクリックするか、キャンバスにドラッグします。次に、論理テーブルをダブルクリックして、結合/ユニオン キャンバスを開きます。
-
左のペインで、[接続] の下で [追加] ボタン (Web 作成では
) をクリックして、新しい接続を Tableau データ ソースに追加します。別のデータベースに関連データが保存されている場合にのみ、新しい接続が必要です。
注: 必要なコネクタが [接続] リストで利用できない場合、結合するソースの組み合わせでクロスデータベース結合がサポートされていません。これには、キューブ データ (Microsoft Analysis Services など)、ほとんどの抽出専用データ (Google Analytics および OData など)、Tableau Server データ ソースへの接続が含まれます。テーブルを結合する代わりに、データ ブレンドの使用を検討します。詳細については、データのブレンドを参照してください。
-
新しい接続を選択した状態で、結合キャンバスに別のテーブルを追加します。
データ ソースで使用されている利用可能なテーブルからフィールド、追加したテーブルから結合演算子およびフィールドを選択し、1 つ以上の結合句を追加します。結合句を検査し、予想どおりにテーブルを接続しているかどうかを確認します。
たとえば、発注情報のテーブル、および別の情報を返すテーブルがあるデータ ソースでは、両方のテーブルにある "Order ID (注文 ID)" フィールドに基づき、2 つのテーブルを結合できます。結合タイプを選択します。
注: 不要な結合句を削除するには、結合句の右側にカーソルを移動すると表示される、 "x" をクリックします。
-
終了したら、[結合] ダイアログ ボックスを閉じます。
テーブルと列に色を付け、データの接続がどこから来たかを示します。
クロスデータベース結合を作成した後、続行して分析用にマルチ接続データ ソースを準備します。フィールドの名前の変更とリセット、計算の作成、データ インタープリターによるデータのクリーニング、フィールドのデータ型の変更などを実行できます。
結合のトラブルシューティングを行うには、結合のトラブルシューティングを参照してください。
クロスデータベース結合でのパフォーマンスの向上
重要: この機能は、データを一時的に Tableau の外部に移動します。接続先のデータベースが信頼できるソースからのものであることを確認します。
Tableau Desktop および Tableau Server のバージョン 2019.3 より、Hyper ではなく接続されているデータベースを使用して結合の実行を Tableau に許可することにより、単一ファイル接続と単一データベース接続のデータを結合する際のパフォーマンスを向上させることができます。このオプションを有効にすると、Tableau は最も高速なオプション (Hyper または接続されているデータベース) を選択します。Tableau が接続されているデータベースを使用する場合、ファイル接続のデータはデータベース内の一時テーブルに移動され、そこで結合が実行されます。
機能の条件
このオプションは、次の条件が満たされる場合にのみ使用できます。
- データ ソースは、1 つのファイル ベースの接続と 1 つの SQL ベースの接続で構成されています。
- ファイル サイズは 1 MB 未満です。
- ファイルは Microsoft Excel、PDF、またはテキスト (.csv、.txt、.tsv、.tab) のファイル タイプです。
- 接続されているデータベースは、次のいずれかです。
- Microsoft SQL Server
- Oracle
- PostgreSQL
- Vertica
- Teradata
- 結合タイプは内部結合です。
-
Web 作成で: [ユーザーに Web 作成の使用を許可] オプションが有効になります。
また、サイト管理者は、Tableau Server の [設定] > [全般] タブで [データベース間結合] オプションを設定し、ユーザーが利用できるオプションを構成することもできます。これらの設定の詳細については、Tableau Server ヘルプの「サイトの Web 作成アクセスの設定」(Link opens in a new window)を参照してください。
機能の条件のオーバーライド
バージョン 2020.3 以降では、管理者は、ファイル サイズ、結合タイプ、および単一のファイル接続の制限をオーバーライドして、Tableau がライブ データベース接続を使用して結合を実行するように強制できます。これにより、最適なパフォーマンス構成を試してからその判断をすることができます。単一のデータベース接続の要件は引き続き適用されます。
このオプションを有効にするには、コマンド ラインから次の情報を入力します。
-
Tableau Desktop: コマンド
tableau.exe -DForceAlternativeFederationEngine=true
を入力します。 -
Tableau Server: tsm configuration コマンド
tsm configuration set -k native_api.force_alternative_federation_engine -v true
を入力します。Tableau Server で構成値を設定する詳細については、Tableau Server ヘルプのtsm configuration set のオプション(Link opens in a new window)を参照してください。
クロスデータベース結合でのパフォーマンス オプションの有効化
-
Tableau Desktop で: スタート ページの [接続] で、サポートされているファイル タイプまたはデータベース タイプに接続します。この手順では、Tableau データ ソースの最初の接続を作成します。
Web 作成で: [ホーム] または [検索] ページで [作成] > [ワークブック] をクリックし、新しいワークブックを開始してデータに接続します。この手順では、Tableau データ ソースの最初の接続を作成します。
-
接続先のファイルまたはデータベースを選択した後、テーブルをダブルクリックするか、キャンバスにドラッグします。
-
左のペインで、[接続] の下で [追加] ボタン (Web 作成では
) をクリックして、2 番目の接続を Tableau データ ソースに追加します。
[クロスデータベース結合] オプションが表示されます。
注: このオプションが表示されない場合は、サポートされているデータ ソースだけを使用していること、および 2 つのデータ ソースのみ (ファイル 1 つとデータベース タイプ 1 つ) のみを使用していることを確認してください。それでも表示できない場合、サイト管理者が [クロスデータベース間結合] 構成オプションを [Tableau のみ] に設定した可能性があります。
- Tableau による結合の実行方法を変更するには、[データベース間結合] オプションの隣にある [編集] をクリックします。
-
[データベース間結合] ダイアログで、次のいずれかのオプションを選択し、[OK] をクリックします。
-
Tableau または既存のデータベースを使用。このオプションにすると、Tableau が結合を最も高速に実行するオプション (Hyper または接続されているデータベースのどちらか) を選択できます。
-
Tableau のみを使用。このオプションは既定で、結合の実行に常に Hyper を使用します。
[データベース間結合] オプションを使用すると、選択した内容に応じ、既定オプションである [Tableau の使用] (Hyper を使用) から、新しいオプションである [データベースの使用] に切り替えられます。
重要: [Tableau または既存のデータベースを使用] を選択すると、結合の実行時に最も速いオプションが選択されます。この動作は、結合タイプを含む一連の基準によって事前に決定されます。たとえば、Tableau は常に非内部結合に対して [ハイパー] を選択します。
Tableau が結合の実行に Hyper を使用する場合、このプロセスはバックグラウンドで実行され、結合が行われた場所を特定する指標は表示されません。
-
- データ ソースで使用されている利用可能なテーブルからフィールド、追加したテーブルから結合演算子およびフィールドを選択し、1 つ以上の結合句を追加します。結合句を検査し、予想どおりにテーブルを接続しているかどうかを確認します。
マルチ接続データ ソースについて
マルチ接続データ ソースの操作は、本セクションで説明した、いくつかのキャンバスを使用した他のデータ ソースの場合と同様です。
接続内のユニオン データ
データのユニオンを作成するには、同じ接続のテキスト テーブルまたは Excel テーブルを使用する必要があります。つまり、異なるデータベースのテーブルのユニオンを作成することはできません。Tableau Desktop で、異なる Excel ワークブックで、または異なるフォルダー内のファイルでテーブルのユニオンを実行できます。詳細については、ワイルドカード検索を使用してユニオン表を作成する (Tableau Desktop)を参照してください。
異なるデータベースのデータでユニオンを作成する必要がある場合は、Tableau Prep(Link opens in a new window) を使用します。
照合順序
照合順序は、文字列の値を比較および並べ替える方法を決定するデータベースのルールです。ほとんどの場合、照合順序はデータベースによって処理されます。ただし、クロスデータベース結合を操作する場合は、照合順序が異なる列を結合する場合があります。
たとえば、クロスデータベース結合が、SQL Server の大文字と小文字を区別する列と、Oracle の大文字と小文字を区別しない列で構成される結合キーを使用しているとします。このような場合、Tableau は間違って解釈される値を最小限に抑えるため、特定の照合順序を他に対してマッピングします。
次の規則はクロスデータベース結合で使用されます。
-
列がユニコード国際コンポーネント (ICU) の照合順序標準を使用している場合、Tableau は他の列にもその照合順序を使用します。
-
すべての列が ICU の照合順序標準を使用している場合、Tableau は左のテーブルの列にもその照合順序を使用します。
-
いずれの列も ICU の照合順序標準を使用していない場合、Tableau はバイナリ照合順序を使用します。バイナリ照合順序はデータベースのロケールを意味し、列のデータ型によって、文字列の値の比較および並べ替え方法が決まります。
Microsoft Excel データを操作しており、カタカナとひらがなを区別する日本語データなど、結合実行時にデータの大文字と小文字を維持する必要がある場合は、[データ] メニューから [大文字と小文字の維持 (Excel)] オプションを有効にできます。
このオプションを選択すると、Excel データ ソースの値の大文字と小文字の区別が維持され、それが異なる値を結合するのではなく一意的に識別し、結果の行数に違いが起こります。
たとえば、あるワークシートには "House" という値があり、別のワークシートには "House"、"house"、"houSe" という値があります。既定では、2 つのテーブルを結合すると、2 つ目のワークシートの大文字と小文字の違いが無視され、2 つ目のワークシートの "House"、"house"、"houSe" は 1 つ目のワークシートの "House" と結合されます。
[大文字と小文字の維持 (Excel)] オプションを有効にすると、テーブルの結合時に大文字と小文字の違いが識別されます。結合では 1 つ目のワークシートの "House" が 2 つ目のワークシートの値 "House" とのみ一致し、"house" と "houSe" を一意的な別の値として読み取るため、結合結果の表示は少なくなります。
注: このオプションは Tableau がサポートするすべての言語で使用でき、オペレーティング システムのロケールに依存しません。このオプションは、Microsoft Excel データ ソースでのみ使用できます。
計算およびマルチ接続データ ソース
マルチ接続データ ソースでは、計算のサブセットのみを使用できます。
Tableau Desktopで: 次の両方に当てはまる場合、特定の計算を使用できます。
-
マルチ接続データ ソース内のすべての接続でサポートされる
-
Tableau 抽出でサポートされます。
Web 作成時 (Tableau Online および Tableau Server): マルチ接続データ ソース内のすべての接続でサポートされる場合は、特定の計算を使用できます。
ストアド プロシージャ
ストアド プロシージャはマルチ接続データ ソースでは使用できません。
接続内のデータのピボット
データのピボットを作成するには、同じ接続のテキスト列または Excel 列を使用する必要があります。つまり、異なるデータベースの列をピボットに含めることはできません。
抽出ファイルを最初の接続にする(Tableau Desktop のみ)
複数接続のデータ ソースで抽出ファイルに接続する場合は、抽出 (.tde または .hyper) ファイルへの接続が最初の接続になるようにします。これにより、抽出の一部となる可能性のあるカスタマイズを保持します (既定のプロパティ、計算フィールド、グループ、別名などに対する変更を含む)。
注:複数接続のデータ ソースで複数の抽出ファイルに接続する必要がある場合、最初の接続内の抽出のカスタマイズのみが保持されます。
ファイル ベースのデータへの接続を含むマルチ接続データ ソースの抽出(Tableau Desktop のみ)
Excel などのファイル ベースのデータへの接続を含むマルチ接続データ ソースの抽出をパブリッシュする場合は、[外部ファイルを含める] オプションを選択すると、ファイル ベースのデータのコピーがデータ ソースの一部としてサーバー上に配置されます。この場合、ファイル ベースのデータのコピーをダウンロードでき、そのコンテンツは他のユーザーによってアクセスされます。抽出から意図的に除外したファイルベースのデータに機密情報が含まれている場合は、データ ソースをパブリッシュする際に [外部ファイルを含める] を選択しないでください。
データ ソースのパブリッシュの詳細については、データ ソースのパブリッシュを参照してください。
クエリとクロスデータベース結合について
各接続について、Tableau は結合のデータベースに独立クエリを送信します。結果は、抽出ファイルの形式で一時テーブルに保存されます。
たとえば、「dbo.listings」と「reviews$」という 2 つのテーブルへの接続を作成するとします。これらのテーブルは、2 つの異なるデータベース (SQL Server および Excel) に保存されます。Tableau は各接続で独立してデータベースのクエリを行います。データベースはクエリを実行してフィルターや計算などのカスタマイズを適用し、Tableau は各接続の結果を一時テーブルに保存します。この例では、FQ_Temp_1 は SQL Server への接続用の一時テーブル、FQ_Temp_2 は Excel への接続用の一時テーブルです。
SQL Server テーブル
|
Excel テーブル ![]() |
クロス データベース結合を実行すると、Tableau Desktop によって一時テーブルが結合されます。これらの一時テーブルは、Tableau がクロス データベース結合を実行するため必要です。
テーブルを結合した後、"topn" フィルターが適用され、データ グリッドに表示する値の数を最初の 1,000 行に制限します。このフィルターはデータ グリッドの応答性と、[データ ソース] ページの全体的なパフォーマンスを維持するために適用されます。
結合テーブル
データ グリッドで結合の結果を確認する
キャンバスで結合を作成した後、データ グリッドを確認し、結合によって期待する結果が得られていることを確認します。データ グリッドに期待していないデータが表示された場合、結合の変更が必要となる場合があります。
データ グリッドの結果
-
データなし:データ グリッドにデータが表示されない場合、結合条件に使用する結合タイプまたは結合フィールドの変更が必要になる場合があります。結合のフィールド間に不一致が疑われる場合は、代わりに計算フィールドを使用します。詳細については、結合で計算を使用してフィールド間の不一致を解決するを参照してください。
-
重複データ: 重複データが表示される場合は、対処する方法がいくつかあります。テーブルを結合するのではなく、関連付けることを検討してください。詳細については、「関係を使用したデータの結合」(Link opens in a new window)を参照してください。
-
不足しているデータ:データ グリッドに不足しているデータがある場合、結合条件に使用する結合タイプまたは結合フィールドの変更が必要になる場合があります。この場合も、結合のフィールド間に不一致が疑われる場合は、代わりに計算フィールドを使用します。詳細については、結合で計算を使用してフィールド間の不一致を解決するを参照してください。
-
多くの null 値: 期待されない null 値が多く表示される場合、結合タイプを完全外部タイプから内部タイプに変更しなければならないことがあります。
-
1 つのテーブルのすべての null 値: 1 つのテーブルのすべての値が null の場合、結合するテーブルの間に一致はありません。これが期待どおりでなかった場合は、結合タイプを変更することを検討してください。
結合で計算を使用してフィールド間の不一致を解決する
結合条件のフィールドが一致しない場合、それは結合条件に使用されているフィールドの値間の不一致であり、データ グリッドにはデータがほとんど、またはまったく表示されません。フィールド間の不一致はいくつかの理由によって発生する可能性がありますが、多くの場合、フィールドの文字列値または日付値の書式設定の不一致によって発生します。多くの場合、計算を使用して結合のフィールド間の不一致を解決できます。
ほとんどの関数を計算で使用して、結合条件のフィールドを作成および置き換えることができます (ただし、集計関数と表計算関数は除く)。
注: 結合の計算は QuickBooks Online、Marketo、Oracle Eloqua、Anaplan、ServiceNow ITSM、および Web データ コネクタではサポートされていません。
文字列の不一致
文字列データを操作する際の一般的な不一致シナリオは、結合条件の一方のフィールドの 1 つが、結合条件のもう一方の 1 つ以上のフィールドと同等の場合に発生します。この場合、計算を使用して 2 つのフィールドを組み合わせて、書式設定を結合条件のもう一方のフィールドと一致させます。
たとえば、次のデータを含む 2 つのテーブルを結合するとします。
パトロン | 連絡先 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
2 つのテーブル間の共通フィールドは名前のようです。ただし、"Patron (パトロン)" テーブルには、別の列に姓と名があり、"Contact (連絡先)" テーブルには、同じ列に姓と名があります。これらのテーブルを名前で結合するには、結合条件の左側の計算を使用して、姓の列と名の列をマージする必要があります。
結果として、結合ダイアログからのみアクセス可能な、結合条件の左側の計算フィールドが生成されます。この計算では、"Patron (パトロン)" テーブルのフィールドが、結合条件の右側の "Contact (連絡先)" テーブルのフィールドの書式設定と一致するようになった書式設定に変換されます。
結合で計算を使用すると、次の組み合わせられたテーブルが生成されます。
名 | 姓 | 支社 | メンバー登録年 | 借りているユニット | 料金 | 制限の案 | 名前 | 電話番号 |
---|---|---|---|---|---|---|---|---|
Alan | Wang | 北 | 2000 | 1 | 0 | 15 | Alan Wang | 555-0356 |
Fred | Suzuki | 北 | 2000 | 52 | .90 | 15 | Fred Suzuki | 555-0188 |
日付の不一致
日付データを操作する際の一般的な不一致シナリオは、結合条件の 1 つのフィールドの日付値が、結合条件の他のフィールドと異なる詳細レベルでキャプチャされた場合に発生します。この場合、結合条件で計算を使用して一方の結合条件のフィールドの書式設定を変更し、書式設定を結合条件のもう一方のフィールドと一致させます。
たとえば、次の 2 つのデータのテーブルがあるとします。
プロジェクターのレンタル | パトロン | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
新しいパトロンの動向を詳しく調べるには、"Patron (パトロン)" テーブルを "Projector Rental (プロジェクターのレンタル)" テーブルに結合すれば、どのようなライブラリ サービスが新規会員の獲得につながるかが分かるかもしれません。2 つのテーブル間の共通フィールドは "Date (日付)" および "Member since (入会年)" のようです。ただし、各フィールドの日付値は異なる詳細レベルで取り込まれています。これらのテーブルをそれぞれの日付フィールドで結合するには、それぞれの結合条件の計算で DATE 関数を組み合わせて使用することにより、各フィールドの詳細レベルを一致させます。
![]() |
![]() |
結合で計算を使用すると、次の組み合わせられたテーブルが生成されます。
日付 | 予約タイプ | 申請者 ID | ID | 名 | 姓 | 支社 | メンバー登録年 | 借りているユニット | 料金 | 制限の案 |
---|---|---|---|---|---|---|---|---|---|---|
1/1/2000 |
個人 | 233445589 | 232502870 | Alan | Wang |
北 |
2000 | 1 | 0.00 | 15 |
1/1/2000 | 個人 | 233445589 | 233445589 | Fred | Suzuki | 北 | 2000 | 52 | 0.90 | 15 |
1/1/2000 | 個人 | 233445589 | 233445566 | Ashley | Garcia | 南 | 2000 | 243 | 11.30 | 15 |
1/1/2000 | 個人 | 233445589 | 233448978 | John | Smith | 北 | 2000 | 36 | 3.50 | 15 |
パトロンが自身のメンバーシップを開始した年度にプロジェクターをレンタルしたかどうかを判別するには、ID に基づいて結合に句を 1 つ追加します。
追加の結合条件は、1 人のパトロンのみがプロジェクターをレンタルするためのメンバーシップを開始している可能性があることを示しています。
日付 | 予約タイプ | 申請者 ID | ID | 名 | 姓 | 支社 | 結合 | 借りているユニット | 料金 | 制限の案 |
---|---|---|---|---|---|---|---|---|---|---|
1/1/2000 | 個人 | 233445589 | 233445589 | Fred | Suzuki | 北 | 2000 | 52 | 0.90 | 15 |
結合のトラブルシューティング
オーバーカウント値または重複データ
注: 結合がデータを誤カウントしている場合は、代わりに関係を使用する必要があることを示している可能性があります。関係の詳細については、データの関連付けを参照してください。Tableau でさまざまな詳細レベルのデータ (多対多の関係など) の組み合わせがどのように処理されるかについては、「カーディナリティと参照整合性」を参照してください。
複数のテーブルに接続して結合する場合は、データ ソースの非正規化バージョンを設定します。場合によっては、Tableau は複数のテーブルを 1 つのテーブルとして扱います。複数のテーブルを 1 つのテーブルとして扱う場合、テーブルが結合された後にすべてのテーブルがクエリされます。これにより、値がオーバーカウントされる可能性があります。
たとえば、2 つのテーブルがあるとします。最初のテーブルには、従業員 ID や給与などの従業員情報が含まれます。2 つめのテーブルには部門名などの組織情報が含まれます。
テーブル 1
|
テーブル 2
|
従業員 ID でこれらのテーブルを結合すると、従業員が複数の部門と関連付けられているため、従業員の給与が 2 回以上カウントされます。
従業員 ID | 名前 | 給与 | 部門 | 雇用開始日 | 組織 |
20107 | Wilson, Henry | 61,000 | サポート | 7/28/2015 | 操作 |
20107 | Wilson, Henry | 61,000 | 売上 | 8/25/2016 | 操作 |
これは、一対多のカーディナリティの例です (テーブル 1 の 1 つの従業員 ID は、テーブル 2 の複数の結果に対応しています)。テーブル間のカーディナリティの詳細については、パフォーマンス オプションを使用してリレーションシップクエリを最適化するを参照してください。
この問題を解決するには、次のいずれかを実行できます。
-
データの関連付け: データが重複する可能性がある結合を作成する代わりに、関係を使用できます。詳細については、データの関連付けを参照してください。
集計の変更: 分析に応じて、MIN または AVG 集計を使用して二重計算を削除します。
たとえば、"Salary (給与)" の集計を "SUM (合計)" から "MIN (最小値)"、"SUM (合計)" から "AVG (平均値)" に変更する場合。
-
重複値を削除する計算フィールドを作成する:重複しているフィールドの合計を、重複を引き起こしているフィールドのインスタンスの数で除算する計算フィールドを作成できます。
たとえば、"Salary (給与)" の値は、Wilson、Henry の "Employee ID (従業員 ID)" のインスタンス数によって重複しています。この場合、ビューでは、Salary が次の式を使用する計算フィールドに置き換えられます。
SUM ([Salary])/ COUNT ([Employee ID])
.また、詳細レベルの式を使用して重複データを削除することもできます。詳細については、Tableau ナレッジ ベースの「LOD 計算を使用して重複データを削除する」(Link opens in a new window)を参照してください。
-
カスタム SQL の使用: Tableau では、カスタム SQL を使用した、データ ソース内の複数のテーブルへの接続をサポートしています。GROUP BY 句で結合する前に、テーブルを事前に集計できます。このオプションでは、SQL クエリの記述に関するある程度の知識と、可能であれば、データベース専門家からのサポートが必要になります。Tableau からカスタム SQL クエリへの接続方法の詳細については、カスタム SQL クエリへの接続を参照してください。
壊れたテーブルの結合とクロスデータベース結合
同じデータ ソース内でまたはクロスデータベース結合を使用してテーブルを結合する前に、結合キーのデータ型が一致していることを確認します。結合キーのデータ型が一致していない場合、結合は壊れ、赤い感嘆符とエラー メッセージ「結合フィールドで型が一致していません」で示されます。壊れた結合を修正するには、次のいずれかの提案を実行します。
-
結合計算を作成することで結合キーを一致させるよう、結合ダイアログでフィールドの書式設定 (データ型を含む) を変更できます。結合計算は、組み合わせる 1 つ以上のテーブルで結合キーの書式設定を変更できる、計算のサブセットをサポートしています。結合計算を作成するには、壊れた結合を持つテーブルの間にある [結合] アイコンをクリックし、書式設定の変更が必要なフィールドをクリックしてから、[結合計算の作成] を選択します。詳細については、結合で計算を使用してフィールド間の不一致を解決するを参照してください。
-
テキストまたは Excel ベースのデータの場合は、データ グリッド内のデータ型メニューを使用して、結合キー内のテキスト フィールドまたは Excel フィールドのいずれかのデータ型を変更します。
-
Tableau Desktop のみ:ほとんどの接続では、[カスタム SQL に変換] オプションで、CAST () などの関数を使用し、結合キーのいずれかのフィールドのデータ型を変更できます。[カスタム SQL に変換] オプションは、データ ソースに接続が 1 つだけ含まれている場合にのみ使用可能です。この場合は、2 番目の接続を削除してから、[データ] > [カスタム SQL に変換] を選択します。