Tableauのビュー、フィルタなどは主にGUI操作ですが、そのデータ処理仕様は基本的にSQLと同じです。
今回はフィルタを例として簡単に紹介いたします。
まずは下記問題をご確認お願いします。
「2021年、売上合計の上位10の製品のカテゴリごとの売上合計を表示しましょう。」
この問題は実に曖昧になっています。下記2つ違う問題として理解できます。
1、「売上合計の上位10の製品のカテゴリごとの2021年売上合計を表示します。」
2、「2021年のデータをもとに、売上合計の上位10の製品のカテゴリごとの売上合計を表示します。」
というのは、フィルタ条件「売上合計の上位10の製品」はすべての年度に対して計算するか、2021年に対して計算するかの違いです。
SQLを書くと、二つの違う問題がはっきり見えますが、Tableauの初心者では、うまく区別できない可能性があります。
本記事は1、「売上合計の上位10の製品のカテゴリごとの2021年売上合計を表示します。」に対して、TableauとSQLをそれぞれ作ってみます。
※こちらのフィルタ「年(オーダー日):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のフィルタ「製品名」と同じです。
次の記事( https://qiita.com/cyberfuture/items/428ad6b47cbf9a75a447 )では2、「2021年のデータをもとに、売上合計の上位10の製品のカテゴリごとの売上合計を表示します。」の問題に対して説明いたします。