デジタル推進課

KNIME・Excel Macro・Power Automateなど日々の業務で使用できる自動化ツールを中心に書き綴ります

KNIME - ピボットを行う 行から列へ ~Pivoting~

f:id:makkynm:20201219195644p:plain

 

 

はじめに

今回はみんな大好き、ピボット機能を紹介します。レポート作成を自動化するとき、ピボットをしてマトリックスのように最終出力したいというよう要望が多々あります。

KNIMEではデータベースの形になってしまっているので、レポート配信を最終目標にする場合は、必須の機能ですね。

GroupByのConfigureとほとんど同じなので、まだGroupByを知らない方は、まずGroupByを押さえておくと入りやすいと思います。 

degitalization.hatenablog.jp

 

 今回のテーマ ~Pivoting~

ピボットといえば、縦に連なっているデータを集計しながら横に並び変えてマトリックスのように見せる機能ですよね。

f:id:makkynm:20200504093619p:plain

ピボットを行う ~Pivoting~

 

覚えてほしいこと

ピボットテーブルの

行をGroup

列を Pivots

値をAggregation

で指定

 

やりたいこと

Excelのピボット機能です。GroupByは、行と値のみを指定していましたが、今回はそれに"列"を追加した機能です!

今回は勤怠表を、行を社員、日付をコラムに持っていって、残業時間をマトリックスで見せる処理を行います。

f:id:makkynm:20200505111736p:plain

やりたいこと - ピボット

 

Pivotingの使い方

Workflow

f:id:makkynm:20200504093619p:plain

Workflow - Pivoting

Workflowは下記からダウンロードできます。

hub.knime.com

 

Confirm - Before After

さて、まず驚くのはOutputのポートが3つもあることですよね。基本1番上(Pivot table)のみ使用します。

1つ目(Pivot table)

f:id:makkynm:20200505115154p:plain

Confirm - Before After - Pivot table

 

使用はしませんが、2つ目(Group totals)と3つ目(Pivot totals)はそれぞれ下記のようになっています。

2つ目(Group totals)

2つ目のGroup totalsは、GroupByの出力と同じです!つまり、Configure でいうPivotsの部分が除かれています。

Excelでいう列の部分を除いた結果が、2つ目に出力されています。

f:id:makkynm:20200505115548p:plain

Confirm - Group totals

3つ目(Pivot totals)

2つ目のPivot totalsは、ConfigureでいうGroupの部分が除かれた結果です。

Excelでいう行の部分を除いた結果が、3つ目に出力されています。

f:id:makkynm:20200505115755p:plain

Confirm - Pivot totals

 

Configure

 ステップは、5StepありますがPivotの分が追加されたのみで、ほとんどGroupByと同じです。

f:id:makkynm:20200505120818p:plain

Pivoting Configure - Step1

f:id:makkynm:20200505120844p:plain

Pivoting Configure - Step2

f:id:makkynm:20200505120859p:plain

Pivoting Configure - Step3,4,5

 

Step1 - Group settings

GroupByのStep1と全く同じです。

グループを指定します。今回は各社員ごとの残業時間を算出したいので、「社員番号」と「名前」をGroup columnの緑の枠に入れました。

この設定はピボットテーブルでいう”行”に相当します。

Step2 - Pivots settings 

 ここがGroupByと唯一異なる点です。ここでは、行から列に移動させたいコラムを選択します。今回は、出勤日を列に移動させたいので、出勤日を緑の枠に入れました。出勤日の種類の数だけ、新しいコラムが作成されることになります。

この設定はピボットテーブルでいう”列”に相当します。

Step3 - Aggregation column setting 

GroupByのStep2と全く同じです。

どのコラムを計算させるかを指定します。

ピボットテーブルでいう"値"に相当します。

選択可能なコラム一覧がAvailable Columnsに出てきます。このコラム一覧から、計算させたいコラム(今回は"残業時間[h]")をダブルクリックするか、1クリックしてAddのボタンを押せば、計算対象に指定できます。

Step4 - Aggregation setting

GroupByのStep3と全く同じです。

実際に計算させる方法をここで指定します。Aggregationの部分をクリックすると、計算方法が指定できます。今回は合計を求めたいので、"Sum"を指定しました。

Step5 - Column Naming

GroupByのStep3に相当します。

Pivotingでは、GroupByでのColumn namingが、Aggregation nameに変わっています。また、Column nameというもう一つのプルダウンが追加されています。

コラム名を、Pivotで指定した列の値のままにしたい場合は、Column nameに"Pivot name"を指定するだけでいいと思います。

f:id:makkynm:20200505122921p:plain

Column name

ちなみにその他の設定は、Aggregation name(GroupByの設定でいうColumn naming)をPivotの値の前後に入れたい場合に使用します。

f:id:makkynm:20200505123419p:plain

Column name + Aggregation name

 

おわりに

単純に縦横を入れ替えたい場合は、TransposeというNodeがあります。それはまた今度解説できればと思います。もう超頻出のNodeはだいぶカバーできたと思います。

GWコロナ休業ばっかでつまらないですね、、早く遊びに行きたいーー

 

 

 

 

余談

行から列へ変換するような変化のあるおススメ映画は、「ビューティフル・マインド」です。 これあらすじは見てのお楽しみの方がいいと思うので、あまり言いませんが、最後のおじいさんになったときの姿が個人的に大好きです。なるほどな、こういう展開かと映画後半からなってきますのでぜひ最後まで見てください!

ビューティフル・マインド (字幕版)

ビューティフル・マインド (字幕版)

  • 発売日: 2013/11/26
  • メディア: Prime Video
 
ビューティフル・マインド(吹替版)

ビューティフル・マインド(吹替版)

  • 発売日: 2017/07/01
  • メディア: Prime Video
 

 

www.youtube.com

参考リンク