データ分析ツールでCSVファイルを利用する際、CSVへSELECT発行できる便利JDBC〜CDATAドライバをKNIMEで使ってみた〜

CSVデータにSELECTクエリをかけられるので、前処理としての必要データ抽出がめちゃくちゃ楽になります。
個人的に感動しました。

今回はKNIMEで以下に挑戦してます。
>・CDATA JDBC CSVDriverとKNIME連携
>・KNIMEで株価データCSV参照
>・参照したCSVファイルの前処理として、データへSELECT発行
>・SELECT結果をグラフ化

<h2>CDATA JDBC CSVDriverとKNIME連携</h2>
CDATA JDBC評価版のダウンロード手順は<a href="https://qiita.com/sasaki-masashi/items/2d63a258ef2086c75e35">前回</a>参照。
KNIMEでのJDBCドライバ設定は<a href="https://www.cdata.com/jp/kb/tech/csv-jdbc-knime.rst" target="_blank">公式チュートリアル</a>参照して進めます。
<h4>KNIME(すでに古めの3.3.2)を起動</h4>
File→Install KNIME Extensions
<img width="256" alt="スクリーンショット 2019-11-17 17.53.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534084/dc84ed2b-47f3-8484-bb31-ff6de9a1d0d1.png">
KNIME→Databases→ここでダウンロードしたCSVドライバを指定します。
<img width="820" alt="スクリーンショット 2019-12-04 10.00.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534084/b590e446-a891-72c2-dbf7-2a2f8a5da7d4.png">

<h2>KNIMEで株価データCSV参照</h2>
ワークフローへDatabase Reader を追加→右クリック→Configure
<img width="656" alt="スクリーンショット 2019-12-04 10.15.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534084/407c19a4-5221-c5d6-3813-edd2bdc60090.png">
・Database Driver→追加したCSVドライバを指定
・Database URL→jdbc:csv:DataSource=CSVファイルのフォルダパス;
<img width="622" alt="スクリーンショット 2019-11-26 18.35.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534084/1ed9df4c-f1a1-9e06-d152-81ad987895b5.png">
右下のDatabase Browser→Fetch Metadataクリック→読み込みたいCSVファイルをダブルクリック
<img width="184" alt="スクリーンショット 2019-11-26 18.32.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534084/5f2f67ec-77f3-f6a0-a743-1ddb560d8617.png">
SQL Statementへ反映されます。
<img width="358" alt="スクリーンショット 2019-12-04 10.23.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534084/30afc682-b514-da5a-99a3-d5cbfc844d14.png">
ここでの注意点として、テーブル名から「.csv」を削除します。

```
FROM bb.csv
↓正しくは
FROM bb
```
<h2>参照したCSVファイルの前処理として、データへSELECT発行</h2>
「.csv」に注意しながらSQL文を作成します。
今回は単純にすでにある項目を選んでいます。
<img width="446" alt="スクリーンショット 2019-12-04 10.32.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534084/4b7bb7fa-665f-56d3-9ac1-b574abdf5b78.png">
ここで条件指定やGROUP BYして必要な前処理ができてしまいます。
これがCSVファイルにできるのは、かなり便利です。
<h2>SELECT結果をグラフ化</h2>
Line Chartを追加し、折れ線グラフで表示します。
<img width="239" alt="スクリーンショット 2019-11-26 18.37.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534084/5dbbda9a-1b24-48a9-36c1-a009f8a38d15.png">
<img width="701" alt="スクリーンショット 2019-11-26 18.36.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534084/352e49e6-f56e-8b4e-6017-5ca338098a6a.png">
<h2>さいごに</h2>
・KNIMEでも元々エクセルファイルを読み込むことだけできる
・ただし、SELECT抽出するにはDBへ取り込む必要があり、その手間が面倒
↓
CSVをサクサクと集め、それらを結合して抽出した結果をKNIME(だけに限らないのですが)で分析！
ここが感動したポイントです。
<h2>次回以降やること</h2>
以下のいずれかを進めていきます。
<h5>1.ニュースサイトのRSSを収集</h5>
CDATAにはRSSドライバもあるようなので、その評価版も使ってみます。
PythonでRSS取得してDBへ書き込むプログラムは既に作っていますが、せっかくドライバがあるので試してみます。
<h5>2.RSS収集データを形態素解析して株価の値動きと紐付け</h5>
そのままですね。
2000年初頭、学生時代の研究テーマが「強化学習により株式売買で儲ける」だったので、自然と発想が株にいってしまいます。
ただし、強化学習は使いません。
<h5>3.ArduinoでMIDI連携し、ホコリをかぶった電子楽器を操作</h5>
ArduinoとMidiパーツは購入済み。
LED点滅まで試したので、やりたいことをやります。
<h5>4.Arduinoと赤外線センサーを連携し、MIDIドラムの音を鳴らす</h5>
打ち込みだとテンポを変えられないため、足でMIDIを操作して一人でグルーヴをいかに出すか。
MIDI信号実行の遅延により、リズムがヨレヨレになることが考えられます。
2020年から始まるプログラミング教育を念頭にしたチャレンジです。
プログラミング授業×音楽の授業×ダンスの授業×図画工作の授業　的な。
<h5>5.エンジニアとしてSDGsを考える</h5>
プログラミングではないですが、『エネルギー、水、温暖化』関連の書籍を読んでいるので、そのまとめです。
女川町で釣りをしながら考える。