PowerBIでPDF接続してcsv出力までしてみた

20200501titile-1

こんにちは、kusakaです。

PowerBIにはPDFに接続できるコネクタがあるのをご存知でしょうか。

弊社御用達のTableauでもPDFのコネクタは用意されていますが、今回はPowerBIでやるといかがなものかという検証に加え、加工したデータをcsv出力まで行ってみたいと思います。

 

PDFのデータへ接続

先ずはPDFの用意です。

私事ですが先週久しぶりに献血をしたこともあり日本赤十字社で公開されている献血者数のデータを使用したいと思います。

使用したのは以下のようなPDFです。

 

PowerBIに早速接続してみます。PowerBIを起動後、スタート画面から「データを取得」を選択します。

開いたウィンドウから「PDF」を選択し、対象のPDFを選択します。


ナビゲーターが開くので、取込対象のTableを選択して「データの変換」を選択します。ここでの"Table"はPDFのページに入っている表ごとに分かれます。

用意したPDFのヘッダーが2段構えになっている上に縦書きになっていて癖のあるデータのため、なかなか大変な読み込まれ方をしていることがわかります。

PDFからそのまま読み込んで無加工でレポートに使用できるケースは少ないと思われるので、基本的にPower Queryでの加工ありきで使用することを前提とした方が良いです。(または別のETLツールを使用してcsv化をして読み込む…等)

 

続いてPowerQueryエディターを開いて不要行の削除、フィールド名の付与、型の変換、カスタム関数を使って列の付与、列分割して外部テーブルの作成を繰り返して都道府県×受入施設のデータに地道に変換していきます。

以下のような形に変換できました。

最後に、適当なテーブルから複製し、「クエリの追加」を押下でユニオンを行い完了です。

都道府県×受入施設別の献血者数のデータが完成しました。

 

 

csvに出力をする前に

整形したデータをRスクリプトを使用しcsvに出力する設定をしていきます。設定をするにあたり重要なポイントが2つあります。

①小数点が使われているデータはPowerQueryで文字型に変更しておく

今回使用しているデータのように小数点が入った数値データや「1993.3.1」などの日付データはPowerQueryのRスクリプトを通してそのまま出力すると以下のように「Microsoft.OleDb.Currency」というデータで出力されてしまいます。

これはRスクリプト側がPowerQueryでのデータ型を認識できないことが原因であり、R側ではformat関数等を使用しても特に何もできることはないためPowerQuery側ですべて文字型に変更しておく必要があります。

 

②プライバシーレベルの変更

今回のように元テーブルから複製&分割を繰り返したり、別テーブルとマージをした場合などにRスクリプトを使用すると、以下のようなエラーが返ってきます。

これはMicrosoft社が作ったプライバシーレベルという設定が働いているため表示されたものになります。

オープンなデータ⇔機密度の高いデータを結合して誰かに情報が漏れちゃった…といったことを防ぐためにあるのですが、今回は1テーブルから複製して加工した+オープンなデータで問題ないのでプライバシーレベルを無視する設定を入れたいと思います。

(※プライバシーレベルの詳細が気になる方はこちらの記事を参照ください。)

ファイル>オプションと設定>オプションを選択

プライバシー>「常にプライバシーレベル設定を無視します」を選択>OKを押下

こちらで設定は完了になります。

 

 

Rスクリプトを使ってcsvに出力してみよう

Power Queryエディターの「変換」>「Rスクリプトを実行する」を押下してRスクリプトのエディターを開きます。

Rスクリプトのエディターが開くので以下を設定します。

# todayに日付を入れます
today<-Sys.Date()

# 対象フォルダに「受入施設別献血者数yyyy-MM-dd.csv」というファイルが出力されるよう設定
# 文字列は""で囲む、ヘッダー有り、カンマ区切り、常に上書き保存となるよう設定
write.table(dataset,paste("C:/work/受入施設別献血者数",today,".csv", sep = ""),quote=T,col.names=T,sep=",",append=F)

最後にOKを押すと実行されます。

ファイルが作成されました。これにて出力完了です。

出力されたcsvはこちら

ここから自動出力をしたい場合はオンラインに公開してスケジュールを設定することで可能です。
PowerQueryで編集したデータを定期的にcsvで保存したいという需要はどこかにあるとおもうので、気になる方はこちらの記事を参照してトライしてみてください。

 

余談

上のデータを更に加工して以下のようなレポートを作成しました。

PowerBIでは図形や画像をCtrl+c、Ctrl+vで切り貼りできるので全体的な見栄えの調整がしやすく自由度が高いことがポイントです。

皆さまもお試しあれ!ではまた!

 

【メンバー募集中】

truestarでは、新しい仲間を募集しています。詳細は以下をご覧ください。
株式会社truestar採用サイト https://en-gage.net/truestar/