デジタル推進課

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 - 最新バージョンにアップデートしてみよう

  2. KNIME - 拡張機能を使って最強便利ツールに激変させる~install KNIME extensions~

 

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~

  5. KNIME - 桁数調整をするには? 四捨五入・切り上げ・切り捨て ~Round Double~

  6. KNIME - Google アカウントと1クリックで連携させるには? ~Google Authentification~

  7. KNIME - Google Spread Sheet をKNIMEで使うには? ~Google Sheets Connection / Google Sheets Reader Writer~

  8. KNIME - Googleドライブ上にあるExcelを読み込み・書き出すには? ~Google Drive Connector / Excel Reader Writer v4.3~

 

 

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 - ゼロ点揃えはできるのか?ワークフロー作成の考え方も解説 ~実践編~ 

  11. KNIME - APIを使ってみよう!郵便番号から住所を一括取得するには? ~GET Request / String to JSON / JSON to Table~ 

  12. KNIME - XMLを簡単に分解するには? ~XPath・サイトマップ~

 

KNIME - グラフ化

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

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

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

 

Bat - バッチファイル

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

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

 

 

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をインストーラでインストールしてみた

  6. Python - WebページをPDFで自動保存する ~Selenium pdf Print Option~ HTML to PDF

  7. Mac M1搭載機にHomebrewをインストールするには?

  8. Python - 完全自動化!初心者が無料でウェブスクレイピングを定期実行してみた - Mac M1搭載機 ~Heroku / Selenium / Homebrew / Chrome Driver~ 

 

資格取得

  1. 資格取得 - 勉強期間1ヶ月!?独学で基本情報技術者試験に合格するためにすべき3つのこと

 

その他

  1. ブログ開設記念

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

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

  4. お問い合わせ 

 

KNIMEに関する本

たまに質問もらいます、KNIMEに関する書籍です。

KNIMEに関する日本語の本って今これくらいしかないと思うんですよね、、

本がいいなーと言う人はぜひ試してみてください。

 

 

 

KNIME - XMLを簡単に分解するには? ~XPath・サイトマップ~

f:id:makkynm:20210426002312p:plain


 

 

はじめに

こんにちは、まっきーです。今回は「XML構造を簡単に分解するNode」を解説したいと思います。簡単なXMLファイルの例として、本ブログのサイトマップを使用したいと思います。

XMLサイトマップhttps://degitalization.hatenablog.jp/sitemap.xml

 

 今回のテーマ ~XPath~

前回開設したGET RequestのNodeと一緒に使うことが多いです。

f:id:makkynm:20210425230924p:plain

 今回のテーマ ~XPath~

 

degitalization.hatenablog.jp

 

覚えてほしいこと

XMLを簡単に分解したい時はXPath

 

やりたいこと - XPath

XMLを分解してサイトマップを読み込む」

今回は本ブログのサイトマップhttps://degitalization.hatenablog.jp/sitemap.xml」のXMLをKNIMEで分解してみたいと思います。

f:id:makkynm:20210425231328p:plain

やりたいこと - サイトマップを読み取る

 

はてなブログには、必ずサイトマップというwebページの目次のようなものがついています。好きなブログのURLに「/sitemap.xml」という末尾をつけてみてください。サイトマップXMLの形式で見れると思います。

 

XMLとは?

先ほどから出てきているXMLとは、JSONと同じようなもので、下記のようなタグで囲まれた構造をした文章・データです。

こんな構造のデータなんだなーくらいの意識で問題ないです。

 

今回のサイトマップを実際に見てみると、なんとなく分かると思います。

タグとは<sitemap>, <loc>, <lastmod>の部分を言います。データがタグで囲われてますよね。

f:id:makkynm:20210425231956p:plain

XMLとは?

 

事前準備 - GET RequestでサイトマップXMLで取得

事前準備として、GET RequestXML形式のデータをKNIMEに取り込みましょう。Configureだけ載せます。

f:id:makkynm:20210425232433p:plain

事前準備 - GET Request

 

XPathの使い方

このNodeはXML構造のデータを簡単に分解するNodeです。GET RequestでXML形式のデータを読み込んだ後によく出てきます。

Workflow - XPath

f:id:makkynm:20210425232616p:plain

Workflow - XPath

Confirm - XPath

XPathを実行後、XML構造で1行しかなかったデータが、繰り返し構造を利用して複数行に分けられていることがわかると思います。

