コンテンツにスキップ

複数テーブル結合ステップ

複数テーブル結合ステップは、1回の操作で多数のテーブルを結合します。2テーブルの結合を何度も連鎖させると、全体像が見えなくなり、同じ出力マッピングを繰り返すことになります。このステップでは、すべてのテーブルをビジュアルな結合グラフデザイナーに配置し、列間の結合を描画して、1つの結果テーブルを生成します。

1つのファクトテーブルを複数のディメンションテーブルまたはルックアップテーブルに結合するという、分析でよくある結合パターンを想定して作られています。一度に最大32個のテーブルを結合できます。

ほかのステップと同様に追加し、複数テーブル結合を選択します(ステップメニューのテーブルグループにあります。高度なワークフローのキャンバスではパレットからドラッグすることもできます)。このステップのエディターには3つのタブがあります。

  1. Tables & Joins — テーブルを追加して結合を描画するビジュアルデザイナーです。
  2. 出力列 — 結果テーブルに含める列です。
  3. Post-Join Filter — 結合後の結果に適用する任意のフィルターです。

作業中は、ステータスインジケーターに保存できますまたは未保存の変更と表示されます。

テーブルを追加を選択すると、ソーステーブルがキャンバスに配置されます。各テーブルは列を一覧表示するカードとして表示され、エイリアスが割り当てられます。エイリアスは、ほかの場所でそのテーブルの列を参照するための短い名前です(alias.column の形式)。エイリアスは英字またはアンダースコアで始める必要があり、SQLキーワードは使用できません。必要な数だけ(最大32個)追加し、結果の書き込み先となるターゲットテーブルを選択します。

カタログ内でテーブルの列が変更された場合は、サーバーから再取得を使うと、カードの列が最新の値に置き換わります。

ソーステーブルとターゲットテーブルはどちらも、リストから選ぶ代わりに参照として指定できます。テーブルピッカーで動的にチェックを入れ、次のいずれかを入力します。

  • テーブルの名前 — FACT_GL
  • プロジェクトのパス — /03 Results/FACT_GL

どちらにも {variable} トークンを含めることができ、ワークフローの実行時に置換されます。たとえば /03 Results/FACT_GL_{year} は、プロジェクト変数またはワークフロー変数に応じて、期間ごとに異なるテーブルに書き込みます。ターゲットテーブルが存在しない場合は作成されます。

