metabaseでパレート図を作ってみた(SQLite)


副問い合わせを用いたものは割とよくありますが、windows関数をつかってパレート図のデータを作る方法がみつからず、
ちょっと作ってみたときのメモです。

データが少ないのでもしかしたらうまくいかないケースがあるかもしれません ^^;

準備

sqlite に man_hour というテーブルを作成して、以下のデータを投入し、
metabaseから接続しておく。

名前, 実績
hoge,   2
hoge,   2
fuga,   3
test,   2

グラフの作成

質問内容(記述したSQL)

-- データの絞り込み and ソート
with dataitem as (
select
    sum(実績) as 実績,
    名前
from man_hour
group by
    -- グルーピングしておく
    名前
order by
    -- ここでグルーピングしたものを多い順に並べ替えておく
    sum(sum(実績)) over (partition by 名前) desc
)

-- グラフ用
select 
    実績,
    -- 最初のデータから現在の行までを合計したものを、すべての合計で割る
    sum(実績) over (rows between unbounded preceding and current row) / sum(実績) over () as 累積比率,
    名前
from dataitem

グラフの設定(metabase)

  1. コンボを選択
  2. 「表示」の「累積比率」を展開し、どちらの軸で「左」を選択する。
  3. 「表示」の「実績」を展開し、どちらの軸で「右」を選択する。
  4. 「表示」の目標ラインをオンにして、目標値に「0.8」を記述する
  5. 「データ」の「累積比率」の歯車アイコンを押し、スタイルを「percent」にする

できたグラフ

グラフの左右の軸は反対にしたいが、metabaseの目標ライン機能を使いたかったので、
左側に累計比率をおいている(違和感があるが・・・)

そのほか

  • 「目標ライン」の点線が、なぜかずれる(たぶんmetabaseのバグ)