デジタル推進課

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

業務自動化これ一本!? KNIME 初心者への完全ガイド! KNIMEの使い方 入門から応用まで

本ブログでは、KNIME 初心者のための完全ガイドを作成しています。

 

KNIME初心者でもこれだけやれば、「KNIMEなんて簡単!」「自動化?まかせて!」「まだExcelでレポート作ってるの?」と言えるような人になれるようになることを想定しています。

Excelしか使ったことない・使う気のない方々に、KNIMEを使ってもらえるよう、私が実際に外資系企業で教えているノウハウを惜しみなく掲載中です。

自動化ツールKNIMEを社員全員が使える、ハイテク企業を目指しましょう!

その他の自動化ツール・プログラミングも随時更新しようと思います。 

 

一日1回押していただけると大変応援になります↓ 

にほんブログ村 IT技術ブログへ

 

 

KNIME - 始める前に

  1.  KNIMEとは?

  2. KNIMEをインストールしてみよう 

  3. KNIME - 2分で完了!? KNIMEをインストールしてみよう Mac編 - 2020年M1搭載MacBook Air で起動時間検証!

  4.  KNIME - 始めるその前に Databaseの基礎を理解しよう 

  5. KNIME - 始めるその前に (知っておくと便利)正規化とは? 

その他

  1. KNIME - 最新バージョンにアップデートしてみよう

 

KNIME - 初級編

  1. KNIME - 画面構成とNodeの基本構成 

  2. KNIME - 新しいワークフローを作ってみよう

  3. KNIME - Excelを読み書きしよう 

  4. KNIME - データ型変換を覚える ~XX to YY~ 

  5. KNIME - VLOOK UP を覚える ~Joiner~ 

  6. KNIME - グループで集計する ~GroupBy~ 

  7. KNIME - 特定のデータを抜き出す1 ~Row Filter / Splitter~ 

  8. KNIME - テーブルを上下でくっつける ~Concatenate~ 

  9. KNIME - 文字列を操作する ~String Manipulation~ CONCATENATE関数・置換・MID関数・FIND関数・LEFT関数・RIGHT関数 

  10. KNIME - 計算をする ~Math Formula~ 

  11. KNIME - 並び替えを行う ~Sorter~ 

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

  13. KNIME - ピボットをもとに戻す 列から行へ ~Unpivoting~ 

  14. KNIME - コラムの名前変更・削除・並び替え ~Column Rename / Column Filter / Column Resorter ~ 

  15. KNIME - ワークフローを共有しよう・受け取ろう 

  16. KNIME - ブラックボックスツールにしないためには? メモを残そう ~Annotation・Metanode・Node Description~ 

  17. KNIME - Workflowをカスタマイズしよう ~グリッドサイズ・ノード接続線~ 

 

 

KNIME - 中級編

  1. KNIME - 変数を使ってExcelに日付のSheetを追加してみよう ~Flow variable / Date&Time Configuration / Excel Sheet Appender~ 

  2. KNIME - Loopで複数ファイルを一気に読み込む ~List Files / Loop Start / Loop End / URL to File Path~

  3. KNIME - CSV ファイル・タブ区切りファイルを読み込む / Excel区切り位置の自動化 ~CSV Reader~

  4. KNIME - CSV ファイルを書き出す ~CSV Writer~ 

  5. KNIME - すべて文字列Stringとして取り込む ~File Reader~

  6. KNIME - 特定のデータを抜き出す2 ~Nominal Value Row Filter / Splitter~

  7. KNIME –特定のデータを抜き出す3~Duplicate Row Filter~ 重複削除・重複チェック

  8. KNIME - 特定のデータを抜き出す4 ~Reference Row Filter / Splitter~ 他テーブルを参照してフィルタを適用

  9. KNIME - 特定のデータを抜き出す5 ~Rule-based Row Filter/Splitter~ 複数の条件でフィルタ

  10. KNIME - 行/列の入れ替え ~Transpose~ Excel貼り付けオプションの自動化 

  11. KNIME - マニュアルでテーブルをKNIME内で作る ~Table Creator~

  12. KNIME - コラム名を抽出する ~Extract Column Header~

  13. KNIME - 総入れ替え! コラム名を挿入する ~Insert Column Header~

  14. KNIME - Row IDをいじり倒す ~Row ID~ 

  15. KNIME - コラムリストをもとにコラム削除 ~Reference Column Filter / Splitter~

  16. KNIME - ラベルを付ける ~Rule Engine~

  17. KNIME - 値の種類を数える / 固定値のコラムを作成する ~Value Counter / Constant Value Column~

  18. KNIME - セルをぶった切る ~Cell Splitter~

  19. KNIME - 文字数でセルをぶった切る ~Cell Splitter by position~

  20. KNIME - 欠損値(空白セル)を埋める ~Missing Value~

  21. KNIME - 時を操る1 日時を作る ~Create Date&Time Range~

  22. KNIME - 総当たりでデータ作成! ~Cross Joiner~

  23. KNIME - 時を操る2 期間の計算 ~Date&Time Difference~

  24. KNIME - 時を操る3 日時の足し算・引き算 ~Date&Time Shift~

  25. KNIME - 時を操る4 日時でフィルタリング ~Date&Time-based Row Filter~

  26. KNIME - 超便利! 時を操る5 日時情報を抜き出す ~Extract Date&Time Fields~

  27. KNIME - ファイルパスを操る1 - 今日の日付のフォルダを作る Create Directory

  28. KNIME - ファイルパスを操る2 - ファイルパスを作る Create File name

  29. KNIME - ファイルパスを操る3 - 自動削除フォルダを作る Create Temp Dir 

  30. KNIME - ファイルパスを操る4 - KNIMEで相対パス使うには?

  31. KNIME - ショートカットキーで毎日をちょっと便利に

  32. KNIME - これで完全自動化! - KNIMEを立ち上げずに実行する - バッチファイル・コマンドプロンプト

