見出し画像

Tableau のリレーションシップ機能 その7 ~ カーディナリティって何?① ~

Tableau のリレーションシップの設定画面を見ると、パフォーマンスオプション というものがあります。「分析中にクエリーを最適化します」と書きつつも「わからない場合は既定の設定をお勧めします」と書かれています。そして "カーディナリティ" と "参照整合" というオプションがあり、既定では、カーディナリティが "多数" 、参照整合が "一部のレコードが一致" になっています。これはいったい何ぞや???

カーディナリティって何ぞや?

私は、"リレーションシップ" の登場で久しぶりに "カーディナリティ" という言葉を聞きました。Tableauを使う中ではほとんど意識していませんでしたが、これはデータを扱う上では基本中の基本。この際、Tableau ユーザーもカーディナリティを理解しておきましょう。

"カーディナリティ" とは、簡単に言うとデータの "一意性" のことです。リレーショナルデータベースでは、ほとんどの場合、複数のテーブルを結合してデータを利用していきます。この結合関係が一意か? or  多数か? を示しているのがカーディナリティです。

これまで説明してきた例題で、TRN_01.CSV と CST_01.CSV の間にはどんな関係性があるでしょうか?
(本編で使用しているサンプルデータはこちらに保管してあります)
Google Drive: Tableau Relationship


CST_CD の列の中身を見ると、どちらのテーブルの CST_CD も、種類別に見ると、一つずつしかありません。この時、この2つのテーブルには、1対1の関係性がある、と言えます。

1対1の関係

TRN_02.CSV と CST_01.CSV はどうでしょう?

TRN_02.CSV は、"b" という CST_CD が2行ありますから、この2つのテーブルには、多対1の関係性がある、と言えます。

多対1の関係

TRN_01.CSV と CST_02.CSV はどうでしょう?

CST_02.CSV は、CST_CD: "b" や "c" が2行ありますから、この2つのテーブルには、1対多の関係性がある、と言えます。

1対多の関係

最後に、TRN_02.CSV と CST_02.CSV はどうでしょう?

多対多

こちらはもう解りますよね! 多対多です。

Tableau の "リレーションシップ" は、オプションで、この関係性を定義しておくことが出来るようになっています。この定義によって何が起こるか?というと、クエリーを効率良く作成することが出来るようになっています。

既定では、多対多 の関係を推奨していますが、予めテーブルの関係性が定義出来るのであれば、カーディナリティを設定したほうがパフォーマンスが向上します。ここを無視されている方は多いです。無視しても Tableau が「よしなに」判断してくれるのですが、出来れば設定したようが良いです。

次回のブログでは、カーディナリティの設定によって、クエリーがどう変化するか?を見ていきたいと思います。

先ずは、「カーディナリティ」って何ぞや? のお話でした。

Tableau のリレーションシップについてシリーズでブログを書いています。過去の記事はこちらなので、途中から読み始めた方は過去記事も読んでみて下さいね。

【過去の記事】
Tableau のリレーションシップ機能 ~プロローグ~
Tableau のリレーションシップ機能 その1 ~ 復習: 結合(JOIN) ~
Tableau のリレーションシップ機能 その2 ~ リレーションシップ ~
Tableau のリレーションシップ機能 その3~ 完全外部結合 ~
Tableau のリレーションシップ機能 その4 ~ 内部結合・外部結合 TIPS ~
Tableau のリレーションシップ機能 その5 ~ 結合キーが複数行ある場合① ~
Tableau のリレーションシップ機能 その6 ~ 結合キーが複数行ある場合② ~


いいなと思ったら応援しよう!