Skip to main content

お世話になります。

ストアAとストアBのそれぞれの売上データが1つのデータテーブルにまとまっており、それぞれのストアを別々のダッシュボードに表示しようと考えています。

カスタムSQLを利用して接続するのですが、パフォーマンス向上の観点でフィルタを付けるタイミングとして以下2パターンで悩んでいます。

①カスタムSQL内でストアAのみにフィルタを​かけ接続し、再度新しいデータソースにて今度はストアBにみにして接続する。

②​カスタムSQL内ではフィルタをかけず、シート毎にフィルタをかける。

​​

どちらが速くなりますでしょうか。​

Tableau内でフィルタ出来るのであれば、​Tableau内で実施が良いという記事を見ましたが、このようなケースでも①の方がパフォーマンスが良くなるのでしょうか。

※ストアA、Bのデータを同時に利用するシートは一切存在しない前提になります。​

2 respuestas
  1. 15 may 2023, 09:15

    環境次第なのでなんとも言えないところですが、理屈だけでいうとあまり変わらないか②のほうが早くなります。カスタムSQLはTableauによるクエリ最適化や​キャッシュの対象外になる場面が出てくる(と言われている)ためです。

    Connecting Through Custom SQL Causes Slow Performance | Tableau Software

    理屈でいうと上述のような感じなのですが、その差を人間が体感できるかというと話は別です。また、使用しているデータベース製品とテーブルの切り方、データの結合の仕方によっては​カスタムSQLのほうが明確に早い場合もあります。

    他の選択肢としては

     ・シートごとにフィルタをかけるのではなくデータソースフィルタをかける

     ・テーブルを分ける

     ・(製品が対応していれば)マテリアライズドビュー​を使用する

    といった方法が考えられます。更新頻度が多ければ(1分ごとにデータが追加/更新されるなど)データソースフィルタが、少なければ(1日1回更新とか週1回更新とか)マテビューがトータルのクエリ負担は小さくなるのではないかなと思います。

0/9000