知っておくと便利編

  1. KNIME - 指定した回数繰り返すには? ~Counting Loop Start~

  2. KNIME - 実践編! 前処理が命。数日単位のデータを日単位のデータに ~Chunk Loop Start~

  3. KNIME - バグ取り支援 わざとエラーを起こす ~ Breakpoint ~

  4. KNIME - GroupByをしたあと元データに戻すには? Listの分解 ~Ungroup~

 

 

KNIME - 上級編

  1. KNIME - データベースノードとは? - 無料ETLツールとしてのKNIME

  2. KNIME - データベース(MS Access)を読み込む - Microsoft Access Connector・DB Table Selector・DB Reader

  3. KNIME - 条件によって異なる処理を - IF文・Switch文を習得する ~IF Switch・End IF~ 

  4. KNIME - Java でデータを操作する ~Java Snippet~ 

  5. KNIME - 固定長のファイルを読み込む fixed length input ~Java Snippet~

  6. KNIME - Javaで全角半角の相互変換!カタカナ・英数字・記号 ~Java Snippet~ 

  7. KNIME - Java 全角半角変換Nodeを作る - Java Snippet|まっきー|note

  8. KNIME - エラーでも止めない努力 - 例外処理 ~Try / Catch Errors~

  9. KNIME - 条件付きDo While Loop を実現させるには? ~ Variable Condition Loop End ~

  10. KNIME - ゼロ点揃えはできるのか?ワークフロー作成の考え方も解説 ~実践編~ 

 

KNIME - グラフ化

  1. KNIME - 棒グラフを作るには? - Bar Chart

  2. KNIME - 円グラフを作るには? - Pie/Donut Chart

  3. KNIME - 線グラフを作るには? ~Line Plot~

 

Python - ウェブスクレイピング

  1. Python - 情報処理試験 サイト内にあるPDFを一括でダウンロードする!! 123ファイルが2分でダウンロードできたよ!

  2. [東カレ] 完全自動いいね・足跡ツール公開|まっきー|note

  3. Python - Jupyter NotebookをMac M1 搭載機にインストールする

  4. Python - M1 MacにVisual Studio codeをインストールしてpythonを実行する

  5. Python - Mac M1搭載機にPython 3.9.1をインストーラでインストールしてみた

 

Bat - バッチファイル

  1. バッチファイル - 完全自動化の第一歩!バッチファイルとは?

  2. KNIME - これで完全自動化! - KNIMEを立ち上げずに実行する2 - タスクスケジューラ 

 

その他

  1. ブログ開設記念

  2. はてなブログ無料版でGoogle Adsenseに合格したい方必見! - 審査基準を徹底分析 17回落ちて気付いたこと ~2020年8月版~ 

  3. プライバシーポリシー 

  4. お問い合わせ 

 

 

 

少しの応援が大変励みになります。

まっきーにOFUSEする

f:id:makkynm:20201219150553p:plain

 

KNIME - GroupByをしたあと元データに戻すには? Listの分解 - Ungroup

 

f:id:makkynm:20210223101109p:plain

 

はじめに

こんにちは、自動化大好きまっきーです。今回は"Ungroup"というNodeを紹介したいと思います。

このNodeは、名前の通り、GroupByを解除するというような使い方に有効です。

実用的には、下のすさんのブログで紹介されているように、縦方向にセル結合されたものを1行ずつにするというような使い方くらいかなと思います。

sumtat.hatenablog.com

 

 

 今回のテーマ ~Ungroup~

f:id:makkynm:20210223091544p:plain

今回のテーマ ~Ungroup~

なお、今回使用するデータは以前GroupByで使用したデータと同じです。もしGroupByってなんだ?と言う方がいらっしゃれば、下記の記事をご覧ください。

degitalization.hatenablog.jp

 

 

覚えてほしいこと

UngroupはListを縦方向に解除する

 

やりたいこと - Ungroup

「GroupByで合計残業時間を算出したあと、GroupBy前のデータ(勤怠表のデータ)に戻す」

ということをやりたいと思います。

GroupByで合計残業時間を算出したあと、GroupByで潰してしまった日付ごとの情報を復活させます。

f:id:makkynm:20210223091402p:plain