波かっこの不一致は保存時に検出されるため、たとえば FACT_{year のような入力ミスは、実行の途中で失敗するのではなく、ステップ上でエラーとして報告されます。

あるテーブルの列のドットから別のテーブルの列へドラッグして、結合(エッジ)を作成します。エッジを選択すると右側にそのエディターが開き、次の項目を設定できます。

  • 結合タイプ:

    タイプ 保持される行
    INNER 一致する行のみ
    LEFT 左のテーブルのすべての行
    FULL 両側のすべての行
    CROSS 左のすべての行と右のすべての行の組み合わせ(条件なし)
  • 結合条件 — 2つのテーブルの列間の比較を1つ以上指定します。+ 条件を追加で追加し、AND / OR で組み合わせます。すべての演算子(=、<>、<、<=、>、>=、BETWEEN、IS NULL、IS NOT NULL、IN、NOT IN、LIKE、NOT LIKE)を使用できます。

  • ラベル(任意) — 結合に名前を付けます(たとえば customer-to-orders)。図が読みやすくなります。

デザイナーは結合グラフをツリーとして保持します。各テーブルは1つの結合だけを通じて結果に接続されるため、循環や曖昧な経路は生じず、テーブルをそれ自身に結合することもできません。結合を削除するには、エッジを選択してエッジを削除を選びます。

結合前にテーブルをフィルターする

Section titled “結合前にテーブルをフィルターする”

各ソーステーブルには、結合の前に適用される結合前フィルターがあります。これを使うと、必要な行だけにテーブルを絞り込めます(列は alias.column で参照します)。これは、すべての結合の後に実行される Post-Join Filter とは別のものです。

  • レイアウトを整理は、テーブルと結合を結合順に左から右へ自動配置します。
  • 全体を表示は、グラフ全体が収まるように拡大縮小して中央に配置します。パンやズームを手動で行うこともできます。
  • 列をフィルター… は、列数の多いテーブルでカードに表示する列を絞り込みます。
  • 元に戻す / やり直しは、編集を前後に戻したり進めたりします(Ctrl+Z / Ctrl+Y)。履歴を開くと、ダイアログを開いてからのすべての変更がパネルに表示され、復元できます。
  • エクスポートは、結合の図をSVG画像としてダウンロードします。ドキュメント作成やレビューに便利です。

出力列タブで、結果テーブルに含める列を選択します。結合されたどのテーブルの列も選択できます。キャンバスから選択… ですべてのソースの列から視覚的に選ぶか、すべてのソース列を追加でまとめて追加できます。各列について、名前の変更、データ型の設定、集計の適用ができます。2つのソース列が同じ名前の場合、PlaidCloudは衝突しないようにソースエイリアスを接頭辞として付けます。

各出力列の値は、次の3つのうちちょうど1つから取得されます。

  • ソース列 — ソースエイリアスにその列を持つキャンバス上のエイリアスを、ソースに alias.column の参照を設定します。どちらも必須です。ソース列は、必ず元のテーブルを指定します。
  • 定数 — すべての行で同じ固定値です。
  • 式 — 式の列を追加を選択すると行が追加され、式エディターが開きます。式では、キャンバス上の任意のソースエイリアスを alias.column として参照できます。複数の結合テーブルにまたがる値(2つのテーブルにまたがる CASE、連結、計算した金額など)はこの方法で作成します。式の行では、ソースエイリアスとソースは空のままにします。

複数を入力した場合はエラーになり、どれも入力しない場合もエラーになります。

式セルでは、PlaidCloud標準の式エディターが開きます。列ブラウザーにはキャンバス上のすべてのテーブルが表示され、関数リストとオートコンプリートも利用できます。

出力列はキャンバスに追従します。Tables & Joins タブでソースの名前を変更すると、その出力列は新しいエイリアスに移り、ソースを削除すると、その出力列も削除されます。そのため、結合に含まれなくなったテーブルを指す列が残ることはありません。

Post-Join Filter タブでは、結合結果をターゲットテーブルに書き込む前に適用する任意のフィルターを設定します。SQLの HAVING 句に相当します。ボックスをクリックすると式エディターが開きます。出力列が列ブラウザーに一覧表示され、result.column_name として参照します。ここではソースエイリアスはスコープ内にありません。ボックスの下にある利用可能な参照には、使用できるすべての参照が一覧表示されます。空のままにすると、結合後のフィルターは行われません。

PlaidCloudは、結合の構築中と、ステップの実行時に、結合を検証します。サポートされていない構成、循環、エイリアスの重複、Source / Constant / Expression のいずれも設定されていない(または複数が設定されている)出力列、存在しなくなった列などの問題がある場合、タブに件数付きの ⚠ バッジが表示され、デザイナー上で該当するテーブルや結合が強調表示されます。保存は理由とともに拒否されます。未解決の問題がある状態で保存すると、最初の問題があるタブに切り替わります。問題へ移動でも同じ操作をいつでも行えます。

保存時には、PlaidCloudは各出力列の式を、ステップの実行時と同じ方法で、結合自身の入力に対してエイリアス(alias.column)で検査し、Post-Join Filter も検査します。式に誤りがある場合は該当する出力列に、Post-Join Filter に誤りがある場合はそのフィルターに報告されます。結合が実行時に指定された列も引き継ぐに設定されていて、集計していない場合、列は実行時に追加されるため、保存時の式の検査はスキップされます。これらの式はステップの実行時に検査されます。ソースごとのフィルターも、ステップの実行時に検査されます。

複数テーブル結合は、ほかのステップと同じように実行されます。すべての結合を1回の操作で実行し、マッピングされた列をターゲットテーブルに書き込みます。