【KNIME】"複数のシートを持つエクセルファイル"を"複数読み込む"には?
みなさーん、おひさしぶりですー!前回の更新から1年半が経ったようです。私、なんとか生きてますよ。
ずいぶんと更新していませんでしたが、今日こんなコメントを頂きました("まさん"、ありがとうございます)。
複数シートを持つファイルを複数読み込むことは可能でしょうか?
シートという単語から勝手にExcelファイルのことだと推測しましたが、もちろん可能です!コメント欄に方法を書くのは難しいので、ざーっと記事にしました。"まさん"の想定している場面に適したサンプルではないかもしれませんが、下記のようなファイルで試してみます。
読みたいファイル群を002_exampleというフォルダ内に全てぶちこみます。各ファイルには"部署A","部署B"のように複数のシートを持っています。これらの3ファイル×各2シートの計6シートを読み込んでみましょう!
全体のイメージ
はーい、こんな感じです↓
黄色枠の部分
ここは以前に紹介したものと同じなので
この記事を参考にして下さい。黄色枠の出口(URL to File Path)のデータはこんな感じです。
緑色枠の部分
ここで出てくるRead Excel Sheet Namesノードを使えば、指定したエクセルファイルにはどんな名前のシートがあるかという情報を取得できます。今回は対象とするファイルが複数あり、それを繰り返し処理で扱うので、指定するファイル名を変数で指定します。
ファイルを指定する部分の右にある"V"ボタンをクリックすると、「どの変数がファイルの場所情報なの?」という設定ができるので、今回は"Path"を選んでいます(黄色部分出口データを見てね)。結果はこんな感じ↓
これは1ファイルに対する結果(繰り返し処理の途中)ですが、"部署A","部署B"という2つのシートがあることが確認できます。
紫色枠の部分
ここではExcel Readerに"ファイルの場所"と"シート名"を変数で指定しながら処理を行います。
まずはファイルの指定。"V"ボタンを押して、どの変数がファイルの場所の情報なのかを教えてあげて下さい。この場合は"Path"という変数。で、シート名はとりあえず"Select sheet with name"を選んだ後に、一番上の設定項目タブの中から"Flow Variables"を選びましょう。
そうすると、↑の画面になるので、settings>sheet_nameの部分に「シート名はどの変数なの?」かを教えてあげて下さい。今回はSheetという名前の変数。
続く2つのString Manipulationでは、後からデータのソースが何なのか分かりやすくするようにファイル名と、シート名の情報をテーブル内に追加しています。
Expressionエリアにstring()と打ち込んだ後に、括弧内に対応する変数を左下のリストから探してダブルクリックして入力すればOK。
で、できあがりはこんな感じ↓
"まさん"のコメントの回答になっていればよいのですが…。
久しぶりの投稿はこれでオシマイです。余裕があれば、今年買ってよかったもの記事でも書こうかなー。それでは皆さま良い年末を!