とある件で発表の機会があり,その準備に追われている.弊社の顧客マスターから抽出した郵便番号をジオコーディングし,地図上にヒートマップを作成するという作業を行ったので,備忘録として残しておく.
そもそも,地理情報をどうやって表現するか
最近になって,まともな BI ツールがやっと揃ってきた.SQL Server では以前のバージョンから地理情報を直接格納できるデータ型があることは知っていたが,表現手段に乏しかったのと,コンピュータのパワーが不足していて現実的な速度で動かなかったため,手を出そうとは思えなかった.
結局のところ,地理情報は経度と緯度,さらに高度の三つの情報で表現される.幾何学でいうところの縦・横・高さ,つまり x, y, z である.うち,一般には経度と緯度が必須となる.
ジオコーディングとは「住所」を「経度と緯度」に変換すること
住所と言っても厳密には面であるから本来は細かいベクトル情報が必要なのだが,ここでは大雑把に扱うものとする.
この「住所」を「経度と緯度」に変換するのがジオコーディングである.ここは様々なサービスが乱立している.Yahoo や Google など大手の IT 企業が収集しているデータは無論だが,実際の地図情報は世界でたった四社しか作成していないと言うから驚きだ.
データは第一正規形になっていなければならない
ここでもデータベースの基本は第一正規形である.この構造を守っていないものはデータベースではない.このあたりは 気象庁のサクラ開花日のテキストファイル で口を酸っぱくして述べている.
郵便番号と住所の対応は日本郵便が公開している
さて,郵便番号と住所との対応は日本郵便が公開しており,このファイルだけは日本郵便は著作権を主張しておらず,誰でも無料で使用可能である.
ZIP Cloudのファイルが便利である
実を言うと,日本郵便の公開しているファイルは少々使いにくい.そこで,データクレンジング済みのファイルを使う.ZIP Cloud というサービスがあり,毎月更新されている.これをダウンロードして使う.
種本は「伝わるデータ・ビジュアル術」
Tableau Publicは最初から使う気になれない
初期の頃は BI ツールとして Tableau Public を利用していたが,データクレンジングに不満があり,有料ライセンスとなると途端に手が出ない金額になってしまうため,手が出せない.
EXCELのBingMAPでは扱えるデータポイントが少な過ぎて話にならない
Microsoft の EXCEL は最近 SQL Server チームと共同で Power Query なるデータ入力ツールに注力しているようである.このあたりは Office 365 で顕著であり,日々進化している最中である.
Bing MAP は割と手軽に地図上に経度と緯度のマッピングを行えるのだが,ポイントの上限数がどうやら 100 に限定されているらしく,扱いたいデータ数に届かない.
QGISに手を出すも,失敗
上記の種本にあった QGIS というソフトウェアをダウンロードして使ってみたのだが,設定がよく分からない.ベースとなる地図の国土地理院のレイヤー設定のところで躓いてしまい,白紙上にポイントだけが表示されるという情けない結果となってしまった.こんなもん,使えるか.
ネット上のジオコーディングサービスも今ひとつ
色々と検索を続けたがどうにもパッとしないものばかりであった.
結局,Power BIになった
万策尽き果てて,久しぶりに Power BI Desktop を起動してみた.…いいじゃない,これ.
起動時のログイン画面を回避さえすれば,結構使える.「初心者はこれが欲しいんだろ?」というお仕着せの設定が今のところ心地よい.
起動時のログイン回避策
下図を見ていただければ分かると思うが,まずはサインインをクリックして次の画面へ行く.
ここで右上のバツ印をクリックしてサインインせず閉じるのがミソである.
データの取得
ここでようやくデータ取得画面に遷移する.左のカラムの「データを取得」をクリックする.
「SQL Server データベース」を選択
データソースへの接続を選択している.
「サーバー」にはデータベースエンジンのサーバー名を指定する
一度間違えたのだが,サーバー名には SQL Server のデータベースエンジンのサーバー名を指定すること.間違えると接続できない.
接続エラー.サーバー名を間違えるとこうなる.
データベース名を指定する
ナビゲーターでデータベースを指定する.
この後の作業
日本郵便のKEN_ALL.zipファイルをインポート
zip cloud でもどちらでもよいが,ダウンロードした csv ファイルを SQL Server のウィザードを使ってインポートする.住所のデータ長が長いので念のため 100 文字くらいに広げておく.
顧客テーブルとKEN_ALLテーブルを郵便番号で結合
顧客マスターに住所まで記載してあれば問題ないのだが,この先 KEN_ALL ファイルは使いでがあるため,ここでインポートしておくと良い.
「顧客ID」→「郵便番号」→「住所」
結合したテーブルから取り出すデータは顧客 ID と住所だ.
「住所」をPower BIの「位置情報」に指定
下図のようになる.緯度と経度が分からなくても住所を「位置情報」にドロップするとよしなにしてくれるのは大変ありがたい.郵便番号では駄目だった.
まとめ
このブログで公開できるのはここまで.公開できるデータは政府や自治体が公開しているデータに限られる.
「伝わるデータ・ビジュアル術」は一般向けに「こういうことが出来ますよ」という旗振り役の書籍である.技術的な詳細は省略してあり,勘違いして手を出すと痛い目にあう.特に後半で紹介しているツールほど初心者には敷居が高い.初心者は Tableau Public か Power BI Desktop でまずは慣れておくのが良いだろう.
“PowerBIで郵便番号からヒートマップを作成する” への3件の返信