f:id:makkynm:20210425231328p:plain

Confirm - XPath

Configure - Xpath

色々設定があるように見えますが、XPath summaryの部分のみ重要です。

f:id:makkynm:20210425233346p:plain

Configure - Xpath

 

Step1 - XML Column - 対象のXMLコラムを指定

まずはXMLのコラムを指定します。

また、残っていると結果が見づらくなるので、Remove source columnにはチェックを入れておくことをオススメします。

 

Step2 - XPath Summary - 抽出ルール指定

XML構造は規則性があるので、そのタグの階層を指定してあげることによって同じ階層の同じタグのデータを抜き出してくるというのがこのNodeでできることです。

そういうと、難しく聞こえるかもしれませんが、難しい部分はKNIMEがやってくれるので、安心してください。

 

XPath Summaryの部分では現在定義している抽出ルールを一覧でみることができます。

XPath Summaryのルール一覧は下記の3つのボタンで編集できます。

  • Add XPathXML-Cell Previewを使用して抽出ルールを追加
  • Edit XPath:定義済みのルールを編集
  • Remove XPath:定義済みのルールを削除

 

抽出ルールの定義の仕方 - Add XPath と XML-Cell Preview

ここが1番重要です。下記の3ステップで抽出ルールを指定できます。

  1. XML-Cell Preview上で抽出したいデータの部分をクリックする
  2.  Add XPathをクリック
  3. 抽出方法の詳細を指定

まずは1、2の部分です。XML-Cell Preview上で抽出したいデータの部分をクリックします。すると、KNIME側が階層を勝手に認識してくれます。(Selected XPathの部分)

あとは、「Add XPath」を押せばOKです。

 

f:id:makkynm:20210425234854p:plain

XML-Cell Preview上で抽出したいデータの部分をクリック、Add XPathをクリック

 

Add XPathをクリックすると、下図のポップアップが出てきます。ここで抽出方法の詳細を定義します。

f:id:makkynm:20210425235147p:plain

抽出方法の詳細を指定

とはいえ、ほとんど設定はデフォルトで問題なく、唯一最後のMultiple tag optionsだけ指定してあげましょう。

  • Column Name:抽出後のコラム名を指定。データに応じてコラム名を変えるかを指定できます。
  • Retrun Type:抽出後のデータ型を指定できます。まずはStringで取り込み、後から変換でいいともいます。
  • Multiple tag options:データのOutputをどのように出力するかを選択します。これが重要です。

 

今回は、複数行でデータを取得したいので、Multiple tag optionsにMultiple Rowsを指定すればOKです。

 

 ちょっと一言

Multiple tag optionsの種類について

どのようなOutputの形式で出てくるのか、いまいち分からないと思うのでここで実際のOutputを見て理解していきましょう。

  • Single Cell - 指定されたXPathの値のみを単体のCellで返す。(規則性で複数返すことはしない)

f:id:makkynm:20210426000154p:plain

Single Cell
  • Collection Cell - Collection型でデータを格納する 

 

f:id:makkynm:20210426000403p:plain

Collection Cell 

Collection型は以前UngroupのNodeの時に扱いましたね。

degitalization.hatenablog.jp

 

  • Multiple Columns - 複数コラムとして出力

f:id:makkynm:20210426000333p:plain

Multiple Columns
  • Multiple Rows - 複数行として出力

f:id:makkynm:20210426000632p:plain

Multiple Rows

 

おわりに

お疲れ様でした!XPathは1回やってみたら簡単にコツを掴めるNodeだと思います。ぜひ一度試してみてください。

また、今回分解して取得したXMLのURLをもう一度GET Requestをしてみるとどうなるか、ぜひ試してみてください。

https://degitalization.hatenablog.jp/sitemap_periodical.xml?year=2021&month=1

これを使えば、ブログの情報一覧が自動で取得できるようになりますよ!ではまた! 

 

 

  

余談 

もうすぐゴールデンウィークですね!予定は決まっていますか?

昨年はブログばかり書いていましたが、今回は少しお休みして、ソロキャンでもしようと思っています。道具を集めて出費が大変なことになっていますが。自然を見てボーッとしたいですね。適度に息抜きしてコロナともうまく付き合いたいものです。

ではまた!

 

KNIMEに関する本

KNIMEに関する日本語の本って今これくらいしかないと思うんですよね、、

本がいいなーと言う人はぜひ試してみてください。

 

参考リンク