やりたいこと - Ungroup

 

 

事前準備

GroupByのConfigure

まずはGroupByのConfigureです。GroupByする際に、List型のデータを作成していることが、Ungroupで元データを復活させるためには必要です。

ListはManual Aggregationのオプションで指定することができます。

f:id:makkynm:20210223094807p:plain

事前準備 - GroupByのConfigure

ちょっと一言でも解説しますが、ここが元データに戻すために必要になるポイントとなります。

 

List(リスト)とは?

List(リスト)とは、データの塊を角かっことカンマで表現したものです。英語では、"Collection"と言ったりもします。

例えば、

「りんご、いちご、みかん」

と言うデータの塊があるとすると、List(リスト)型で表現すると、

[りんご, いちご, みかん]

と言うようなデータの持ち方になります。

KNIMEでは、Listのデータ型は下のような[...]と言うアイコンで表現されます。

f:id:makkynm:20210223095227p:plain

List型のアイコン

また、全てのデータを横に並べると大変なことになってしまうので、3データくらい見せた後は「...」で省略されます。

f:id:makkynm:20210223095445p:plain

List型のデータの表現

 

Ungroupの使い方

このNodeは、Listというデータ型になっているものを縦方向に展開する機能を持っています。

Workflow

Ungroupを使ってGroupByする前のデータ、JoinerのOutputを再現したいと思います。

f:id:makkynm:20210223091544p:plain

workflow - Ungroup

 

Confirm - Before After

出勤日と残業時間のコラムに注目ください。GroupByで一度殺してしまっている、日付単位の情報が、Ungroupにより復活していることがわかると思います。

f:id:makkynm:20210223091402p:plain

Confirm - Ungroup

 

Configure

UngroupのConfigureは非常に単純です。縦方向に分解したいリスト型を選択するだけです。

f:id:makkynm:20210223092705p:plain

Configure - Ungroup

一応Additional Settingsについて解説しておきます。

Remove selected collection column

 選択されたリスト型のコラムを出力から除外する
Skip missing values

 欠損値があった場合スキップするオプションです
Skip empty collections

 もしデータのない空リストだった場合はスキップします。

 ちょっと一言

 Ungroupの注意点

注意点として、決してUngroupがGroupByの元情報を認識しながら元に戻すわけではないということがあげられます。

ちょっとこの表現では分かりにくいかもしれないのですが、UngroupはListを縦方向に分解する能力しか持っていないということです。実験してみましょう。

ListとList(Sorted)の違いについて - GroupBy

実験する前段階として、GroupByの機能でListを作るときに、List(sorted)というオプションがあったと思います。この機能について少しだけ解説します。

これは、Listを作る際にソートをかけておくというオプションです。

例えば、縦方向に

というようなデータがあった場合には、通常のListだと、

[4,3,2,6]

というデータの持ち方になりますが、List(Sorted)のオプションを適用すると、

[2,3,4,6]

というデータの持ち方になります。

今回の例で言うと、残業時間と勤務日をListにしたと思います。これをList(Sorted)をしたものと比べてみましょう。

ソートしたリスト

f:id:makkynm:20210223093427p:plain

GroupBy - List(Sorted)

ソートしないリスト(元データの順番を継承)

f:id:makkynm:20210223093448p:plain

GroupBy - List

 

List(Sorted)を使ってUngroupした場合どうなるか?

さて、このList(Sorted)を使用してListを作った場合の結果をお見せします。

ご覧の通り、元データと異なるデータが作られてしまいました。つまり、UngroupはListを単純に縦方向に分解する機能しか持っていないと言うことです。

f:id:makkynm:20210223093945p:plain

List(Sorted) を使用

 

List型はExcel Writerには対応していない

List型を含んだままそのままExcel に出力しようとしても出力できません。下記のエラーが出ると思います。

ERROR Excel Writer

Execute failed: Unsupported column type 'List'. Please remove corresponding column(s) from the input table.

サポートしてないので、Column FilterとかであらかじめInputからリスト型は抜いておいてね。と言う意味ですね。

f:id:makkynm:20210223100239p:plain

List型は出力できない

おわりに

いかがでしたでしょうか。List型を使うのは少し高度なNodeに出てくることがあります。応用の聞くNodeなのかもしれません。こんなところで使ってます!と言うようなコメントあれば嬉しいですね。

ではまた!

 

一日1回押していただけると大変応援になります↓ 

にほんブログ村 IT技術ブログへ

 

 

 

余談 

またまた楽天モバイルのお話。楽天の三木谷さんが、赤字決算のお話してましたね。

「1141億円」の赤字だと言うことです。そりゃそうですよね、1年間無料で楽天モバイルのプランを拡大しまくってるんですもん。なおかつポイントあげちゃってますし。

契約数が想定以上に多かったみたいです。今の時期に楽天さんがお金くれるって言うんですからありがとうございますって感じで受け取ります。格安SIMとしては、サービスとしてとてもいいと思います。

また不便なところなどレポートしたいと思いますー、ではまた!

楽天モバイル

 

 

参考リンク