0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TableauフィルタとSQLの比較(2)

Last updated at Posted at 2025-05-15

前回の記事( https://qiita.com/cyberfuture/items/3f1cbc00c3b292c5caf1 )で、下記問題に対して対照するSQLを説明いたしました。
1、「売上合計の上位10の製品のカテゴリごとの2021年売上合計を表示します。」

本記事では、下記の問題に対して対照して見ます。
2、「2021年のデータをもとに、売上合計の上位10の製品のカテゴリごとの売上合計を表示します。」

前回記事では、フィルタ「年(オーダー日):2021」と「製品名」はそれぞれ独立していますが、今回では、フィルタ「年(オーダー日):2021」はメジャー「合計(売上)のフィルタ条件(Viz LOD)として有効する上、フィルタ「製品名」のフィルタ条件(Filter LOD)としても有効するはずです。

この問題に対して、SQLの方は理解しやすいなので、まずはSQLを作りましょう。

select カテゴリ, sum(売上) as 売上合計, sum(利益) as 利益合計 from dbo_Azure.注文
 where year(オーダー日) = '2021'
 and 製品名 in (select 製品名 from (select top 10 製品名, sum(売上) as 売上合計 from dbo_Azure.注文  where year(オーダー日) = '2021' group by 製品名 order by 売上合計 desc) A )
 group by カテゴリ order by 売上合計 desc

そのうち、

製品名 in (select 製品名 from (select top 10 製品名, sum(売上) as 売上合計 from dbo_Azure.注文  where year(オーダー日) = '2021' group by 製品名 order by 売上合計 desc) A )

はフィルタ「年(オーダー日):2021」がフィルタ「製品名」のフィルタ条件(Filter LOD)としても有効するようになります。

検索結果は下記のようになっています。
image.png

Tableauのフィルタの間ではそれぞれ独立なので、片方のフィルタを他のフィルタを影響するには、「コンテキストに追加」したらOKです。
フィルタ「年(オーダー日):2021」を右クリックして、「コンテキストに追加」を選択します。そうすると、Tableau画面が下記のように変更する。
image.png

但し、フィルタが多数がり、一部のフィルタが「年(オーダー日):2021」に影響されて、それ以外のフィルタが「年(オーダー日):2021」に影響されない場合、コンテキストは適切でないようになります。
その場合、上位10製品の計算フィールドを作成するか、上位10製品のセットを作成するかのような手段があります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?