Sisenseナレッジ - INSIGHT LAB

【Sisense Connector】Sisenseにインターネット上のCSVを自動取り込み-2

作成者: Turtle|2020年10月16日

シャローム!Sato-Gです。
暑い日が続いていると思ったら、週末にかけて雨らしい。そろそろ梅雨かな?
このところのカンカン照りでベランダのペチュニアが一斉に開花した。
ガーデニングするSato-G?
意外な一面をですか?笑

自己主張している一輪の花びらを発見。
「私を見つけて下さい」と言わんばかりに...
本格的な梅雨に入る前に切り戻しをするので、今のうちに思いっきり咲いて下さい。

さて今回は「【Connector】Sisenseにインターネット上のCSVを自動取り込み」 の続編。
CDataのCSVコネクタでインターネット上のCSVファイルを取り込んでみる。

1.CSVコネクタのダウンロードとインストール

まずはCDataのサイトのSisense用コネクタダウンロードページにCSV/TSVコネクタをクリックする。

ダウンロードしたCDataJDBCDriverCSV.zipファイルを解凍する。
そうか、CSVとはいえ、JDBC接続なんだな。
さっそくsetup.jarをクリックしてインストールを実行する。

インストールが完了するとC:\Program Files\CDataの中にCData JDBC Driver for CSV 2019というフォルダができ、その中のlibフォルダを開いて以下の3つのファイルをコピーする。

コピーしたファイルをC:\ProgramData\Sisense\DataConnectors\jdbcdriversの下にCsvDriverとうフォルダを作成して、そのフォルダ内に複製する。
これで、CDataのコネクタのセットアップは完了だ。

2.Sisense側の設定

2.1 接続設定

Web ECMにてデータの追加を行う。コネクタは"Generic JDBC"。
コネクタの設定では以下の3つの設定を行う。

・Connection String
jdbc:csv:GenerateSchemaFiles=OnStart;URI=https://dl.dropboxusercontent.com/s/6mztoeb6xf78g5w/COVID-19.csv;
URI=以降がcsvファイルのURLパスで、それ以外は上記のままでよい。

・JDBC JARs Folder
CsvDriver

・Driver's Class Name
cdata.jdbc.csv.CSVDriver

[次へ]をクリックすると接続されて、テーブルとして見えるようになる。

[完了]をクリックするとElastiCubeに追加される。

2.2 ビルドしてみる

以上で設定が完了したので、早速ビルドを実行してみよう。

ありゃら...失敗。
どうやら「市区町村内...」の値に不正な値が入っているらしい。
JDBC接続の場合、接続先はテーブルとして見えているため、想定されたデータ型と異なる値が入っているとエラーになる。
このデータ型の判定はツールによって異なると思うので、一概には言えないが、何らかの方法で判定したデータ型と相違があればそうなるだろう。
またエラーのもう一つは、禁止文字列が入った場合である。
よくあるのは記号類になるかと思うが、データベースでは入力しようとしたら弾かれるものがCSVであれば登録できているケースは当然ある。
そのような場合は何らかのエスケープ方法を取る必要があるだろう。

2.3 SQLの編集

今回の場合は、「市区町村...」はそもそも取り込む必要がないので無視してしまいたい。
そこでJDBCなのだからSQL編集できるんだよなー
ということに気づいた。

もちろんできる。
SELECT * FROM ....
となっているところで、「*」ではなくカラム名を全て列記してみよう。
カラムが多いので、エディタで開いて1行目(ヘッダ行)をコピーしてSQLに貼り付ける。

そして以下のように全てのカラムを表示した上で、「市区町村...」のみコメントアウトしておく。

ビルドを実行するとうまくいった。
このデータでは年代にも数値の後ろのスペースが入っているデータがあるようだ。
ここはTRIMしてしまおう。

また居住地が日本ではない人は対象外としたいので、WHERE句で指定してしまおう。

こんなふうにCSVファイルでもJDBC接続であればをSQLを使えるから便利だ。
もちろん、インターネット上のファイルではなく、サーバにあるファイルを指定する場合でもSQLは問題なく使える。
その場合は
jdbc:csv:GenerateSchemaFiles=OnStart;URI=C:\Data\hoge.csv;
のようにURIにCSVファイルのパスを入れて上げればOKだ。

2.4 その他の微調整

現在のままであれば都道府県のソート順が崩れてしまうので、都道府県コードと都道府県名を結合させて「#居住都道府県」と「#受診都道府県」を作っておこう。
カスタム列の追加で以下の2つを追加しておく。

#居住都道府県
[居住都道府県コード] + '_' + [居住都道府県]

#受診都道府県
[受診都道府県コード] + '_' + [受診都道府県]

以上でビルドすれば完成だ。

3.ダッシュボードで可視化してみる

3.1 感染者推移

カテゴリに「確定日」、値に[Total 人数]を指定すると以下のように感染者の推移が表示された。
昨日までの結果が表示されているので、最新までデータが登録されていることがわかった。

3.2 年代構成

では年代別に分析してみよう。
上で作成したグラフのカテゴリは「確定日」、値は[Total 人数]のまま、区切り基準に「年代」を追加してみる。
スタイルは積み上げだ。

このところの報道では20~30代の「夜の街」感染者が多いということだが...
うーん、2~4月の感染者が多すぎ、それに比べて5~6月の感染者が少ないためほぼ見えない。
相対表示でカテゴリを月単位にしてみる。

確かに6月は20~30代の比率が高くはなっているものの、3月でも一定の割合で20~30代がいることもわかった。
新型コロナの感染者が増え始めた頃は確かに高齢者が多かったし、若年者は罹りにくいのではないかとも言われていたが、そんなことはなく、年代に関係なく感染者は存在している。
このところの感染者数が減ったために、20~30代の「夜の街」感染者が目立っているだけで、以前から「夜の街」感染者はそれなりにいたのではないか、特に営業自粛前などは表面化していなかっただけなのではないかと思う。

4.まとめ

以上、ジャッグジャパンさん提供のデータから感染者推移、年代別の構成を見てきた。
報道されているように「夜の街」感染者が最近増え始めたわけではなく、2~3月も潜在的に存在した可能性が高いよね。
ただ今回バッシングを受けているのは、自粛期間にこっそり営業したり、明らかな三密状態でパーティーをしていた、その行動自体なのだと思う。

そんな中、昨夜の発表ではまさに今日からステップ2の休業要請緩和となり、カラオケ、バー・スナック、ネットカフェ、ゲームセンター、パチンコ店なども営業できるようになるし、飲食・種類提供も朝5時から翌日0時までになる。
19日以降はライブハウス、接待を伴い飲食店も緩和される予定だ。

この緩和自体は「ウィズコロナ」という新たなステージに移行し、第二波が来ることも覚悟した上で、我々自身がウィズコロナ時代の生活様式に移行できるかが試される時が来たことを意味する。

...と書いたところで
おいおい、これはSisense Knowledgeというサイトのブログだからあまり関係なかったね。
でも新型コロナには気をつけましょう。

ではまた!