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の比較(1)

Last updated at Posted at 2025-05-15

Tableauのビュー、フィルタなどは主にGUI操作ですが、そのデータ処理仕様は基本的にSQLと同じです。
今回はフィルタを例として簡単に紹介いたします。

まずは下記問題をご確認お願いします。
「2021年、売上合計の上位10の製品のカテゴリごとの売上合計を表示しましょう。」

この問題は実に曖昧になっています。下記2つ違う問題として理解できます。
1、「売上合計の上位10の製品のカテゴリごとの2021年売上合計を表示します。」
2、「2021年のデータをもとに、売上合計の上位10の製品のカテゴリごとの売上合計を表示します。」
というのは、フィルタ条件「売上合計の上位10の製品」はすべての年度に対して計算するか、2021年に対して計算するかの違いです。

SQLを書くと、二つの違う問題がはっきり見えますが、Tableauの初心者では、うまく区別できない可能性があります。

本記事は1、「売上合計の上位10の製品のカテゴリごとの2021年売上合計を表示します。」に対して、TableauとSQLをそれぞれ作ってみます。

まずTableauビューを作ります。
image.png

※こちらのフィルタ「年(オーダー日):2021」と「製品名」はそれぞれ独立して、同時にメジャー「合計(売上)のフィルタ条件として有効です。」

このTableauビューに対照するSQLは下記の通りです。

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

そのうち、検索条件

year(オーダー日) = '2021'

はTableauのフィルタ「年(オーダー日):2021」と同じです。

検索条件

製品名 in (select 製品名 from (select top 10 製品名, sum(売上) as 売上合計 from dbo_Azure.注文 group by 製品名 order by 売上合計 desc) A )

はTableauのフィルタ「製品名」と同じです。

検索結果は下記の通りです。
image.png

次の記事( https://qiita.com/cyberfuture/items/428ad6b47cbf9a75a447 )では2、「2021年のデータをもとに、売上合計の上位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?