Tableau のリレーションシップ機能 その7 ~ カーディナリティって何?① ~
Tableau のリレーションシップの設定画面を見ると、パフォーマンスオプション というものがあります。「分析中にクエリーを最適化します」と書きつつも「わからない場合は既定の設定をお勧めします」と書かれています。そして "カーディナリティ" と "参照整合" というオプションがあり、既定では、カーディナリティが "多数" 、参照整合が "一部のレコードが一致" になっています。これはいったい何ぞや???
私は、"リレーションシップ" の登場で久しぶりに "カーディナリティ" という言葉を聞きました。Tableauを使う中ではほとんど意識していませんでしたが、これはデータを扱う上では基本中の基本。この際、Tableau ユーザーもカーディナリティを理解しておきましょう。
"カーディナリティ" とは、簡単に言うとデータの "一意性" のことです。リレーショナルデータベースでは、ほとんどの場合、複数のテーブルを結合してデータを利用していきます。この結合関係が一意か? or 多数か? を示しているのがカーディナリティです。
これまで説明してきた例題で、TRN_01.CSV と CST_01.CSV の間にはどんな関係性があるでしょうか?
(本編で使用しているサンプルデータはこちらに保管してあります)
Google Drive: Tableau Relationship
CST_CD の列の中身を見ると、どちらのテーブルの CST_CD も、種類別に見ると、一つずつしかありません。この時、この2つのテーブルには、1対1の関係性がある、と言えます。
TRN_02.CSV と CST_01.CSV はどうでしょう?
TRN_02.CSV は、"b" という CST_CD が2行ありますから、この2つのテーブルには、多対1の関係性がある、と言えます。
TRN_01.CSV と CST_02.CSV はどうでしょう?
CST_02.CSV は、CST_CD: "b" や "c" が2行ありますから、この2つのテーブルには、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 ~ 結合キーが複数行ある場合② ~